verilog_testbench技巧
forever语句
forever
begin
state;
end
一直执行state
repeat(n)
begin
state;
end
执行state,n次
force语句对双向端口进行输入赋值。
@与wait
@是边沿触发,wait是电平触发
仿真控制语句与系统任务描述
$stop停止仿真
$stop(n)带参数的系统任务,根据参数不同输出仿真信息
$finish结束运行仿真
$finish(n)带参数系统任务,根据参数不同输出仿真信息
0不输出任何信息
1输出当前仿真时刻和位置
2输出当前仿真时刻、位置和仿真过程中用到的memory,以及CPU时间的统计
统计
$random
$random%n输出-n到n之间的随机数
{$random}%n输出0到n之间的随机数
仿真终端显示描述
$monitor
$monitor($time, "clk=%d reset=%d out=%d", clk, reset, out)
$time是显示当前时间
$display
终端打印字符串,显示仿真结果
$display("strings")
$display("%t, %b, %b", $time, a, b)
文本输入方式
$readmemb读取二进制数据,文件内容只能包含空白位置,注释行,二进制数据中不能包含位宽说明和格式说明,每个数字必须是二进制数字。
$readmemh读取十六进制数据,文件内容只能包含空白位置,注释行,十六进制数据中不能包含位宽说明和格式说明,每个数字必须是十六进制数字。
$readmemb/$readmemh("<数据文件名>", <存储器名>)
存储器就是寄存器矩阵。
(<"数据文件名">, <存储器名>)