自学内容网 自学内容网

浅谈芯片验证中的仿真运行之 timescale (五)提防陷阱

一 仿真单位 timeunit

我们知道,当我们的代码中写清楚延时语句时,若不指定时间单位,则使用此单位;  例如:   `timescale 1ns/1ps     则 #15  语句表示delay15ns;

 例:如下代码,module a 的timescale是1ns/1ps, module b 是1ps/1ps;   module b中的clk,频率是由输入参数 t 决定的,在module a中例化 b 时,输入参数接 t1,而t1的值是5us。

 那么,我们期望的是inst_b中的clk 是每隔5us 翻转一次,也就是5000 ns翻转一次,然而事实真的如此吗?

通过仿真波形来看,实际上inst_b中的clk 每隔5ns翻转一次。  发生了什么事?  

因为“变量” 是没有单位这个概念的。

在module  a中定义的变量 t1=5us ,在a的timescale 1ns/1ps下,会被解析成5000,原因就是*细节点中提到的,“若指定单位,则仿真工具会转化为当前仿真单位的数值”,当前仿真单位是ns,所以"5us"会被解析成"5000"这个“数”。

然后,会把5000这个数,传给inst_b, 相当于module b中的forever语句变成: forever #5000 clk = ~clk;   然而&#


原文地址:https://blog.csdn.net/qq_16423857/article/details/140567971

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!