前言
vcs仿真时可以通过-xprop=tmerge/xmerge来扩散X态传播,借此来发现一些问题。对于这个选项,synopsys给出的解释是:
“Verilog 和 VHDL 常用于数字设计建模。设计人员使用 RTL 构造描述硬件行为。然而,某些 RTL 仿真语义不足以准确地为硬件行为建模。因此,相比实际硬件行为,仿真结果要么太过乐观,要么太过悲观。
因为这些语义限制,Verilog 和 VHDL RTL 仿真器会忽略掉控制信号上的X不定态,在输出上会分配一个固定的数值。这样造成的结果就是,由于缺少X的传播, RTL 仿真器往往无法检测到和 X态相关的设计问题。然而,同样的设计问题可以在门级仿真中检测出来,因此许多时候必须运行大量的门级仿真,只是为了调试 X 相关问题。现在VCS® 在RTL阶段提供了的全新 X 传播(X-propagation)支持,使用该技术,工程师可以节省大量用于调试RTL和门级仿真的X建模的差异上的时间和精力。”
这段话反正翻译完大概意思能懂,根据我之前的测试和笔记,vcs编译选项中如果不定义-xprop,则vcs 为vmerge,为典型的verilog behavior,这个时候呢assign语句的X态传播能够被仿出的(但是这里我缺乏实验,原因标粗),但是对always @*的组合逻辑X态是无法传播的。
本意呢我希望仿真一下各种情况,double check我之前的笔记,但是把我发现啊: