2015-09-14 77 views
-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 

**錯誤:(視頻博客-13069)cad_property.sv(5):鄰近 「的情況下」 :語法錯誤,意外情況。錯誤:(視頻博客-13069)cad_property.sv(5):鄰近 「的情況下」:語法錯誤,意想不到的情況下

without disable_iff **錯誤:(vlog-13069)cad_property.sv(3):near「case」:語法錯誤,意外情況,預期禁用。

+1

如果您添加了一些上下文,則會更好地理解您的問題。這是什麼樣的環境,這個代碼是如何被調用的? – ElmerCat

回答

0

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

+0

你可以剪下粘貼我共享的代碼,並且會彈出錯誤I.E vlog -sv abc.sv –

0

這很有趣,我從來沒有嘗試在併發斷言中寫入case語句,不確定是否允許。想想看,雖然你想同時檢查sb_adrc的所有4個值,併發斷言​​(每個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