gaochy1126 发表于 2024-9-28 16:02

Verilog语言中的系统任务和系统函数

Verilog语言中预先定义了一些任务和函数,用于完成一些特殊的功能,它们被称为系统任务和系统函数,这些函数大多数都是只能在Testbench仿真中使用的,使我们更方便的进行验证。

1 `timescale 1ns/1ns //时间尺度预编译指令 时间单位/时间精度
时间单位和时间精度由值1、10、和100以及单位s、ms、us、ns、ps和fs组成
时间单位:定义仿真过程所有与时间相关量的单位仿真中使用 “#数字”表示延时相应时间单位的时间,例#10表示延时10个单位的时间,即10ns。
时间精度:决定时间相关量的精度及仿真显示的最小刻度。

1 `timescale 1ns/10ps//精度0.01,#10.11 表示延时10110ps
下面这种写法就是错误的,因为时间单位不能比时间精度小。

1 `timescale 100ps/1ns
主要的函数有如下这些,在支持Verilog语法的编辑器中都会显示为高亮关键字 。

复制代码
//--------------------------------------------------
$display    //打印信息,自动换行
$write      //打印信息
$strobe      //打印信息,自动换行,最后执行
$monitor       //监测变量
$stop          //暂停仿真
$finish      //结束仿真
$time          //时间函数
$random      //随机函数
$readmemb   //读文件函数
//--------------------------------------------------
复制代码
下面我们单独介绍它们的功能,并在ModelSim的Transcript界面中打印这些信息。
1、$display用于输出、打印信息
使用格式为:

复制代码
1 $display("%b+%b=%d",a, b, c); //格式“%b+%b=%d” 格式控制,未指定时默认十进制
2 %h或%H //以十六进制的形式输出
3 %d或%D //以十进制的形式输出
4 %o或%O //以八进制的形式输出
5 %b或%B //以二进制的形式输出
6 //--------------------------------------------------   
7 //a,b,c 输出列表,需要输出信息的变量
8 //每次打印信息后自动换行
9 `timescale 1ns/1ns
10
11 module tb_test();
12
13 reg a;
14 reg b;
15 reg c;
16
17 initial begin
18   $display("Hello");
19   $display("xiangliangzi");
20   a = 4'd5;
21   b = 4'd6;
22   c = a + b;
23   #100;
24   $display("%b+%b=%d", a, b, c);
25 end
26
27 endmodule
28 //--------------------------------------------------   

页: [1]
查看完整版本: Verilog语言中的系统任务和系统函数