[SV]SystemVerilog中的傳參數給帶時延task

                       SystemVerilog中的傳參數給帶時延task

       在SystemVerilog中,傳給task的參數相當於一個inout信號,在調用該task的時候就會把參數的值latch下來,如果參數是隨時間變化的,並且task中會走時間,那麼調用該task將不能達到我們的預期。

一、帶參數的task

 1.1、對於task而言,默認的參數是input方向

task reg2pad_test(logic [31:0] pad_vector);

endtask : reg2pad_test
  • 等價于
task reg2pad_test(input logic [31:0] pad_vector);

endtask : reg2pad_test

 1.2、調用task

  • 由於該task帶有一個input類型的參數,所以當調用該task的時候,會把該參數值copy下來
  • 由於task中會走時間,當調用時間之後,參數pad_por的值發生變換,task內部程序是不知道的
  • 因此,我們的驗證目的沒有達到
module top();


  initial begin  
    wait($test$plusargs("digrf_iomux_test") && (`TESTBENCH_TOP.chip_done === 1'b1));
    
    reg2pad_test(pad_por);

  end


endmodule

 

 1.3、reg2pad_test的實現

  • function:對GPIO控制器的Register寫一個

猜你喜欢

转载自blog.csdn.net/gsjthxy/article/details/106589156
今日推荐