[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个步骤:
  1. report_header():    输出avm库相关信息
  2. elaborate():          连接所有组件.
    • 先连接exorts(自底向上)
    • 然后连接子组件的port到同层组件的export
    • 然后连接组件的port到下一层的export(自顶向下)
  3. do_configure():     调用所有命名组件中的configure()函数. 在里面可以进行一些初始化, 配置组件或者打开文件的操作
  4. do_run_all():         并行运行所有threaded components里的run(),非阻塞方式运行
  5. run():                  调用env里的run().
  6. do_kill_all():          结束testbench, 本函数会调用所有threaded components的kill().他将结束所有正在执行的threads
  7. 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:

引用 删除 xiebin521   /   2008-07-09 14:16:28
请问大侠        m_run_process=process::self();是什么意思啊  还有一个比较笨的问题就是“::”在程序中出现很频,代表什么意思
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-10-30  
   1234
567891011
12131415161718
19202122232425
262728293031 

我的存档

数据统计

  • 访问量: 127
  • 日志数: 9
  • 建立时间: 2008-06-12
  • 更新时间: 2008-06-12

RSS订阅

Open Toolbar