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

相关推荐

  1. VueNextTick。

    2024-07-22 05:46:07       47 阅读
  2. Spring事务【Transactional】

    2024-07-22 05:46:07       27 阅读
  3. -“位运算

    2024-07-22 05:46:07       34 阅读
  4. 薪酬绩效设计及运行忌讳

    2024-07-22 05:46:07       34 阅读
  5. 数据治理道 数据运用(四)

    2024-07-22 05:46:07       40 阅读
  6. MySQL索引

    2024-07-22 05:46:07       301 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 05:46:07       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 05:46:07       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 05:46:07       45 阅读
  4. Python语言-面向对象

    2024-07-22 05:46:07       55 阅读

热门阅读

  1. Redis 数据结构—跳跃表(Skiplist)深度解析

    2024-07-22 05:46:07       16 阅读
  2. MySQL-显示所有错误信息

    2024-07-22 05:46:07       15 阅读
  3. Python 爬虫技术 第06节 HTTP协议与Web基础知识

    2024-07-22 05:46:07       11 阅读
  4. Oracle19.24发布,打补丁到19.24

    2024-07-22 05:46:07       13 阅读
  5. android audio 相机按键音:(一)资源加载与替换

    2024-07-22 05:46:07       17 阅读