2016-07-20 11 views
1

私は、モニタのrun_phaseタスクのuvmメソドロジについて分かりませんか? DUTは、モニタが監視およびチェックしているデータとともに複数のクロックを送信し、異なるクロックドメインを分離して保持します。だから私の実行フェーズのタスクは、CLK1とCLK2のみposedge文のいずれかが実行されますその後、整列されている場合であるuvm monitor methodology&run_phase

forever begin 
fork 
begin @(posedge clk1) begin 
..code to capture data.. 
end end 
begin @(posedge clk2) begin 
..code to capture data in this domain... 
end end 
join_any 
disable fork; 

私の「問題」のように見えます。さらに、私のモニターが3番目の非同期ドメインで何らかの他の操作を実行するようにしたい場合は、clk1またはclk2の倍数で3番目のドメインがclk1またはclk2と並んでいるときに問題が発生します。

モニタは、複数のクロックドメインで、実行フェーズの永久ループでどのように動作するとしますか?

答えて

2

通常、2つの異なるクロックドメインを監視する場合、それらは別々の永久ループスレッドとして保持されます。条件付きで他のクロックドメインを無効にしたいというシナリオがあるかもしれませんが、これはあなたが意図するものではないのでしょうか。

fork 
    forever @(posedge clk1) begin 
    ..code to capture data.. 
    end 
    forever @(posedge clk2) begin 
    ..code to capture data in this domain... 
    end 
join // or join_none