Verilog中x态和z态

什么是x态和z态?

x态:表示Unknown,仿真发生了不能解决的逻辑冲突。

z态:表示HiZ、High Impedance、Tri-State、Disabled Driver。

在 Verilog 中,IC设计工程师使用 RTL 构造和描述硬件行为。但是 RTL 代码中的一些语义,并不能够准确地为硬件行为建模。Verilog 中定义了 4 种不同的逻辑值:1、0、X 和 Z,1 和 0 是真实存在的逻辑电平,Z 表示高阻态,X 表示未知态。

X 态的存在使得仿真结果要么太过于乐观,要么太过于悲观。因此 X 态如何通过 RTL 级和门级仿真模型中的逻辑进行传播的,是需要特别关注的。为此,还产生了两种观念, X-optimism 和 X-pessimism。前者将 X 值转换为 0 或 1,后者将 X 值一直传播出去。

X 态产生的原因主要分为以下几种情况:

四值变量、寄存器和锁存器未初始化

模块输入端口未连接

总线争用

超出范围的位选择和数组索引

setup/hold timing violation

testbench 中注入 X 态

VCS 对于 RTL 仿真提供了支持 X-Propagation 的选项,因为 RTL 仿真偏向于乐观,导致一些 X 态传播的 bug,无法在正常的 RTL 仿真阶段发现。但是在 Gate-level 仿真时会暴露出来,因为 Gate-level 仿真也更接近实际硬件行为。


什么是X态传播?

原文链接: https://xie.infoq.cn/article/fca379597a14aaa6472e4e719


条件信号为X不定态时if-else,case,assign语句的不同传递规定


当条件信号(例中为in)出现不定态X时,if-else, case, assign 语句对其的传递规定不相同。

只有 assign 连续幅值语句,可以将不定态传播到输出位置。

assign 可以传递条件信号的不定态,如此便易于在前仿真的时候就发现一些设计上的错误,几种语句可以看需求与场景按实际条件选用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容