1、文件操作
(1)$fscan函数(systemVerilog)
返回匹配的数目到code,匹配失败返回0,在第一个匹配前读取结束了返回EOF(值为-1)。
(2)fgets函数,获取一行
integer fp;
int rd_bytes;
initial begin
fp = $fopen("filename.txt","r");
rd_bytes = fgets(str,fp);
end
2、parameter在module中使用
(1) module中定义方式1(可用于port list):
module fifo
#(parameter UDLY = 1,
AW = 4, //fifo addr width
DW = 8 //fifo data width
)
(
input [AW-1:0] addr,
input [DW-1:0] data
);
(2) module中定义方式2(不可用于port list):
module fifo(
input [3:0] addr,
input [7:0] data
);
#parameter AW = 4;
reg [AW-1:0] reg_data;
(3) 例化module:
fifo #(.AW(8)) fifo_inst ( .addr(ADR), .data(DATA) );
3、fsdb波形
testbench文件
initial begin
$timeformat(-9,2," ns"); //log文件里时间显示,-9表示按ns单位来打印,2表示小数位,“ ns"打印数据后的后缀
$fsdbDumpfile("wave.fsdb",2000); //限定文件大小不超过2000M
$fsdbDumpvars(0,tb); //0:所有层次,1~n:tb往下1~n层
end
vcs脚本需加如下参数
vcs -P $NOVAS_HOME/share/PLI/VCS/LINUX/novas.tab $NOVAS_HOME/share/PLI/VCS/LINUX/pli.a \ -debug_all
4、条件编译宏
条件编译可以用编译指令
`ifdef、`else、`elsif和`endif