常识:Verilog语法- $display等
$display命令的执行是安排在活动事件队列中,但排在非阻赋值赋值数据更新事件之前
$strobe命令的执行是排在非阻塞赋值数据更新事件之后。
$display适合用来显示阻塞语句的赋值
$strobe适合用来显示非阻塞语句的赋值
举例:initial begin
$dumpfile("dump.vcd");
$dumpvars;
a = 4'd2;
b = 4'd3;
c = 4'd4;
#(PERIOD*15) $stop;
end
always @(posedge clk ) begin
b <= c;
a <= b;
$display("display a = %d", a);
$strobe("strobe a = %d", a);
end
输出如下:
# KERNEL: display a = 2
# KERNEL: strobe a = 3
# KERNEL: display a = 3
# KERNEL: strobe a = 4
$display
在$display中,输出列表中数据的显示宽度是自动按照输出格式进行调整的。
这样在显示输出数据时,在经过格式转换以后,总是用表达式的最大可能值所占的位数来显示表达式的当前值。
在用十进制数格式输出时,输出结果前面的0值用空格带代替。对于其他进制,输出结果前面的0依然显示出来。
可以通过在%和表示进制的字符中间插入一个0自动调整显示输出数据宽度的方式。
%0表示用最少位数表示。
如果输出列表中表达式的值包含有不确定的值或者是高阻值,且在输出格式为十六进制的情况下,其结果输出遵循以下原则:
①每四位二进制数为一组代表一位十六进制数;
②如果表达式值相对应的某进制数的部分位为不定值,则该位进制数输出结果为大写的X。
③如果表达式值相对应的某进制数的所有位均为不定值,则该位进制数输出结果为小写的X。



浙公网安备 33010602011771号