记录了一些问题,笔记内容基本都是来自于UVM实战,不得不说,这书真香!1. `uvm_fatal(参数1,参数2) ,打印完第2个参数后,就会直接调用Verilogfinish函数来结束仿真(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阅读
1.前门访问操作只有两种:读操作和写nce:5
原创 2023-07-31 17:32:05
154阅读
引入sequence原因:将 生成测试case语句 从 main_phase 独立出来,使得使用不同测试用例时,只需要修改sequence部分即可,而不用关注 UVM剩余部分。(提高剩余部分可复用性)。引入sequence仲裁机制原因:一个sequencer上通过fork…join可以启动多个sequence,而多个sequence按照什么顺序启动需要一定仲裁机制来控制,具体而言主要
在一个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、UVManalysis 端口包含有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接收到请求之后,立即将已经生成好事务发送出去。发
1.使用寄存器模型后门
原创 2023-07-31 17:31:48
726阅读
  一个基本 uvm 验证环境结构如下图所示,包含两个 agent,其中 in_agent 用于驱动 DUT ,同时将驱动数据同时传递给 reference model, out_agent 用于按照协议采集 DUT 输出数据,并将数据传递给 scoreboard,在 scoreboard 收集到 reference model 运算结果后,再进行比对验证。  要想实现 monitor 和
转载 2024-02-25 09:13:54
402阅读
UVMsequence机制 UVMDriver,transaction,sequence,sequencer之间关系。UVM将原来在Driver数据定义部分,单独拿出来成为Transaction,主要完成数据randomize and constrained.在Transaction之上有增加一层sequence,它可以调用,控制同一类型
一、验证组件和层次构建首先将各个packageSV组件替换为UVM组件实现组件对应原则:SVtransaction类对应uvm_sequence_item SVdriver类对应uvm_driver SVgenerator类对应uvm_sequence + uvm_sequencer SVmonitor对应uvm_monitor SVagent对应uvm_agent SVenv对应
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评论
  • 1
  • 2
  • 3
  • 4
  • 5