摘要:设置打印信息的冗余度阈值 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 =
阅读全文
摘要:在构建复杂的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
阅读全文
摘要:在图3-4所示的UVM树中,driver的路径为uvm_test_top.env.i_agt.drv。在uvm_test_top,env或者i_agt中,对driver中的某些变量 通过config_db机制进行设置,称为直线的设置。但是若在其他component,如scoreboard中,对dri
阅读全文
摘要:set函数与get函数的参数 config_db机制用于在UVM验证平台间传递参数。他们通常是成对出现的。set函数时寄信,get函数是收信。 如在某个测试用例的build_phase中可以使用如下方式寄信: uvm_config_db#(int)::set(this, "env.i_agt.drv
阅读全文
摘要:在UVM中使用get_full_name()可以得到一个component的完整路径,同样的,此函数也可以在一个sequence中被调用,尝试在一个sequence的body中调用此函数,并打印出返回值,其结果大体如下: uvm_test_top.env.i_agt.sqr.case0_sequen
阅读全文
摘要:config机制 在使用uvm_config_db API set/get时,实际发生了如下的后台操作: uvm_config_dbset通过层次和变量名,将这些信息放置到uvm_pkg唯一的全局变量uvm_pkguvm_resources。 全局变量uvm_resources用来存储和释放配置资源
阅读全文
摘要:在验证环境的创建过程build phase中,除了组件的实例化过程,配置阶段也是必不可少的。为了验证环境的复用性,通过外部的参数配置,使得环境在创建的时候可以根据参数的不同来选择创建的组件、组件的实例个数、组件之间的连接以及组件的运行模式等等。在更细致的环境调节(environment tuning
阅读全文
摘要:uvm_object set_name 设置此对象的实例名,覆盖先前给出的任何名称。 get_name 返回对象的名称,由new构造函数中的name参数或set_name方法提供。 get_full_name 返回此对象的完整层次名字。 get_type 返回此对象的类型代理(包装器)。 get_t
阅读全文
摘要:UVM验证平台中提到函数,他们往往是定义在某个class中的,你调用某个函数其实是某个class中的函数! 我们今天说的get_name(), get_full_name(), get_type_name(), get_type(), set_name()这些小函数,用的时候,还真是各自class各
阅读全文
摘要:类声明 class uvm_sequencer #( type REQ = uvm_sequence_item, RSP = REQ ) extends uvm_sequencer_param_base #(REQ, RSP) |new|使用给定的名称和父类(如果有)创建该类实例的标准componn
阅读全文
摘要:类声明 virtual class uvm_sequence #( type REQ = uvm_sequence_item, type RSP = REQ ) extends uvm_sequence_base 变量 |变量|说明| | | | | rsp | 此sequence包含被称为rsp请
阅读全文
摘要:identification description get_sequence_id 私有 set_item_context 对sequence item设置sequence 和sequencer的执行上下文 set_use_sequence_info/get_use_sequence_info 这
阅读全文
摘要:HIERARCHY INTERFACE These methods provide user access to information about the component hierarchy, i.e., topology. get_parent 返回此component的父component
阅读全文
摘要:方法 说明 set_name 设定此对象的实例名,覆盖任何以前给定的名称。 get_name 返回对象的名字,正如在new构造函数或set_name方法中提供的名字参数。 get_full_name 返回此对象的完整层次结构名称。 get_type 返回此对象的类型代理(封装器)。 get_obje
阅读全文
摘要:UVM中成功返回非零值: UVM中返回值的使用: virtual function void build_phase(uvm_phase phase); super.build_phase(phase); `uvm_info("my_driver", "build_phase is called",
阅读全文
摘要:uvm_enent的方法有wait_on、wait_off、wait_trigger、wait_ptrigger、get_num_waiters、 1.wait_on:等待事件第一次被触发; 2.wait_off:如果事件已经被触发且保持on的状态,这个任务等待通过调用reset关闭; 3.wait
阅读全文
摘要:在SV中用来做线程间同步的几种方法,它们分别是semaphore、event和mailbox。 而在UVM中event进化成uvm_event,不仅仅拥有达成不同组件进程之间同步的功能,还能像TLM通信一样传递数据,并且作用范围更广(TLM通信只能在uvm_component之间,而uvm_even
阅读全文