[vcs] x-propagation flow

背景

Verilog提供了四种状态来模拟实际电路的电平状态,1,0,x,z

在整个设计流程,包含了Simulation,综合,LEC等不同阶段对X态的解释不尽相同。
对于验证来说,在Simulation阶段进行RTL功能仿真时,X态表示unkown高低电平不确定的状态。 Verilog对于X态的propagate传播处理,是偏乐观的。而一些由于X态的传播导致的bug无法在正常的RTL仿真阶段发现,但是在Gate-level仿真时会被捕获到。有过经验的人都知道调试Gate-level仿真会比RTL仿真麻烦N倍。

在这个背景下,VCS仿真器对于RTL仿真提供了支持X-Propagation的功能,能够在RTL阶段就排除掉X态传播的影响。对于项目而言,越早的发现bug,消耗的成本也越低,这也正是Shift-Left验证左移的理念实践。

工作模式

目前X-propagation支持三种模式:

vmerge mode: 就是Verilog规定的X态处理行为,比较乐观;
tmerge mode: 更接近Gate-level仿真,也就是实际硬件行为,算法为当所有的可能值不同时,即认定为X;
xmerge mode: 比tmerge mode更悲观,无条件求值为X;

举例来说:

always @(*) begin
	if(cond)
		out = a;
	else
		out = b;
end

你可能感兴趣的:(vcs使用技巧,vcs)