systemverilog中new()和new[]的區別


在systemverilog中new()和new[]有什么區別?

new()為一個對象分配空間,初始化變量,並返回保存對象的地址。
new[]設定動態數組的大小。動態數組在編譯時不知道元素個數,也就是數組的寬度,在運行仿真才知道。
相同點:他們都申請內存並且初始化變量。
不同點:最大的不同在於調用new()函數僅創建了一個對象,而new[]操作則建立一個含有多個元素的數組。
例如:
new()用在systemverilog中OOP的構造函數;
構造函數除了分配內存外,還初始化變量,在默認情況下,將變量設置成默認的數值,二值變量為0, 四值變量為x, 當然也可以通過自定義的new函數將變量設置成你想要的數值;

class Transaction;
	logic [31:0] addr, crc;
	function new();
		addr = 3;
	endfunction : new
endclass

動態數組在最開始是空的,必須通過調用new[]來分配空間,同時在方括號中傳遞數組寬度;

int dyn[];		//聲明動態數組
initial begin
dyn = new[5];	//分配5個元素
foreach (dyn[j]) dyn[j] = j;	//對元素進行初始化
end


免責聲明!

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



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