Verilog 尽管相等为真,断言仍然失败
我得到了一个奇怪的失败的断言。如错误消息所示,虽然相等为true,但它失败。我正在对Verilog 尽管相等为真,断言仍然失败,verilog,system-verilog,assertion,hdl,system-verilog-assertions,Verilog,System Verilog,Assertion,Hdl,System Verilog Assertions,我得到了一个奇怪的失败的断言。如错误消息所示,虽然相等为true,但它失败。我正在对u2模块的4个输入进行简单求和,并确认该和等于两个输出的和 property CSA_add; @(posedge clk) disable iff(reset) (u2.VS + u2.VC)&'hFFFF == (u2.VS_x + u2.VS_y + u2.VC_x + u2.VC_y)&'hFFFF; endproperty assert property (CSA_add)
u2
模块的4个输入进行简单求和,并确认该和等于两个输出的和
property CSA_add;
@(posedge clk) disable iff(reset) (u2.VS + u2.VC)&'hFFFF == (u2.VS_x + u2.VS_y + u2.VC_x + u2.VC_y)&'hFFFF;
endproperty
assert property (CSA_add)
error <= 1'b0;
else begin
$warning("%x result != %x cheat\n",(u2.VS_x + u2.VS_y + u2.VC_x + u2.VC_y)&'hFFFF
,(u2.VS + u2.VC)&'hFFFF );
error <= 1'b1;
end
property CSA\u add;
@(posedge clk)禁用iff(重置)(u2.VS+u2.VC)和'hFFFF==(u2.VS_x+u2.VS_uy+u2.VC_x+u2.VC_y)和'hFFFF;
端属性
断言属性(CSA\U添加)
错误当显示的消息和检查代码之间存在差异时,这通常是竞争条件的结果。在这种情况下,被比较的信号与采样时钟同时变化
一种补救方法是更改断言的采样点。例如,改变
@(posedge clk)
致:
@(posedge clk)
@(negedge clk)