2015-06-03 171 views

回答

2

你需要使用一個局部變量,看IEEE Std 1800-2012 § 16.10 局部變量

下面是一個簡單的例子:,使用

property p_PropA; 
    int count; 
    @(posedge clk) 
    ($rose(active),count=config) |-> 
    (active,count--)[*] ##1 (~active && count==0); 
endproperty 
+0

感謝如何[\ *]?據我瞭解[\ *]代表seq [* 0]或seq [* 1:$]。這會減少每個週期的計數,直到激活不成立。但是,然後活動可以取消後6個時鐘,計數將是負面的計數== 0檢查失敗。那是對的嗎?而且我需要確保我的模擬不會結束,直到最後一個激活解除爲止。 – wisemonkey

+0

'seq [*]'等同於'seq [* 0:$]'(見[lrm]中的16.9.2(http://standards.ieee.org/getieee/1800/download/1800-2012)。 PDF))。是的,櫃檯可能會消極。爲了更長的脈衝給出失敗信息,可以使用:'(active && count> 0,count - )[*] ## 1(〜active && count == 0)'。你也可以用其他方式編碼(我的例子),但它們都需要本地變量。 – Greg

+0

感謝您的解釋:) – wisemonkey