浅谈芯片验证中的仿真运行之 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;   然而&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那么菜

你的鼓励和批评是我最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值