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):“情况”附近:语法错误,意外情况,期望禁用。
断言中的[case/endcase
]在您的Questa版本中可能不受支持。
这很有趣,我从未尝试在并发断言中编写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