reg flag;
//--------------------------------------------------------------------------------
//****************************** 系统显示 $display *******************************
reg [31:0] data_display;
initial begin
data_display = 32'd100;
flag = 0;
$display("!!! Start Simulation !!!");
#10;
//显示16进制 10进制
$display("data_display = %h hex %d decimal", 100, 100);
$display("data_display = %h hex %d decimal", data_display, data_display);
#10;
//显示8进制 2进制
$display("data_display = %o otal %b binary", 100, 100);
$display("data_display = %o otal %b binary", data_display, data_display);
#10;
//ASCII码
$display("data_display has %c ascii character value",64);
#10;
//显示10进制 换行 2进制
$display("data_display = %d otal next line \n %b binary", 100, 100);
#10
//显示系统仿真时间
$display("simulation time is %t",$time);
flag = 1;
end
运行结果:
!!! Start Simulation !!!
data_display = 00000064 hex 100 decimal
data_display = 00000064 hex 100 decimal
data_display = 00000000144 otal 00000000000000000000000001100100 binary
data_display has @ ascii character value
data_display = 100 otal next line
00000000000000000000000001100100 binary
simulation time is 50000
二、换行
上例中所有的数据在终端上都显示在一行中,为了清晰需要每笔数占用一行,需要换行控制。换行是由\n实现的,如上例可以改写如下:
$display(" data0= %b; \ndata1= %o; \ndata2= %d; \ndata3= %h; \n", 4, 6 ,12,13);
显示如下:
data0= 100;
data1= 6;
data2= 12;
data3= d;
三、字符串形式输出
%s或%S:以字符串的形式输出
$display("%020s", clk_name);
clk_name为20个字符串输出,超过截断。
四、十进制的形式输出实型数
%f或%F:以十进制的形式输出实型数
$display("%5.6f", clk_check);
小数点前面最多5位,后面最多6位
$display("%20s: %5.6f golden: %5.6f", clk_name, clk_check, clk_real);
运行结果:
clk_out: 1499.998800 golden: 1500.000000