验证环境运行流程

VCS编译器:

  1. 先执行vlogan(compile):对设计文件进行编译,也即testbench.f,testbench.f 包含:
    1. “+incdir+”选项来告诉编译器include的头文件的路径;用“+”字符分隔每个路径名
    2. “-libext+”用于指定文件后缀名
    3. “-y”用于指定目录路径
    4. filelist文件
  2. 再执行vcs(elaborate):对库文件、第三方的链接软件进行编译处理
    1. 生成仿真的可执行文件.o,在simv.daidir下
    2. 若dump波形,还需要在编译中通过-P指定verdi的$fsdbDump函数的库
  3. 最后执行simv(simulate):
    1. Source launch.csh:launch.csh里包含了仿真选项

仿真执行流程:

  1. 由tb_top中initial…begin块的run_test()开始:
    1. run_test在uvm_root中定义, 在uvm_globals.svh中被封装成任务,uvm_globals通过uvm_base.svh里被include,uvm_base.svh这个文件又是在uvm_pkg.svh里被include的,实现全局可见

    2. 可通过 run_test("my_case")或‘vcs ... +UVM_TEST_NAME=my_case’ 传入case名

    3. run_test() 的作用:

            1.自动实例化case,名字固定为uvm_test_top,为UVM树根

            2.自动执行case中的build_phase,自顶向下,形成完整的UVM树结构;

            3.自动执行其他uvm树结构中的其他phase,完毕后,结束仿真;

  2. uvm_top调用方法run_test(test_name),uvm_top做了如下的初始化:
    1. 报告总结和结束仿真
    2. 等待所有phase执行结束,关闭phase控制进程(通过objection机制来控制验证平台的关闭);
    3. 调用phase控制方法,安排所有组件的phase方法执行顺序;
    4. 创建uvm_test_top实例;
    5. 初始化objection机制;
    6. 得到正确的test_name;
  3. run_test()启动后,整个执行流程如下:

仿真结束方式: 

  1.  调用系统函数$finish
  2. raising&drop_objection机制:
    1. objection机制用在:component的phase中、sequence的pre/post_body中;不能用在uvm_objection里
    2. objection机制用法:raise_objection/drop_objection成对使用
    3. 由于run_phase与run-time phase是并行运行的,如果12个动态运行的phase有objection被提起,那么run_phase 不需要raise_objection就可以自动执行:如果run-time phase中有objection的raise, run_phase没有,run-time phase和run_phase中内容都会执行;如果run-time phase中没有objection的raise,run_phase有,run-time phase不会执行,而run_phase会得到执行
    4. 当所有phase都执行完毕后,会调用$finish将整个验证平台关掉
  3. phase_ready_to_end(uvm_phase phase)
    1. 功能:是component类中的回调(callback)方法
    2. 用法:在基类中实现,并注册到UVM_component类中,在仿真阶段准备结束时或延迟一个phase到下个phase的过渡,调用该函数
  4. set_drain_time
    1. 功能:用于设置phase里面进程执行完成后延时drain_time时间后再结束该phase
    2. 用法:在phase中使用
      objection.set_drain_time(this,100ns);
    3. 注意:一个phase对应一个drain_time,并不是所有phase共享一个drain_time
  • 18
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值