forked from github/verilator
Fix $display("%p") to be closer to IEEE.
This commit is contained in:
parent
59782266b9
commit
682c2a610f
2
Changes
2
Changes
@ -24,6 +24,8 @@ The contributors that suggested a given feature are shown in []. Thanks!
|
||||
|
||||
**** Fix // in filenames, bug1610. [Peter Nelson]
|
||||
|
||||
**** Fix $display("%p") to be closer to IEEE.
|
||||
|
||||
|
||||
* Verilator 4.022 2019-11-10
|
||||
|
||||
|
@ -2307,13 +2307,17 @@ private:
|
||||
break;
|
||||
}
|
||||
case 'p': { // Packed
|
||||
// Very hacky and non-compliant; print strings as strings, otherwise as hex
|
||||
if (argp && argp->dtypep()->basicp()->isString()) { // Convert it
|
||||
AstBasicDType* basicp = argp ? argp->dtypep()->basicp() : NULL;
|
||||
if (basicp->isString()) {
|
||||
added = true;
|
||||
newFormat += "\"%@\"";
|
||||
} else if (basicp->isDouble()) {
|
||||
added = true;
|
||||
newFormat += "%g";
|
||||
} else {
|
||||
added = true;
|
||||
newFormat += "'h%0h";
|
||||
if (fmt == "%0") newFormat += "'h%0h"; // IEEE our choice
|
||||
else newFormat += "%d";
|
||||
}
|
||||
if (argp) argp = argp->nextp();
|
||||
break;
|
||||
|
@ -32,8 +32,8 @@
|
||||
[0] %c=m %0c=m
|
||||
[0] %v=St0 St0 St0 St0 St0 St1 St1 St0 St0 %0v=St0 St0 St0 St0 St0 St1 St1 St0 St0 %v=St0 St0 St0 St0 St0 St1 St0 St1 St0 St1 St0 St1 St1 St1 St0 St1 St1 St1 St0 St1 St1 St1 St0 St1 St1 St1 St1 St0 St0 St1 St1 St0 St0 St1 St1 St0 St0 St1 St1 St0 St0 %0v=St0 St0 St0 St0 St0 St1 St0 St1 St0 St1 St0 St1 St1 St1 St0 St1 St1 St1 St0 St1 St1 St1 St0 St1 St1 St1 St1 St0 St0 St1 St1 St0 St0 St1 St1 St0 St0 St1 St1 St0 St0 %v=St0 St0 St0 St0 St0 St1 St0 St1 St0 St1 St0 St1 St1 St1 St1 St0 St0 St0 St0 St0 St1 St0 St0 St1 St0 St0 St0 St1 St1 St0 St1 St0 St0 St0 St1 St0 St1 St0 St1 St1 St0 St0 St1 St1 St1 St1 St0 St0 St0 St0 St0 St0 St1 St0 St0 St1 St0 St0 St0 St1 St1 St0 St1 St0 St0 St0 St1 St0 St1 St0 St1 St1 St0 St0 St1 St1 St1 St1 St0 St0 St0 %0v=St0 St0 St0 St0 St0 St1 St0 St1 St0 St1 St0 St1 St1 St1 St1 St0 St0 St0 St0 St0 St1 St0 St0 St1 St0 St0 St0 St1 St1 St0 St1 St0 St0 St0 St1 St0 St1 St0 St1 St1 St0 St0 St1 St1 St1 St1 St0 St0 St0 St0 St0 St0 St1 St0 St0 St1 St0 St0 St0 St1 St1 St0 St1 St0 St0 St0 St1 St0 St1 St0 St1 St1 St0 St0 St1 St1 St1 St1 St0 St0 St0 <
|
||||
[0] %V=St0 St0 St0 St0 St0 St1 St1 St0 St0 %0V=St0 St0 St0 St0 St0 St1 St1 St0 St0 %V=St0 St0 St0 St0 St0 St1 St0 St1 St0 St1 St0 St1 St1 St1 St0 St1 St1 St1 St0 St1 St1 St1 St0 St1 St1 St1 St1 St0 St0 St1 St1 St0 St0 St1 St1 St0 St0 St1 St1 St0 St0 %0V=St0 St0 St0 St0 St0 St1 St0 St1 St0 St1 St0 St1 St1 St1 St0 St1 St1 St1 St0 St1 St1 St1 St0 St1 St1 St1 St1 St0 St0 St1 St1 St0 St0 St1 St1 St0 St0 St1 St1 St0 St0 %V=St0 St0 St0 St0 St0 St1 St0 St1 St0 St1 St0 St1 St1 St1 St1 St0 St0 St0 St0 St0 St1 St0 St0 St1 St0 St0 St0 St1 St1 St0 St1 St0 St0 St0 St1 St0 St1 St0 St1 St1 St0 St0 St1 St1 St1 St1 St0 St0 St0 St0 St0 St0 St1 St0 St0 St1 St0 St0 St0 St1 St1 St0 St1 St0 St0 St0 St1 St0 St1 St0 St1 St1 St0 St0 St1 St1 St1 St1 St0 St0 St0 %0V=St0 St0 St0 St0 St0 St1 St0 St1 St0 St1 St0 St1 St1 St1 St1 St0 St0 St0 St0 St0 St1 St0 St0 St1 St0 St0 St0 St1 St1 St0 St1 St0 St0 St0 St1 St0 St1 St0 St1 St1 St0 St0 St1 St1 St1 St1 St0 St0 St0 St0 St0 St0 St1 St0 St0 St1 St0 St0 St0 St1 St1 St0 St1 St0 St0 St0 St1 St0 St1 St0 St1 St1 St0 St0 St1 St1 St1 St1 St0 St0 St0 <
|
||||
[0] %p='hc %0p='hc %p='habbbbcccc %0p='habbbbcccc %p='habc1234567812345678 %0p='habc1234567812345678
|
||||
[0] %P='hc %0P='hc %P='habbbbcccc %0P='habbbbcccc %P='habc1234567812345678 %0P='habc1234567812345678
|
||||
[0] %p= 12 %0p='hc %p= 46099320012 %0p='habbbbcccc %p= 50692964483019020981880 %0p='habc1234567812345678
|
||||
[0] %P= 12 %0P='hc %P= 46099320012 %0P='habbbbcccc %P= 50692964483019020981880 %0P='habc1234567812345678
|
||||
[0] %P="sv-str"
|
||||
[0] %u=dcba %0u=dcba
|
||||
[0] %U=dcba %0U=dcba
|
||||
|
@ -1,22 +1,22 @@
|
||||
[0] e=0.000000e+00 e1=0.000000e+00 e30=0e+00 e32=0.00e+00
|
||||
[0] f=0.000000 f1=0.000000e+00 f30=0e+00 f32=0.00e+00
|
||||
[0] g=0 g1=0.000000e+00 g30=0e+00 g32=0.00e+00
|
||||
[0] e=0.000000e+00 e1=0.000000e+00 e30=0e+00 e32=0.00e+00 p=0
|
||||
[0] f=0.000000 f1=0.000000e+00 f30=0e+00 f32=0.00e+00 p=0
|
||||
[0] g=0 g1=0.000000e+00 g30=0e+00 g32=0.00e+00 p=0
|
||||
|
||||
[0] e=1.000000e+00 e1=1.000000e+00 e30=1e+00 e32=1.00e+00
|
||||
[0] f=1.000000 f1=1.000000e+00 f30=1e+00 f32=1.00e+00
|
||||
[0] g=1 g1=1.000000e+00 g30=1e+00 g32=1.00e+00
|
||||
[0] e=1.000000e+00 e1=1.000000e+00 e30=1e+00 e32=1.00e+00 p=1
|
||||
[0] f=1.000000 f1=1.000000e+00 f30=1e+00 f32=1.00e+00 p=1
|
||||
[0] g=1 g1=1.000000e+00 g30=1e+00 g32=1.00e+00 p=1
|
||||
|
||||
[0] e=1.000000e-01 e1=1.000000e-01 e30=1e-01 e32=1.00e-01
|
||||
[0] f=0.100000 f1=1.000000e-01 f30=1e-01 f32=1.00e-01
|
||||
[0] g=0.1 g1=1.000000e-01 g30=1e-01 g32=1.00e-01
|
||||
[0] e=1.000000e-01 e1=1.000000e-01 e30=1e-01 e32=1.00e-01 p=0.1
|
||||
[0] f=0.100000 f1=1.000000e-01 f30=1e-01 f32=1.00e-01 p=0.1
|
||||
[0] g=0.1 g1=1.000000e-01 g30=1e-01 g32=1.00e-01 p=0.1
|
||||
|
||||
[0] e=1.234500e-15 e1=1.234500e-15 e30=1e-15 e32=1.23e-15
|
||||
[0] f=0.000000 f1=1.234500e-15 f30=1e-15 f32=1.23e-15
|
||||
[0] g=1.2345e-15 g1=1.234500e-15 g30=1e-15 g32=1.23e-15
|
||||
[0] e=1.234500e-15 e1=1.234500e-15 e30=1e-15 e32=1.23e-15 p=1.2345e-15
|
||||
[0] f=0.000000 f1=1.234500e-15 f30=1e-15 f32=1.23e-15 p=1.2345e-15
|
||||
[0] g=1.2345e-15 g1=1.234500e-15 g30=1e-15 g32=1.23e-15 p=1.2345e-15
|
||||
|
||||
[0] e=2.579000e+15 e1=2.579000e+15 e30=3e+15 e32=2.58e+15
|
||||
[0] f=2579000000000000.000000 f1=2.579000e+15 f30=3e+15 f32=2.58e+15
|
||||
[0] g=2.579e+15 g1=2.579000e+15 g30=3e+15 g32=2.58e+15
|
||||
[0] e=2.579000e+15 e1=2.579000e+15 e30=3e+15 e32=2.58e+15 p=2.579e+15
|
||||
[0] f=2579000000000000.000000 f1=2.579000e+15 f30=3e+15 f32=2.58e+15 p=2.579e+15
|
||||
[0] g=2.579e+15 g1=2.579000e+15 g30=3e+15 g32=2.58e+15 p=2.579e+15
|
||||
|
||||
r8= 3 n1=1 n2=0.1
|
||||
n1=1 n2=0.1 r8= 3
|
||||
|
@ -13,25 +13,25 @@ module t;
|
||||
|
||||
initial begin
|
||||
// Display formatting
|
||||
$display("[%0t] e=%e e1=%1e e30=%3.0e e32=%3.2e", $time, n0,n0,n0,n0);
|
||||
$display("[%0t] f=%f f1=%1e f30=%3.0e f32=%3.2e", $time, n0,n0,n0,n0);
|
||||
$display("[%0t] g=%g g1=%1e g30=%3.0e g32=%3.2e", $time, n0,n0,n0,n0);
|
||||
$display("[%0t] e=%e e1=%1e e30=%3.0e e32=%3.2e p=%p", $time, n0,n0,n0,n0,n0);
|
||||
$display("[%0t] f=%f f1=%1e f30=%3.0e f32=%3.2e p=%p", $time, n0,n0,n0,n0,n0);
|
||||
$display("[%0t] g=%g g1=%1e g30=%3.0e g32=%3.2e p=%p", $time, n0,n0,n0,n0,n0);
|
||||
$display;
|
||||
$display("[%0t] e=%e e1=%1e e30=%3.0e e32=%3.2e", $time, n1,n1,n1,n1);
|
||||
$display("[%0t] f=%f f1=%1e f30=%3.0e f32=%3.2e", $time, n1,n1,n1,n1);
|
||||
$display("[%0t] g=%g g1=%1e g30=%3.0e g32=%3.2e", $time, n1,n1,n1,n1);
|
||||
$display("[%0t] e=%e e1=%1e e30=%3.0e e32=%3.2e p=%p", $time, n1,n1,n1,n1,n1);
|
||||
$display("[%0t] f=%f f1=%1e f30=%3.0e f32=%3.2e p=%p", $time, n1,n1,n1,n1,n1);
|
||||
$display("[%0t] g=%g g1=%1e g30=%3.0e g32=%3.2e p=%p", $time, n1,n1,n1,n1,n1);
|
||||
$display;
|
||||
$display("[%0t] e=%e e1=%1e e30=%3.0e e32=%3.2e", $time, n2,n2,n2,n2);
|
||||
$display("[%0t] f=%f f1=%1e f30=%3.0e f32=%3.2e", $time, n2,n2,n2,n2);
|
||||
$display("[%0t] g=%g g1=%1e g30=%3.0e g32=%3.2e", $time, n2,n2,n2,n2);
|
||||
$display("[%0t] e=%e e1=%1e e30=%3.0e e32=%3.2e p=%p", $time, n2,n2,n2,n2,n2);
|
||||
$display("[%0t] f=%f f1=%1e f30=%3.0e f32=%3.2e p=%p", $time, n2,n2,n2,n2,n2);
|
||||
$display("[%0t] g=%g g1=%1e g30=%3.0e g32=%3.2e p=%p", $time, n2,n2,n2,n2,n2);
|
||||
$display;
|
||||
$display("[%0t] e=%e e1=%1e e30=%3.0e e32=%3.2e", $time, n3,n3,n3,n3);
|
||||
$display("[%0t] f=%f f1=%1e f30=%3.0e f32=%3.2e", $time, n3,n3,n3,n3);
|
||||
$display("[%0t] g=%g g1=%1e g30=%3.0e g32=%3.2e", $time, n3,n3,n3,n3);
|
||||
$display("[%0t] e=%e e1=%1e e30=%3.0e e32=%3.2e p=%p", $time, n3,n3,n3,n3,n3);
|
||||
$display("[%0t] f=%f f1=%1e f30=%3.0e f32=%3.2e p=%p", $time, n3,n3,n3,n3,n3);
|
||||
$display("[%0t] g=%g g1=%1e g30=%3.0e g32=%3.2e p=%p", $time, n3,n3,n3,n3,n3);
|
||||
$display;
|
||||
$display("[%0t] e=%e e1=%1e e30=%3.0e e32=%3.2e", $time, n4,n4,n4,n4);
|
||||
$display("[%0t] f=%f f1=%1e f30=%3.0e f32=%3.2e", $time, n4,n4,n4,n4);
|
||||
$display("[%0t] g=%g g1=%1e g30=%3.0e g32=%3.2e", $time, n4,n4,n4,n4);
|
||||
$display("[%0t] e=%e e1=%1e e30=%3.0e e32=%3.2e p=%p", $time, n4,n4,n4,n4,n4);
|
||||
$display("[%0t] f=%f f1=%1e f30=%3.0e f32=%3.2e p=%p", $time, n4,n4,n4,n4,n4);
|
||||
$display("[%0t] g=%g g1=%1e g30=%3.0e g32=%3.2e p=%p", $time, n4,n4,n4,n4,n4);
|
||||
$display;
|
||||
$display("r8=%d n1=%g n2=%g", r8, n1, n2);
|
||||
$display("n1=%g n2=%g r8=%d", n1, n2, r8);
|
||||
|
@ -1,8 +1,8 @@
|
||||
[0] lp %x=0bbccc %x=0bbccc %o=2736314 %b=010111011110011001100 %0d=769228 %d= 769228
|
||||
[0] ln %x=1bbccc %x=1bbccc %o=6736314 %b=110111011110011001100 %0d=-279348 %d= -279348
|
||||
[0] qp %x=001bbbbcccc %x=001bbbbcccc %o=00067356746314 %b=00000000110111011101110111100110011001100 %0d=7444614348 %d= 7444614348
|
||||
[0] qn %x=101bbbbcccc %x=101bbbbcccc %o=20067356746314 %b=10000000110111011101110111100110011001100 %0d=-1092067013428 %d=-1092067013428
|
||||
[0] wp %x=000bc1234567812345678 %x=000bc1234567812345678 %o=000570110642547402215053170 %b=000000000101111000001001000110100010101100111100000010010001101000101011001111000
|
||||
[0] wn %x=000bc1234577812345678 %x=000bc1234577812345678 %o=000570110642567402215053170 %b=000000000101111000001001000110100010101110111100000010010001101000101011001111000
|
||||
[0] lp %x=0bbccc %x=0bbccc %o=2736314 %b=010111011110011001100 %0d=769228 %d= 769228 %p= 769228 %0p='hbbccc
|
||||
[0] ln %x=1bbccc %x=1bbccc %o=6736314 %b=110111011110011001100 %0d=-279348 %d= -279348 %p=1817804 %0p='h1bbccc
|
||||
[0] qp %x=001bbbbcccc %x=001bbbbcccc %o=00067356746314 %b=00000000110111011101110111100110011001100 %0d=7444614348 %d= 7444614348 %p= 7444614348 %0p='h1bbbbcccc
|
||||
[0] qn %x=101bbbbcccc %x=101bbbbcccc %o=20067356746314 %b=10000000110111011101110111100110011001100 %0d=-1092067013428 %d=-1092067013428 %p=1106956242124 %0p='h101bbbbcccc
|
||||
[0] wp %x=000bc1234567812345678 %x=000bc1234567812345678 %o=000570110642547402215053170 %b=000000000101111000001001000110100010101100111100000010010001101000101011001111000 %p= 3469299654322568844920 %0p='hbc1234567812345678
|
||||
[0] wn %x=000bc1234577812345678 %x=000bc1234577812345678 %o=000570110642567402215053170 %b=000000000101111000001001000110100010101110111100000010010001101000101011001111000 %p= 3469299655422080472696 %0p='hbc1234577812345678
|
||||
|
||||
*-* All Finished *-*
|
||||
|
@ -13,18 +13,18 @@ module t;
|
||||
|
||||
initial begin
|
||||
// Display formatting
|
||||
$display("[%0t] lp %%x=%x %%x=%x %%o=%o %%b=%b %%0d=%0d %%d=%d", $time,
|
||||
longp, longp, longp, longp, longp, longp);
|
||||
$display("[%0t] ln %%x=%x %%x=%x %%o=%o %%b=%b %%0d=%0d %%d=%d", $time,
|
||||
longn, longn, longn, longn, longn, longn);
|
||||
$display("[%0t] qp %%x=%x %%x=%x %%o=%o %%b=%b %%0d=%0d %%d=%d", $time,
|
||||
quadp, quadp, quadp, quadp, quadp, quadp);
|
||||
$display("[%0t] qn %%x=%x %%x=%x %%o=%o %%b=%b %%0d=%0d %%d=%d", $time,
|
||||
quadn, quadn, quadn, quadn, quadn, quadn);
|
||||
$display("[%0t] wp %%x=%x %%x=%x %%o=%o %%b=%b", $time,
|
||||
widep, widep, widep, widep);
|
||||
$display("[%0t] wn %%x=%x %%x=%x %%o=%o %%b=%b", $time,
|
||||
widen, widen, widen, widen);
|
||||
$display("[%0t] lp %%x=%x %%x=%x %%o=%o %%b=%b %%0d=%0d %%d=%d %%p=%p %%0p=%0p",
|
||||
$time, longp, longp, longp, longp, longp, longp, longp, longp);
|
||||
$display("[%0t] ln %%x=%x %%x=%x %%o=%o %%b=%b %%0d=%0d %%d=%d %%p=%p %%0p=%0p",
|
||||
$time, longn, longn, longn, longn, longn, longn, longn, longn);
|
||||
$display("[%0t] qp %%x=%x %%x=%x %%o=%o %%b=%b %%0d=%0d %%d=%d %%p=%p %%0p=%0p",
|
||||
$time, quadp, quadp, quadp, quadp, quadp, quadp, quadp, quadp);
|
||||
$display("[%0t] qn %%x=%x %%x=%x %%o=%o %%b=%b %%0d=%0d %%d=%d %%p=%p %%0p=%0p",
|
||||
$time, quadn, quadn, quadn, quadn, quadn, quadn, quadn, quadn);
|
||||
$display("[%0t] wp %%x=%x %%x=%x %%o=%o %%b=%b %%p=%p %%0p=%0p",
|
||||
$time, widep, widep, widep, widep, widep, widep);
|
||||
$display("[%0t] wn %%x=%x %%x=%x %%o=%o %%b=%b %%p=%p %%0p=%0p",
|
||||
$time, widen, widen, widen, widen, widen, widen);
|
||||
$display;
|
||||
$write("*-* All Finished *-*\n");
|
||||
$finish;
|
||||
|
@ -1,3 +1,3 @@
|
||||
default: [0.000] 0t time [ 0.000] No0 time
|
||||
default: [10.000] 0t time [ 10.000] No0 time p= 10000 0p='h2710
|
||||
|
||||
*-* All Finished *-*
|
||||
|
@ -5,23 +5,35 @@
|
||||
|
||||
`timescale 1ns/1ns
|
||||
|
||||
module t;
|
||||
initial begin
|
||||
// Display formatting
|
||||
$write; // Check missing arguments work
|
||||
$write("default: [%0t] 0t time [%t] No0 time\n",$time,$time);
|
||||
module t (/*AUTOARG*/
|
||||
// Inputs
|
||||
clk
|
||||
);
|
||||
input clk;
|
||||
|
||||
always @ (posedge clk) begin
|
||||
if ($time >= 10) begin
|
||||
// Display formatting
|
||||
$write; // Check missing arguments work
|
||||
$write("default: [%0t] 0t time [%t] No0 time p=%p 0p=%0p\n",
|
||||
$time, $time, $time, $time);
|
||||
`ifndef verilator // Unsupported
|
||||
$timeformat(-9, 0, "", 0);
|
||||
$write("-9,0,,0: [%0t] 0t time [%t] No0 time\n",$time,$time);
|
||||
$timeformat(-9, 0, "", 10);
|
||||
$write("-9,0,,10: [%0t] 0t time [%t] No0 time\n",$time,$time);
|
||||
$timeformat(-9, 0, "ns", 5);
|
||||
$write("-9,0,ns,5: [%0t] 0t time [%t] No0 time\n",$time,$time);
|
||||
$timeformat(-9, 3, "ns", 8);
|
||||
$write("-9,3,ns,8: [%0t] 0t time [%t] No0 time\n",$time,$time);
|
||||
$timeformat(-9, 0, "", 0);
|
||||
$write("-9,0,,0: [%0t] 0t time [%t] No0 time p=%p 0p=%0p\n",
|
||||
$time, $time, $time, $time);
|
||||
$timeformat(-9, 0, "", 10);
|
||||
$write("-9,0,,10: [%0t] 0t time [%t] No0 time p=%p 0p=%0p\n",
|
||||
$time, $time, $time, $time);
|
||||
$timeformat(-9, 0, "ns", 5);
|
||||
$write("-9,0,ns,5: [%0t] 0t time [%t] No0 time p=%p 0p=%0p\n",
|
||||
$time, $time, $time, $time);
|
||||
$timeformat(-9, 3, "ns", 8);
|
||||
$write("-9,3,ns,8: [%0t] 0t time [%t] No0 time p=%p 0p=%0p\n",
|
||||
$time, $time, $time, $time);
|
||||
`endif
|
||||
$write("\n");
|
||||
$write("*-* All Finished *-*\n");
|
||||
$finish;
|
||||
$write("\n");
|
||||
$write("*-* All Finished *-*\n");
|
||||
$finish;
|
||||
end
|
||||
end
|
||||
endmodule
|
||||
|
Loading…
Reference in New Issue
Block a user