记录了一些问题,笔记内容基本都是来自于UVM实战,不得不说,这书真香!1. `uvm_fatal(参数1,参数2) ,打印完第2个参数后,就会直接调用Verilog的finish函数来结束仿真(P60) 2. 无论传递给run_test的参数是什么,创建的实例的名字都为uvm_test_top.3. 在drive_one_pkt 中,先将tr中所有的数据压入队列data_q中,之后再将d
1.通过get_full_name()得到此component 的路径:2.uvm_top 的名字是
原创
2023-07-31 17:28:27
287阅读
1.除了PORT 和 EXPORT外,还有第三种端口:IMP。它才是UVM 的精髓,承担UVM 中TLM的大部分代码实现。源码
原创
2023-07-31 17:27:09
422阅读
1.除了PORT,EXPORT,IMP外,还有analysis_port 和analysis_export,都用于传递transaction,区别是:1)一个analysis_port 可以连接多个IMP,也就是一对多通信。put 和get 是一对一(除非实例化new时制定数量)。2)analysis_port 和analysis_export 没有阻塞和非阻塞的区分。本身就是广播,像是非
原创
2023-07-31 17:27:43
476阅读
1.UVM 中常用的PORT有:总结到一起:1)put,get,transport
原创
2023-07-31 17:39:30
417阅读
引入sequence的原因:将 生成测试case的语句 从 main_phase 中独立出来,使得使用不同测试用例时,只需要修改sequence部分即可,而不用关注 UVM剩余部分。(提高剩余部分的可复用性)。引入sequence的仲裁机制的原因:一个sequencer上通过fork…join可以启动多个sequence,而多个sequence按照什么顺序启动需要一定的仲裁机制来控制,具体而言主要
转载
2024-06-15 10:25:00
75阅读
在一个class A中例化另一个B ,即b_inst时,指定一个parent变量,同时在每一个component的内部维护一个数组m_children。当例化时,就把b_inst 的指针加入到 A 的m_children中。这样 A 才知道b_inst是自己的孩子,同时b_inst 知道A 是自己的父母。同样,在b_inst 中例化其它的时,也在b_inst 的m_children
原创
2023-07-31 17:35:39
301阅读
目录寄存器模型的常规方法mirror、desired和actual valueprediction的分类自动预测显式预测uvm_reg的访问方法mem与reg的联系和差别内建(built-in)sequences寄存器模型内建序列存储模型内建序列寄存器健康检查寄存器应用场景寄存器检查功能覆盖率概述覆盖率自动收集模式覆盖率外部事件触发收集 寄存器模型的常规方法mirror、desired和actua
1、UVM中的analysis 端口包含有analysis_port和analysis_export两种端口,它们与port、export和imp的主要区别在于:第一,默认情况下,analysis_port(analysis_export)可以连接多个IMP,而put和get系列端口连接一个IMP(除非在例化时修改连接数量)。第二,analysis_port和analysis_export没有阻塞
sequence不是component,但是sequencer是component。sequence是sequencer中的一个成员。定义: 控制和产生一系列的事务,并将事务发送给driver的一套机制。(一系列动作的集合)例子: driver向sequencer发送事务请求,sequencer再向其关联的sequence发送请求,sequence接收到请求之后,立即将已经生成好的事务发送出去。发
一个基本的 uvm 验证环境结构如下图所示,包含两个 agent,其中 in_agent 用于驱动 DUT ,同时将驱动数据同时传递给 reference model, out_agent 用于按照协议采集 DUT 的输出数据,并将数据传递给 scoreboard,在 scoreboard 收集到 reference model 的运算结果后,再进行比对验证。 要想实现 monitor 和
转载
2024-02-25 09:13:54
402阅读
UVM中的sequence机制
UVM中Driver,transaction,sequence,sequencer之间的关系。UVM将原来在Driver中的数据定义部分,单独拿出来成为Transaction,主要完成数据的randomize and constrained.在Transaction之上有增加一层sequence,它可以调用,控制同一类型的
转载
2024-02-04 22:25:04
95阅读
一、验证组件和层次构建首先将各个package中的SV组件替换为UVM组件实现组件对应原则:SV的transaction类对应uvm_sequence_item
SV的driver类对应uvm_driver
SV的generator类对应uvm_sequence + uvm_sequencer
SV的monitor对应uvm_monitor
SV的agent对应uvm_agent
SV的env对应
转载
2023-12-25 10:55:40
343阅读
1.程序运行到此处,停止仿真,进入交互模式。2.各大厂的仿真器可
原创
2023-07-31 17:28:07
277阅读
start():sequence.strat(sequencer,parent_sequence,优先级) ,第一个参数是需要挂载的sequencer;第二个是parent_sequence,一般传入this或者不传入;第三个是优先级;第四个call_pre_post默认为1,则自动执行pre_body/ post_body()函数start 执行 pre_start,body等函数。此时就完成了
转载
2024-08-27 08:55:46
663阅读
有不少工程师以为学习UVM就是简单的翻个书查个用户指南就可以学会,但其实这是非常困难的,很多人都看着指导资料无法下手,那么到底该怎么学习UVM呢?什么是UVM基于SV的验证方法学(可以简单理解为验证平台的框架)中,目前主要有以下三种: VMM(Verification Methodology Manual):Synopsys在2006年推出的,集成了寄存器解决方案RAL(Register Abst
1.广度优先:先兄弟在孩子。2.深度优先:先孩子在兄弟。3.同级别兄弟按照字典序。1)build_phase 是从根到叶,connect_phase 是从叶到根。
原创
2023-07-31 17:28:17
115阅读
1.UVM 真正的树根是uvm_top(为什么get_full_name()不打印这个呢?),如下:1)uvm_top 是全局变量,也是uvm_root的实例,也是唯一的实例。2)uvm_root 派生自uvm_component,所以uvm_top 本质上也是uvm_component,它是树的根。3)uvm_tes
原创
2023-07-31 17:32:57
241阅读
1评论