Verilog调试系统任务和编译预处理语句

本文最后更新于 2024年10月5日 中午

$monitor

监视被测试模块的所有感兴趣的信号.

$monitor(p1,p2,...pn)

按照格式字符串打印信号

1
$monitor($time, ,"rxd=%b txd=%b",rxd,txd);

$monitor on/ monitor off

启动/关闭监控任务

$time

返回一个64位的整数来表示当前的仿真时刻值(总是输出整数)

$realtime

和$time作用相似,返回的是实型数

$finish

退出仿真器,返回主操作系统

$stop

将EDA工具置为暂停模式

$readmemb

1
2
3
4
5
6
$readmemb("<数据文件名>",<存储器名>);
$readmemb("<数据文件名>",<存储器名>,<起始地址>);
$readmemb("<数据文件名>",<存储器名>,<起始地址>,<结束地址>);
$readmemh("<数据文件名>",<存储器名>);
$readmemh("<数据文件名>",<存储器名>,<起始地址>);
$readmemh("<数据文件名>",<存储器名>,<起始地址>,<结束地址>);

读取数据文件,其中readmemb读取的数字必须是二进制,readmemh读取的数字必须是十六进制.

$random

产生随机数

1
2
3
reg[23:0] rand
rand = $random % 60;
// 产生一个[-59,59]内的随机数

编译预处理

`define

用一个指定的标识符(即名字)来代表一个字符串

1
`define 标识符(宏名) 字符串(宏内容)

例:

1
2
3
4
5
module test;
reg a,b,c,d,e,out;
`define expression a + b + c + d
assign out = `expression + e;
endmodule

`timescale

说明在该命令后的模块的事件单位和时间精度

1
`timescale <时间单位>/<时间精度>

Verilog调试系统任务和编译预处理语句
https://meteor041.git.io/2024/10/05/Verilog调试系统任务和编译预处理语句/
作者
meteor041
发布于
2024年10月5日
许可协议