错误:(vlog-13069)cad_property.sv(5):接近“情况”:语法错误,意外情况

问题描述 投票:-2回答:2
property clk_req_check;
@(posedge upbm_clk) disable iff (~upbm_reset_n)

//@(posedge upbm_clk);
 case (sb_adrc)
   2'b00 : 1'b1 |-> (clk_req[0] == 1'b1) [*] (sb_adrc != 2'b00);
   2'b01 : 1'b1 |-> (clk_req[1] == 1'b1) [*] (sb_adrc != 2'b01);
   2'b10 : 1'b1 |-> (clk_req[2] == 1'b1) [*] (sb_adrc != 2'b10);
   2'b11 : 1'b1 |-> (clk_req[3] == 1'b1) [*] (sb_adrc != 2'b11);
   default : 1'b0;
  endcase
endproperty: clk_req_check

**错误:(vlog-13069)cad_property.sv(5):“情况”附近:语法错误,意外情况。

没有disable_iff**错误:(vlog-13069)cad_property.sv(3):“情况”附近:语法错误,意外情况,期望禁用。

system-verilog system-verilog-assertions
2个回答
0
投票

断言中的[case/endcase]在您的Questa版本中可能不受支持。


0
投票

这很有趣,我从未尝试在并发断言中编写case语句,不确定是否允许这样做。但是,考虑一下,您希望同时使用并发声明(在每个sb_adrc上不断运行)检查upbm_clk的所有4个值,在我看来,您需要4个单独的并发声明。每个类似于以下内容:

property clk_req_check;
  @(posedge upbm_clk) disable iff (~upbm_reset_n)
    sb_adrc == 2'b00 |-> (clk_req[0] == 1'b1) ##1 (sb_adrc != 2'b00)
endproperty