Verilog设计中#,$display,initial为啥不可综合?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Verilog设计中#,$display,initial为啥不可综合?相关的知识,希望对你有一定的参考价值。

参考技术A 所有的电路都是上电以后才开始工作的。而带电以后一般用reset做为电路的初始状态。
#是延迟。这个是用来模拟器件的延迟作用而引入的。
$display是用于调试打印log
file而引入的。
initial是用于测试时对外部输入信号进行初始化而引入的。
综合指的是生成实际的电路,这些东西都是为了仿真而引入存在的,所以他们不可综合。
一般遇到不可综合的语句,以及测试用的语句出现在设计中时需要用
//
synopsys
translate
on
//
synopsys
translate
off
括起来。这样DC在综合的时候才会忽略这些语句
建议你参考一下Verilog标准以及可综合部分的扩展标准

verilog HDL 的$display显示的信息在哪里?

我用的是quartusII9.0 ,代码如下:
module adder(count,sum,a,b,cin);
input[2:0] a,b;
input cin;
output count;
output[2:0] sum;
assign count,sum=a+b+cin;
initial
begin
$display($time,);
end
endmodule

$display 等仿真系统函数是仿真用的,Quartus 是不能综合的,要仿真的话要用其他的工具,一般大家都用Modelsim.显示区见modelsim 的Transript区。 参考技术A 你写的是个不可综合代码,只能仿真。
$display($time,);这行代码显示当前仿真时间。
在modelsim完成comply和stimulate之后会弹出Transcrip窗口
接着点add wave,观测电平变化
参考技术B 在仿真工具的控制端口。追问

请问具体是哪个窗口呢? 是Tcl console?这个窗口?

追答

用的modelsim?那就是那了。

不过一般用命令行的话,就可以在终端显示了。不过都会重定向到log的,然后看log文件。modelsim是有个transcript文件的。

参考技术C $display($time,);
=> $display("%tps",$time);
参考技术D 楼上正解

以上是关于Verilog设计中#,$display,initial为啥不可综合?的主要内容,如果未能解决你的问题,请参考以下文章

Verilog $display用来在哪里输出信息?过程与步骤

verilog HDL 的$display显示的信息在哪里?

verilog中$disllay中的$是啥意思

Verilog中的$display和$write任务

verilog作业

初学verilog,书中关于系统任务$display有这么个例子,自己在quarters2中编译了一下