![](https://csdnimg.cn/release/download_crawler_static/3171230/bg4.jpg)
// pipes the ASCII results to the terminal or text editor
initial begin
$timeformat(-9,1,"ns",12);
$display(" Time Clk Rst Ld SftRg Data Sel");
$monitor("%t %b %b %b %b %b %b", $realtime,
clock, reset, load, shiftreg, data, sel);
end
系统函数$display 在终端屏幕上输出引用的附加说明文字(“。。。”)。系统函数$monitor
操作不同。因为它的输出是事件驱动的。例中的变量$realtime(由用户赋值到当前的仿真时
间)用于触发信号列表中值的显示。信号表由变量$realtime 开始,跟随其他将要显示的信号
名(clock, reset, load 等)。以%开始的关键字包含一个格式描述的表,用来控制如何格式化
显示信号列表中的每个信号的值。格式列表是位置确定的。每个格式说明有序地与信号列表
中的信号顺序相关。比如%t 说明规定了$realtime 的值是时间格式。并且第一个%b 说明符格
式化 clock 的值是二进制形式。Verilog 提供附加的格式说明,比如%h 用于说明十六进制,
%d 说明十进制,%c 说明显示为八进制。图 2 说明格式显示结果
图 2 仿真结果
简单的 testbench
简单的 testbench 实例化用户设计,然后提供相应的激励。测试输出被图形化显示在仿
真器的波形窗口里或者作为文本发送到用户的终端或者是管道输出文本。
以下是一个简单的用 Verilog 实现的设计,它实现了一个移位寄存器的功能。
module shift_reg (clock, reset, load, sel, data, shiftreg);
input clock;
input reset;
input load;
input [1:0] sel;
input [4:0] data;
output [4:0] shiftreg;
reg [4:0] shiftreg;
always @ (posedge clock)
begin
if (reset)