SV中,ref和automatic關鍵字


SV中增加了一種方式ref,指定為引用而不是復制。這種方式只能用在automatic的子程序中,這種參數的好處是在子程序中

        修改變量對調用它的模塊隨時可見。

        task  bus_read(input  logic [31:0] addr,  ref logic [31:0]data);                initial     fork

                      bus.request = 1'b1;                                                                               bus_read(addr,data);

                      @(posedge bus.grant)  bus.addr =addr;                                                  thread2:  begin          //使用ref類型傳遞data,這樣不需

                      @(posedge bus.enable)  data = bus.data;                                                                 @data;    //要等到bus_read進程結束,

                      .......                                                                                                                      $display; //thread2便可以看見data的變化

        endtask:bus_read                                                                                                             end

                                                                                                                               join

自動(可重入)任務

任務在本質上是靜態的,任務中的所有聲明項的地址空間是靜態分配的,同事並發執行的多個任務共享這些存儲區。

因此,如果這個任務在模塊中的兩個地方被同時調用,則這兩個任務調用將對同一塊地址空間進行操作。操作的結果很有可能是錯誤的。

為了避免這一問題,Verilog通過在task關鍵字前面添加automatic關鍵字,是任務成為可重入的,這樣聲明的任務也稱為自動任務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM