systemverilog学习之平台搭建流程
我正在重新搭建systemverilog的验证平台,打算重新理一遍。
我选择把时序信号写在class中
- 首先要清楚有几个时序基准,比如异步:读写两个基准
- 有时序信号,就该有时序停止,即什么时候停下来。这个把我它处理为触发事件,即:何时停止?
- 这里涉及到一些扩展的必备知识点:什么叫虚接口,new()做什么的?
虚接口virtual interface
为什么要引入虚接口?因为在验证平台中,interface虽然简化了模块之间的连接,但是无法很好地适用于基于OOP的测试平台,无法在program,class中进行例化。
virtual interface使用的目的是为了消除结对路径;避免修改的时候改很多东西。
这个问题我之前解决过,忘记了,现在这是copy的别人的代码,仔细看一下,就当我也仿真过了
automatic
module test;
initial begin
automatic_test;
end
task automatic_test;
int j;
for(j=0;j<3;j++) begin
fork
distest(j);
join_none
end
#0 $display($time,": j=%0d",j);
#1000;
endtask:automatic_test
task distest(int k);
#100;
$display($time,": k = %0d",k);
endtask:distest
endmodule
打印结果:
0:j=3;
100: k = 3;
100: k = 3;
100: k = 3;
作者:肆月黄妙之
本文版权归作者和博客园共有,仅作学习用途,欢迎转载探讨,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.