3-phase的超时退出(timeout,仅限于run_phase)

资料来源

(1) UVM实战-张强;

(2) UVM source code;

(3) (10条消息) 阻塞wait(0)等于无限阻塞_Stroller-CSDN博客_java wait(0)

1.phase的超时退出

(1)背景: 验证平台运行时,有可能会出现挂起的情况; 这种情况下,仿真时间一直往前走,但是driver或monitor并没有发出或收到transaction;

(2)方法: 一个测试用例的运行时间可以预计,超过这个时间,通常出错,可以使用UVM的set_timeout方法设置超时时间;

1.1通过uvm_root的set_timeout函数可以设置超时时间;

(1) set_timeout的第一个参数为要设置的时间,第二个参数表示此设置是否可以被其后的其他set_timeout语句覆盖;

注1:默认的超时时间是通过宏UVM_DEFAULT_TIMEOUT来指定的;

注2:在uvm_phase的execute_phase task中,存在fork join_any线程,其中一个线程会判断当前phase是否为run_phase,如果是run_phase,则会delay top.phase_timeout,并退出线程;如果当前phase不是run_phase,则不会delay top.phase_timeout,而是执行wait(0),相当于该线程无限阻塞;

3-phase的超时退出(timeout,仅限于run_phase)

1.2通过仿真命令行进行设置

3-phase的超时退出(timeout,仅限于run_phase)

3-phase的超时退出(timeout,仅限于run_phase)

 

上一篇:Study Notes of CS:APP (Chapter 2)


下一篇:MySQL——常用数据类型