verilog仿真时,部分reg变量消失

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog仿真时,部分reg变量消失相关的知识,希望对你有一定的参考价值。

大家好,我在用Quartus仿真时,为什么有的变量用reg声明了,但是在仿真时,却不能仿真该变量,变量不能找到,有的可以找到,感觉像是变量被软件优化了。

没错,在综合过程中一些变量是会被优化的.

一种常用的调试手段,是将这些内部变量变成输出.带来的麻烦是,module模块需要需要增加输出,尤其是多级调用模块时,会显得比较麻烦.

其实如果你需要一般的仿真,只需要用ModelSim就行了,任何内部的变量都可以观察到波形;ModelSim仿真需要自己编写testbench和测试波形,也就是说testbench模块不能有任何的输入,信号完全内部产生.
参考技术A 虽然你定义了REG,但是如果是组合逻辑是不会综合成寄存器的。而是WIRE类型,所以该变量找不到
希望能帮助到你,
Timothy

verilog中`timescale后面的单位最小可以定义为多少?和啥有关?

1fs吧(我试了,飞秒是支持的);
这个是仿真用的,不是真正时钟频率。
比如你写`timescale 1ns / 1ps
那么写#1就是延时1ns,
1ps是仿真的精度。
参考技术A timescale只具有仿真意义,是仿真的精度,在可编程器件的逻辑设计时,将它定义为所用的器件的引脚到引脚延时,这样可以仿真可编程器件的固有延时。在进行语言及仿真时,逻辑语句的执行时间是没有延时的,在语句中人为加入延时语句,使得仿真的逻辑结果接近综合布线后的仿真结果,也接近实际器件运行时的效果。
至于最小时间单位,我只见过飞秒(fs)

以上是关于verilog仿真时,部分reg变量消失的主要内容,如果未能解决你的问题,请参考以下文章

verilog波形仿真

MacOS下也能做Verilog开发/仿真/综合

verilog reg 数组类型赋值后,仿真总是高阻

reg和wire的区别

verilog语言quartus功能仿真,计数错误!

Verilog 中定义信号为啥要区分 wire 和 reg 两种类型