测试平台和设计平台分开
增加program block,代替testbench里的module block。
解决verilog模型的采样问题,就是testbench经常加小延迟(或者下降沿输入激励)的做法。
interface的引入
verilog,经常遇到底层设计模块的端口有改动,会牵连以上所有层次的端口做相应改动。
使用systemverilog的interface,可以解决这个问题。
但是,设计来说,用systemverilog还是比较少的。
我觉得用emacs的verilog-mode,其autoarg、autoinst加上auto_template,还是一个很好的办法。
可以参考文档:
verilog-mode_图文_百度文库
http://wenku.baidu.com/link?url=BayPSyaNSKqADQOOW2wXa0BQEoYtv9yeBWmQ-VSuYDy8p56vnws6jv-3KlIfgx50xCz43CrM1PBaEhvppiC2I3Y-UOmMKDr28Mbp3uBol-e
EMACS Verilog-mode 高级用法 AUTO_TEMPLATE - 定戒慧 - 博客频道 - CSDN.NET
http://blog.csdn.net/naclkcl9/article/details/6774275
interface 要放在module和program代码段的外面
interface可以和modport配合使用,进行信号分组。
虚拟接口的概念,会在之后讲。
测试平台和设计平台,存在竞争冒险的情况
利用program块写测试平台,会解决竞争冒险
注意,program块,要定义automatic属性。
automatic是针对verilog静态存储变量的方式,做的改进。这样可以支持多进程。即多个task同时进行,相关task内部变量不会冲突。
program的测试平台代码,不能有always语句块
systemverilog这样做,是想更符合测试平台的执行过程。即经过初始化、驱动、响应等步骤后结束仿真。
如果需要always的功能,可以采用initial forever实现。