常用功能语句归纳
归纳一些常用的功能语句,方便在仿真中使用。
1. 文件的读取写入
task tc_temp;
begin
reg [15:0] data_0;
reg [15:0] data_1;
reg [15:0] data_2;
integer js;
integer file_wr_0;
integer file_wr_1;
integer file_wr_2;
file_wr_0 = $fopen("./data_out_0.txt","w");
file_wr_1 = $fopen("./data_out_1.txt","w");
file_wr_2 = $fopen("./data_out_2.txt","w");
for(js = 0; js < 1024; js++) begin
data_0 = $random%65535;
data_1 = $random%65535;
data_2 = $random%65535;
$fwrite(file_wr_0,"%h\n", data_0);
$fwrite(file_wr_1,"%h\n", data_1);
$fwrite(file_wr_2,"%h\n", data_2);
#10ns;
end
$fclose(file_wr_0);
$fclose(file_wr_1);
$fclose(file_wr_2);
end
endtask
2. 十六进制数据的读取写入
$readmemh("file_name.mem",mem);
//16进制数据读入
$readmemb("file_name.mem",mem);
//2进制数据读入
3. 十进制数据的读取写入
reg signed [8:0] dataa1[1:784];
integer i;
integer s;
integer fid1;
initial
begin
fid1 = $fopen("C:/Users/Desktop/conv_data.txt","r");//这里的斜杠与计算机里面的斜杠不一样
//计算机里面的斜杠为‘\’,这里为‘/’
for(i=1;i<=784;i=i+1)
begin
s= $fscanf(fid1,"%d",dataa1[i]);
end
$fclose(fid1);
end
4. 存入有符号数
integer fid3;
initial
begin
fid3 = $fopen("C:/Users/pooling1.txt","w");
#20000
$fclose(fid3) ;
end
always@(posedge clk2)
begin
if(result_pooling_valid1)
begin
$fwrite(fid3,"%d\n",$signed(result_pooling1));
end
end
5. 产生随机数
$random是产生随机数函数,产生的随机数是有符号的。
产生有符号随机数
dt = $random%10;会产生介于-9到9的数。
产生无符号随机数
dt = {$random}%10;会产生介于0~9的数。
产生min到max的数
dt = min + {$random}%(max-min-1);会产生介于min到max的数。