systemverilog学习之平台搭建流程

我正在重新搭建systemverilog的验证平台,打算重新理一遍。

我选择把时序信号写在class中

  1. 首先要清楚有几个时序基准,比如异步:读写两个基准
  2. 有时序信号,就该有时序停止,即什么时候停下来。这个把我它处理为触发事件,即:何时停止?
  3. 这里涉及到一些扩展的必备知识点:什么叫虚接口,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;
posted @ 2021-10-26 22:37  肆月黄妙之  阅读(175)  评论(0编辑  收藏  举报