标签:仿真 结束 always initial program 测试 SystemVerilog 赋值
在verilog测试中需要verilog提供的系统函数来结束仿真
在仿真500ns时通过系统函数$finish()结束仿真。
用户也可以通过$stop()来暂停仿真
$finish():仿真会退出
$stiop():暂停仿真,但是还有机会让仿真继续运行
module tb;
bit clk;
initial begin
forever #5ns clk<=~clk;
end
counter dut(clk);
initial begin
#500ns;
$finish ( );//主动的结束仿真
end
endmodule
如果在仿真开始的时候,在命令窗敲击run0,下列的行为哪些会执行?
A.assign赋值语句
B.initial语句
C.always语句
D.always语句
答案:
注意assign在时刻0会执行一次,而always必须等到信号变化才执行。
因为声明变量logic a1 = 0;
所以只要一加载,不需要run,a1就是0.
initial在0时刻也执行完毕。
组合逻辑的always要注意。
SV推理了program将验证部分的设计部分进行有效隔离以后,SV也将每一个program作为一个独立的测试用例。
如果在testbench里面有多个program,那么等待所有的program中的最后一个initial过程块完成后,才能够结束仿真(自动结束)。
program是一种隐式的结束方式,要求仿真自动结束的前提是所有的program的initial块都应该在一定时间内完成。
但是有的initial中有forever,一直执行,就没法自动结束。
可以在program中植入$exit( )要求program强行的结束。
建议将设计放在module,测试或者采样放在program里面。
program里面不可以出现“硬件的领地”:
不得使用always,interface,
program不能够例化program
program中内部定义的变量的赋值采用 = (阻塞赋值)
program内部在驱动外部硬件信号时应该使用非阻塞赋值。(硬件赋值<=)
program也可以消除delt-cycle竞争的问题
*********************************************************
硬件module
软件program class
中间 interface
**********************************************************
module和interface是学习SV的终点,关于program我们需要熟悉他的特性
答案:AC
标签:仿真,结束,always,initial,program,测试,SystemVerilog,赋值 来源: https://www.cnblogs.com/justkeen/p/14836819.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。