2017-11-28 23 views
1

この2つのコードスニペットが異なる動作をする理由を説明することはできますか。 2番目のケースでは、10個のトランザクションでシーケンスを開始するとき、最初に2つのトランザクションが同時に発生し、1つが別のトランザクションをオーバーライドし、シミュレーションの開始時にのみ発生します。すべてが大丈夫です。クロッキングブロックと信号割り当ての相関関係

task fir_driver::drive_write(input fir_item#(D_WIDTH) it); 
    seq_item_port.get_next_item(it); 
    @mp_p.cb_fir; 
    mp_p.cb_fir.i_data_sample  <= it.i_data_sample; 
    seq_item_port.item_done(); 
    endtask : drive_write 


    task fir_driver::drive_write(input fir_item#(D_WIDTH) it); 
    seq_item_port.get_next_item(it); 
    mp_p.cb_fir.i_data_sample  <= it.i_data_sample; 
    @mp_p.cb_fir; 
    seq_item_port.item_done(); 
    endtask : drive_write 
+0

クロッキングブロックの定義も提供できますか? – Serge

+0

クロッキングcb_fir @(posedge clk); \t \t デフォルト入力#1ep出力#1番目; \t \t 出力i_data_sample、i_data_en、i_ping_pong_sel_v、i_coef_data、i_coef_we、i_coef_addr; \t endclocking:cb_fir –

答えて

0

私はdrive_write()を呼び出す前に、最後のブロッキングイベントが時刻0で@mp_p.cb_firまたは可能性はないことを推測を取るつもりだとdrive_write()への呼び出しの間には他のブロッキング文が存在しないそして、最初のドライブがあること巻き上げます2番目のドライブと一致します。 1800-2012 LRMのセクション14.16同期ドライブを参照してください。

関連する問題