一 基礎(chǔ)語法
1 初始化
initial可以初始化信號(hào),如clk, rst等信號(hào)都需要一個(gè)初始化值。#+數(shù)字表示等待一定時(shí)間后執(zhí)行下一步操作,如下面的代碼中rst初始化為0,10ns后置為1。時(shí)鐘的生成可以通過#產(chǎn)生,每隔2ns時(shí)鐘翻轉(zhuǎn)一次,即產(chǎn)生一個(gè)4ns的時(shí)鐘。
initial begin
clk = 1'b0;
rst = 1'b0;
#10;
rst = 1'b1;
end
always #2 clk <= ~clk;
2 文件讀寫
文件的讀寫需要先定義存儲(chǔ)的變量再進(jìn)行文件的讀取。如下定義了位寬為32bit深度為1024的內(nèi)存來讀取文件,文件為16進(jìn)制。
logic [31:0] mem [1024];
$readmemh("..//testdata//dat.hex", mem);
寫文件的定義如下,可以結(jié)合時(shí)鐘和使能信號(hào)寫數(shù)據(jù)。
integer fp_wr;
initial fp_wr = $fopen("..//wr.dat","w");
$fwrite(fp_wr,"%h\n",dat[31:0]);