-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):“case”附近:语法错误,意外情况。

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

4

2 回答 2

0

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

于 2015-09-14T21:31:18.200 回答
0

这很有趣,我从未尝试在并发断言中编写 case 语句,不确定是否允许。不过考虑一下,您希望同时检查所有 4 个值sb_adrc与并发断言(在 each 上不断运行upbm_clk),这对我来说感觉您需要 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
于 2015-09-18T15:48:37.147 回答