Verilog Display中不必要的空间

Jay*_*Jay 6 verilog spaces

我试图以十进制显示一些32位值,除了我的%b和前一个字符之间奇怪的不必要的空格之外,这个工作正常.

例如:如果我有一个32位的reg a,其十进制值为33,我将使用这样的东西

initial
begin
    $display("a=%d;", a);
end
Run Code Online (Sandbox Code Playgroud)

cmd中的输出看起来与此类似:a = ___________________33;

该行只表示%b和前一个char之间的长空格.有人可以向我解释为什么会这样吗?我怎么能摆脱他们?

Qiu*_*Qiu 14

IEEE Std 1800-2012(21.2.1.3)中,您可以找到以下信息:

显示十进制值时,前导零被抑制并替换为空格.在其他基数中,始终显示前导零.

这就是为什么你之前有这么多空间的原因33.实现你想要的最简单的方法是:

$display("a=%0d;", a);
Run Code Online (Sandbox Code Playgroud)

通过0%字符和d(表示基数的字母)之间添加,可以覆盖显示数据的自动调整大小.结果将以尽可能小的尺寸打印.

  • 请使用并引用免费提供的[IEEE Std 1800-2012](https://standards.ieee.org/getieee/1800/download/1800-2012.pdf) (2认同)