摘要:### put_response与get_response sequence机制提供了一种sequence→sequencer→driver的单向数据传输机制。但是在复杂的验证平台中,sequence需要根据driver对transaction的反应来决定接下来要发送的transaction,换言之
阅读全文
摘要:静态变量 1.与硬件领域例如module,interface不同的是,在class中声明的变量其默认类型为动态变量,即其声明周期在仿真开始后的某时间点开始到某时间点结束。具体来讲,其声明周期开始于对象创建,终于对象销毁。 2.如果使用关键字static来声明class内的变量时,则其为静态变量。静态
阅读全文
摘要:field automation机制相关的宏 最简单的uvm_field系列宏有如下几种: `define uvm_field_int(ARG,FLAG) `define uvm_field_real(ARG,FLAG) `define uvm_field_enum(T,ARG,FLAG) `def
阅读全文
摘要:在引入my_mointor时,在my_transaction中加入了my_print函数;在引入reference model时,加入了my_copy函数;在引入scoreboard时,加入了my_compare函数。上述三个函数虽然各自不同,但是对于不同的transaction来说,都是类似的:它
阅读全文
摘要:UVM使用的是一种树形结构。但是在一个实际应用的UVM验证平台中,通常来说,树根是一个基于uvm_test派生的类。真正的测试用例都是基于base_test派生的一个类。 //base_test.sv 4 class base_test extends uvm_test; 5 6 my_env en
阅读全文
摘要:5.1 phase机制 *5.1.1 task phase与function phase UVM中的phase,按照其是否消耗仿真时间($time打印出的时间)的特性,可以分成两大类,一类是function phase,如build_phase、connect_phase等,这些phase都不耗费仿
阅读全文
摘要:d:删除 c:替换 y:复制 跳转与移动 b:当前光标跳转到所在单词的开头 w:当前光标跳转到下一个单词的开头 e:光标跳转到当前单词的末尾 ge:下一个单词的末尾 复制与粘贴 yiw:复制当前光标所在档次 viwp:粘贴所复制的单词并且替换光标所在单词 (yw:光标移到想要被复制词的词首,p:光标
阅读全文
摘要:set_config与get_config get_config_int这种写法最初来自OVM中,UVM继承了这种写法,并在此基础上发展出了config_db。set_config与get_config依然是UVM标准的一部分,并没有过时。 使用set_config_int来代替uvm_config
阅读全文
摘要:简单的立即断言 测试平台的过程代码可以检查待测信号的设计值和测试平台的信号值,并且在存在问题的时候采取相应的行动。 断言里面的逻辑条件跟if语句里面的比较条件是相反的。设计者应该期望括号内的表达式为真,否则输出一个错误。 bus.cb.request <= 1; repeat(2) @bus.cb;
阅读全文
摘要:uvm event 用法 1. //文件a: uvm_event event1;//定义 event1=uvm_event_pool::get_global("event1");//例化 //条件: event1.trigger(); //文件b: uvm_event event1;//定义 eve
阅读全文
摘要:Xcelium XRUN User Guide Product Version 22.09 September 2022 Document Last Updated: May 2022 Contents 1 Overview 1.1 How xrun Works 1.2 File Type Supp
阅读全文
摘要:#### 3.4.2.1 -64bit 该选项支持分层引用: 调用xrun的64bit版本。 当你调用xrun时,除了包含-64bit命令行选项外,你还可以通过以下方式运行64位版本: - 将PATH环境变量设置为指向64位版本。 - 设置XCELIUM_64BIT或CDS_AUTO_64BIT环境
阅读全文
摘要:关于reg和logic的区别,在SystemVerilog验证测试平台编写指南中有所提出,如下所示: SystemVerilog对经典的reg数据类型进行了改进,使得他除了作为一个变量以外,还可以被连续赋值、门单元和模块所驱动。为了与寄存器类型相区别,这种改进的数据类型称为logic。任何使用线网的
阅读全文
摘要:VIP Run-Time Control (.denalirc) Features Product Version 11.3 August 2016 Contents目录 # 1 Using Run-Time Control Files ## 1.1 Introduction ### 1.1.1 E
阅读全文
摘要:UVM中有两种特殊的端口:analysis_port和analysis_export。这两者其实与put和get系列端口类似,都用于传递transaction。它们的区别是: 第一,默认情况下,一个analysis_port(analysis_export)可以连接多个IMP,也就是说,analys
阅读全文
摘要:设置打印信息的冗余度阈值 UVM通过冗余度级别的设置提高了仿真日志的可读性。在打印信息之前,UVM会比较要显示信息的冗余度级别与默认的冗余度阈值,如果小于等于阈值,就会显示,否则不会显示。默认的冗余度阈值是UVM_MEDIUM,所有低于等于UVM_MEDIUM(如UVM_LOW)的信息都会被打印出来
阅读全文
摘要:UVM同样支持UVM_ERROR达到一定数量时结束仿真。对于某个测试用例,如果出现了大量的UVM_ERROR,根据这些错误已经可以确定bug所在了,再继续仿真下去意义已经不大,此时就可以结束仿真,而不必等到所有的objection被撤销。 实现这个功能的是set_report_max_quit_co
阅读全文
摘要:在UVM中通过uvm_root的set_timeout函数可以设置超时时间: //base_test.sv 18 function void base_test::build_phase(uvm_phase phase); 19 super.build_phase(phase); 20 env =
阅读全文
摘要:1985年欧洲的制造机构为了对集成电路的测试进行研究,成立了欧洲联合测试行动组织(JETAG:Joint European Test Action Group),后来与北美公司合作在1986年该组织更名为了JTAG(Joint Test Action Group),并且指定了相应的测试标准.该标准于
阅读全文
摘要:在构建复杂的sequence序列的时候,我们经常会用到m_sequencer和p_sequencer,并且在很多资料中都提到两者实际指向的是同一个对象,那么为什么要同时存在他们两个,存在一个不就够用了吗?为此,本文通过示例说明下两者之间的关系。 首先,我们先来看看“白皮书”上的一个示例。 【示例】
阅读全文
摘要:在sequencer中存在如下成员变量: 文件:my_sequencer.sv 4 class my_sequencer extends uvm_sequencer #(my_transaction); 5 bit[47:0] dmac; 6 bit[47:0] smac; … 12 virtual
阅读全文