testbech

一 基础语法

1 初始化

initial可以初始化信号,如clk, rst等信号都需要一个初始化值。#+数字表示等待一定时间后执行下一步操作,如下面的代码中rst初始化为0,10ns后置为1。时钟的生成可以通过#产生,每隔2ns时钟翻转一次,即产生一个4ns的时钟。

initial begin
        clk = 1'b0;
        rst = 1'b0;
        #10;
        rst = 1'b1;
end

always #2 clk <= ~clk;

2 文件读写

文件的读写需要先定义存储的变量再进行文件的读取。如下定义了位宽为32bit深度为1024的内存来读取文件,文件为16进制。

logic [31:0] mem [1024];
$readmemh("..//testdata//dat.hex", mem);

写文件的定义如下,可以结合时钟和使能信号写数据。

integer fp_wr;
initial fp_wr = $fopen("..//wr.dat","w");
$fwrite(fp_wr,"%h\n",dat[31:0]);

3 task和function

你可能感兴趣的:(testbech)