2017-01-11 7 views
0

イベントが発生した場合、過去の "num_ticks"で何らかの信号がアサートされているはずであることを確認したいと思います。

例として、私が書いたプロパティは次のとおりです。

property test_past; 
    @(posedge clk) 
    $rose(gnt) |-> $past(req, num_ticks); 
endproperty 

ここでの問題はnum_ticksです。 num_ticksが、プロパティが書き込まれるモジュールへの入力信号である場合、アサーションは失敗します。私がnum_ticksをintとして宣言し、それを定数に代入すると、それは渡されます。

$ pastは一定の値に対してのみ機能しますか?これはLRMでは言及されていません。

Questasimを使用しています。10.3

+2

IEEE STD 1800から2012、16.9.3サンプル値関数: 'number_of_ticks私はちょうど私がLRMの古いバージョンを使用していた気づいた1以上でなければならないと推敲時定数expression' – toolic

+0

なければなりません - 2002 Accellera拡張バージョン。変数num_ticksで過去の$機能を達成する方法に関する提案はありますか? – noobuntu

+0

私はこれを理解するためにいくつかのロジックを使用しました。かわいいですが、仕事は – noobuntu

答えて

3

この目的で複数のアサーションを使用することがあります。

num_ticksが4ビット幅であるとすると、次のようになります。

genvar x; 
generate 
    for (x=0; x<16; x++) 
    begin 
    property test_past; 
     @(posedge clk) 
     (num_ticks == x) && $rose(gnt) |-> $past(req, x); 
    endproperty 
    end 
endgenerate 
+0

美しいです。ありがとうございます – noobuntu

+0

ようこそ。 :) –

関連する問題