Search code examples
verilogspace

Unnecessary spaces in decimal display


I'm trying to display some 32-bit values in decimal format, and this is working fine other than the strange amount of unnecessary spaces between my %d and the previous character.

For example, if I have a 32-bit reg a with a decimal value of 33, I'll use something like this:

initial
begin
    $display("a=%d;", a);
end

The output in cmd would look similar to this:

a= ___________________33;

The line just represents the long blank space between %d and the previous character. Can somebody explain to me why this happens and how can I get rid of the spaces?


Solution

  • In IEEE Std 1800-2012 (21.2.1.3) you can find following information:

    When displaying decimal values, leading zeros are suppressed and replaced by spaces. In other radices, leading zeros are always displayed.

    That's why you got so many spaces before 33. The simplest way to achieve whay you want would be:

    $display("a=%0d;", a);
    

    By adding 0 between % character and d (letter that indicates the radix) the automatic sizing of displayed data is overridden. The result will be printed with minimum possible size.