uvm平台至少有一个objection机制,存在raise_objection和drop_objection testbench中写forever是不会形成死循环的,使用objection机制跳出执行的phase sequence-->driver-->dut-->monitor-->scoreboard,会有延时,数据从数据产生到进行比较会有延时,如果发送完数据之后立即执行drop objection可能会有问题,所以需要添加一定的延时...
objection机制: 在验证平台中,可以通过drop_objection通知系统可以关闭验证平台,在drop_objection之前一定要raise_objection;当进入某一phase时,UVM会收集此phase提出的所有的objection,并实时监测objection是否已经被撤销了,当发现所有都已经撤销后,会关闭此phase,开始进入下一个phase, 当所有的phase执行完毕后,会调用$finis...
4. raise_objection前面不可以有消耗时间的语句,也就是刚进入phase的0时刻,就需要检测到raise_objection, 否则直接退出这个phase。 5. 对于run_phase和并行的12个task phase, 如果在run_phase中raise_objection,但是main_phase没有raise_obejection,那么main_phase直接退出。如果在main_phase有raise_obejection,run_ph...
1.便于在任何component 的main_phase 中都能raise_objection,必须通过 phase.raise_objection完成。 2.build_phase 等function phase也可以提起和撤销objection: 不报错,但一般使用在main_phase 等task phase,而不是 function phase。
task main_phase(uvm_phase phase); 这个输入参数中的phase是为了便于任何component的main_phase中都能raise_objection,而要raise_objection则必须通过phase.raise_objection来完成,所以必须把phase作为参数传递到main_phase等任务中。可以想象,如果没有这个phase参数,那么需要raise一个objection就会比较麻烦。
UVM中的phase,按照其是否消耗仿真时间($time打印出的时间)的特性,可以分成两大类, 一类是function phase,如build_phase、connect_phase等,这些phase都不耗费仿真时间,通过函数来实现; 另外一类是task phase,如run_phase等,它们耗费仿真时间,通过任务来实现。
objection子main的意思就是反对,异议。在验证平台中,可以通过放弃异议(drop_obejection)来通知系统可以关闭验证平台。当然了,在放弃之前,首先要提起异议raise_objection: 在进入到某一phase的时候,UVM会手机此phase提出的所有的objection,并且实时监测所有的objection是否已经drop了,当发现所有的都已经drop后,那么就会关闭此...
objection机制: 在验证平台中,可以通过drop_objection通知系统可以关闭验证平台,在drop_objection之前⼀定要raise_objection;当进⼊某⼀phase 时,UVM会收集此phase提出的所有的objection,并实时监测objection是否已经被撤销了,当发现所有都已经撤销后,会关闭此phase,开始进⼊下⼀个phase, 当所有的phase执...
In the typical UVM code we raise objections in the run_phase of the uvm_test then the test will finish after the body() of the sequence is executed, but if we do not raise any objection then the test will be finishes without waiting for the sequence body() to execute. Can any one ...
raise_objection(this); rst_vi.rst_n <= 0; #(reset_time_ps * 1ps); rst_vi.rst_n <= 1; phase.drop_objection(this); endtask : reset_phase endclass : rst_drv_c 可以进一步推广此UVM driver,使其可配置为高电平复位有效,在pre_reset_phase期间驱动X态,或以其他适合公司需要的方式。