不枉初心,砥砺前行

皮皮祥的博客

欢迎留言,评论

导航

程序块

Gre*_*reg 10

查看IEEE Std1800-2012§3.4§24program.有关块的完整描述.

在一个简短的,不完整的摘要中,一个program块:

  • 不能包含always过程,primitive实例,module 实例,interface实例(virtual interfaceinterface允许端口)或其他program实例.
  • 指定Reactive区域中的计划.这可以防止竞争条件.
  • 有一个额外的系统任务$exit,它终止program调用它的实例.
    • 当所有program实例都退出时,模拟将终止.
  • module除了如上所述之外,它大多像一个块.

program块的想法是在测试和设计之间创建清晰的分离.在早期版本的SystemVerilog(IEEE 1800之前版本)中,a的实例化class通常仅限于program块.这强调了测试和设计的划分.它还使得program对于想要在其流程中使用面向对象编程的验证工程师而言至关重要的块.从IEEE 1800开始,class几乎可以在任何地方定义和实例化.结果,program块变得不够充分.

今天,对program块的有用性的看法是分开的.从我去过的最后几个惯例来看,趋势似乎是赞成放弃program块.这是因为其他方法可以实现这些优点.可以使用clocking块来完成反应区域中的调度.A mailbox,queue([$])或关联数组([*])可用于智能处理模拟终止运行多个测试.就个人而言,我仍然喜欢使用program块并在需要时initial forever用作always等效物.如果您打算使用UVM,那么非阻塞program测试平台可能会更适合您.

最后,它实际上归结为方法偏好.最好自己评估和试用.


posted on 2022-10-04 18:14  皮皮祥  阅读(43)  评论(0编辑  收藏  举报