2017-06-30 9 views
0

SVインターフェースには、並行アサーションプロパティが含まれているものとします。 イベントがトリガされた場合にのみこのアサーションを有効にすることはできますか?私はインターフェイスファイル内のタスク内にプロパティを書き込もうとしましたが、エラーが発生しました。"プロパティ"の近く:構文エラー、予期しないプロパティ。イベントトリガーに基づくSVアサーション

Interface intf; 

    task e1(); 
     -> e1; 
    endtask 

    wait(e1.triggered); // something like this, where property waits for trigger 
    property prop1; 
    @(posedge clk) a ##1 b; 
    endproperty 

endinterface 

ありがとうございます。

答えて

1

私は、プロパティが同期して書かれ、クロックサイクルごとに評価されることをお勧めします。プロパティでは、aが発生するクロックサイクルごとに1サイクル後にbが発生します。

always begin 
    @(e1); 
    @(posedge clk) e = 1'b1; 
    @(posedge clk) e = 1'b0; 
end 

property prop1; 
@(posedge clk) e |-> a ##1 b; 
endproperty 

if e1 occurs, then a should be true (on the next rising edge of clk ?) and then b should be true on the rising edge of clk after that

ので、それを行う一つの方法は、1つのクロックが広いe1が発生した場合にパルスを発生し、常にブロック、例えばを作成するには、次のようになります。私は何を後にしていることは何かに似ていると思います

またはその変形です。しかし、私はレースについて心配する必要があるように感じる。

関連する問題