[AVM]EVN类
上一篇 /
下一篇 2008-06-12 17:09:14
avm中的环境类处于验证平台的最高层, 它包含所有组成验证平台的组件, 并控制着验证平台的运行.
基类为:avm_env
基类提供了虚任务do_task()来控制流程:
52 virtualtaskdo_test();
53
54 report_header();// print a banner
55
56 elaborate();
57
58 do_configure();
59
60 // execution phases
61 do_run_all();
62
63 fork
64 begin
65 m_run_process=process::self();
66 run();
67 end
68 join
69
70 // finish
71
72 do_kill_all();
73 do_report();
74
75 endtask
从上面的定义可以看出, 一共有7个步骤:
- report_header(): 输出avm库相关信息
- elaborate(): 连接所有组件.
- 先连接exorts(自底向上)
- 然后连接子组件的port到同层组件的export
- 然后连接组件的port到下一层的export(自顶向下)
- do_configure(): 调用所有命名组件中的configure()函数. 在里面可以进行一些初始化, 配置组件或者打开文件的操作
- do_run_all(): 并行运行所有threaded components里的run(),非阻塞方式运行
- run(): 调用env里的run().
- do_kill_all(): 结束testbench, 本函数会调用所有threaded components的kill().他将结束所有正在执行的threads
- do_report(): 调用所有named components中的report(). 你可以在里面做一些结束工作, 比如关闭文件.
用户必须显式提供task run()的实现,
run()是系统的实际运行时间 :
- run()一般只是为了消耗掉仿真时间
- run的运行时间就是真正的仿真时间
下面是一个例子:
1taskrun();
2 fork
3 STIM:m_stimulus.generate_stimulus();
4 begin
5 wait_until_covered(); //branch Task waits until coverage goal reached Then kills the STIM branch
6 disableSTIM;
7 end
8 join
9endtask
导入论坛
引用链接
收藏
分享给好友
推荐到圈子
管理
举报
TAG: