From 00cedf3797d3e6bd0ed215785f58e33a7dd299bb Mon Sep 17 00:00:00 2001 From: Yutetsu TAKATSUKASA Date: Tue, 11 May 2021 22:27:31 +0900 Subject: [PATCH] Tests: Add a test to check if there is overflow or rounding (#2945) --- test_regress/t/t_time_vpi.v | 3 +++ test_regress/t/t_time_vpi_100s10ms.out | 2 ++ test_regress/t/t_time_vpi_10ms10ns.out | 2 ++ test_regress/t/t_time_vpi_1fs1fs.out | 2 ++ test_regress/t/t_time_vpi_1ms10ns.out | 2 ++ test_regress/t/t_time_vpi_1ns1ns.out | 2 ++ test_regress/t/t_time_vpi_1ps1fs.out | 2 ++ test_regress/t/t_time_vpi_1s10ns.out | 2 ++ test_regress/t/t_time_vpi_1us1ns.out | 2 ++ 9 files changed, 19 insertions(+) diff --git a/test_regress/t/t_time_vpi.v b/test_regress/t/t_time_vpi.v index 84496b256..f1178d444 100644 --- a/test_regress/t/t_time_vpi.v +++ b/test_regress/t/t_time_vpi.v @@ -18,6 +18,7 @@ module t (/*AUTOARG*/ // verilator lint_off REALCVT time digits = 5432109876.543210ns; // Will round to time units realtime rdigits = 5432109876.543210ns; // Will round to time precision + time high_acc = 64'd12345678901234567890; // Would lose accuracy if calculated in double // verilator lint_on REALCVT always @ (posedge clk) begin @@ -31,10 +32,12 @@ module t (/*AUTOARG*/ $write("[%0t] time%%0d=%0d 123%%0t=%0t\n", $time, $time, 123); $write(" dig%%0t=%0t dig%%0d=%0d\n", digits, digits); $write(" rdig%%0t=%0t rdig%%0f=%0f\n", rdigits, rdigits); + $write(" acc%%0t=%0t acc%%0d=%0d\n", high_acc, high_acc); $timeformat(-9, 6, "ns", 16); $write("[%0t] time%%0d=%0d 123%%0t=%0t\n", $time, $time, 123); $write(" dig%%0t=%0t dig%%0d=%0d\n", digits, digits); $write(" rdig%%0t=%0t rdig%%0f=%0f\n", rdigits, rdigits); + $write(" acc%%0t=%0t acc%%0d=%0d\n", high_acc, high_acc); $write("[%0t] stime%%0t=%0t stime%%0d=%0d stime%%0f=%0f\n", $time, $stime, $stime, $stime); // verilator lint_off REALCVT diff --git a/test_regress/t/t_time_vpi_100s10ms.out b/test_regress/t/t_time_vpi_100s10ms.out index 7cb4c886d..c581dbf6c 100644 --- a/test_regress/t/t_time_vpi_100s10ms.out +++ b/test_regress/t/t_time_vpi_100s10ms.out @@ -3,9 +3,11 @@ Time scale of t is 100s / 10ms [100000000] time%0d=10000 123%0t=1230000 dig%0t=0 dig%0d=0 rdig%0t=543 rdig%0f=0.054321 + acc%0t=11177671081359484928 acc%0d=12345678901234567890 [1000000000000000.000000ns] time%0d=10000 123%0t=12300000000000.000000ns dig%0t=0.000000ns dig%0d=0 rdig%0t=5432109876.543210ns rdig%0f=0.054321 + acc%0t=111776710813594856498135040.000000ns acc%0d=12345678901234567890 [1000000000000000.000000ns] stime%0t=1000000000000000.000000ns stime%0d=10000 stime%0f=10000.000000 [1000000000000000.000000ns] rtime%0t=1000000000000000.000000ns rtime%0d=10000 rtime%0f=10000.000000 global vpiSimTime = 0,100000000 vpiScaledRealTime = 1e+08 diff --git a/test_regress/t/t_time_vpi_10ms10ns.out b/test_regress/t/t_time_vpi_10ms10ns.out index faa888180..4b7180883 100644 --- a/test_regress/t/t_time_vpi_10ms10ns.out +++ b/test_regress/t/t_time_vpi_10ms10ns.out @@ -3,9 +3,11 @@ Time scale of t is 10ms / 10ns [60000000] time%0d=60 123%0t=123000000 dig%0t=543000000 dig%0d=543 rdig%0t=543210988 rdig%0f=543.210988 + acc%0t=10962463713375475712 acc%0d=12345678901234567890 [600000000.000000ns] time%0d=60 123%0t=1230000000.000000ns dig%0t=5430000000.000000ns dig%0d=543 rdig%0t=5432109876.543210ns rdig%0f=543.210988 + acc%0t=109624637133754744832.000000ns acc%0d=12345678901234567890 [600000000.000000ns] stime%0t=600000000.000000ns stime%0d=60 stime%0f=60.000000 [600000000.000000ns] rtime%0t=600000000.000000ns rtime%0d=60 rtime%0f=60.000000 global vpiSimTime = 0,60000000 vpiScaledRealTime = 6e+07 diff --git a/test_regress/t/t_time_vpi_1fs1fs.out b/test_regress/t/t_time_vpi_1fs1fs.out index 680d87168..612a7023b 100644 --- a/test_regress/t/t_time_vpi_1fs1fs.out +++ b/test_regress/t/t_time_vpi_1fs1fs.out @@ -3,9 +3,11 @@ Time scale of t is 1fs / 1fs [60] time%0d=60 123%0t=123 dig%0t=5432109876543210 dig%0d=5432109876543210 rdig%0t=5432109876543210 rdig%0f=5432109876543210.000000 + acc%0t=12345678901234567168 acc%0d=12345678901234567890 [0.000060ns] time%0d=60 123%0t=0.000123ns dig%0t=5432109876.543210ns dig%0d=5432109876543210 rdig%0t=5432109876.543210ns rdig%0f=5432109876543210.000000 + acc%0t=12345678901234.566406ns acc%0d=12345678901234567890 [0.000060ns] stime%0t=0.000060ns stime%0d=60 stime%0f=60.000000 [0.000060ns] rtime%0t=0.000060ns rtime%0d=60 rtime%0f=60.000000 global vpiSimTime = 0,60 vpiScaledRealTime = 60 diff --git a/test_regress/t/t_time_vpi_1ms10ns.out b/test_regress/t/t_time_vpi_1ms10ns.out index 5c279c04b..a6e35ad26 100644 --- a/test_regress/t/t_time_vpi_1ms10ns.out +++ b/test_regress/t/t_time_vpi_1ms10ns.out @@ -3,9 +3,11 @@ Time scale of t is 1ms / 10ns [6000000] time%0d=60 123%0t=12300000 dig%0t=543200000 dig%0d=5432 rdig%0t=543210988 rdig%0f=5432.109877 + acc%0t=1096246371337547520 acc%0d=12345678901234567890 [60000000.000000ns] time%0d=60 123%0t=123000000.000000ns dig%0t=5432000000.000000ns dig%0d=5432 rdig%0t=5432109876.543210ns rdig%0f=5432.109877 + acc%0t=10962463713375473664.000000ns acc%0d=12345678901234567890 [60000000.000000ns] stime%0t=60000000.000000ns stime%0d=60 stime%0f=60.000000 [60000000.000000ns] rtime%0t=60000000.000000ns rtime%0d=60 rtime%0f=60.000000 global vpiSimTime = 0,6000000 vpiScaledRealTime = 6e+06 diff --git a/test_regress/t/t_time_vpi_1ns1ns.out b/test_regress/t/t_time_vpi_1ns1ns.out index 83c8cd9f6..05e68341c 100644 --- a/test_regress/t/t_time_vpi_1ns1ns.out +++ b/test_regress/t/t_time_vpi_1ns1ns.out @@ -3,9 +3,11 @@ Time scale of t is 1ns / 1ns [60] time%0d=60 123%0t=123 dig%0t=5432109877 dig%0d=5432109877 rdig%0t=5432109877 rdig%0f=5432109876.543210 + acc%0t=12345678901234567168 acc%0d=12345678901234567890 [60.000000ns] time%0d=60 123%0t=123.000000ns dig%0t=5432109877.000000ns dig%0d=5432109877 rdig%0t=5432109876.543210ns rdig%0f=5432109876.543210 + acc%0t=12345678901234565120.000000ns acc%0d=12345678901234567890 [60.000000ns] stime%0t=60.000000ns stime%0d=60 stime%0f=60.000000 [60.000000ns] rtime%0t=60.000000ns rtime%0d=60 rtime%0f=60.000000 global vpiSimTime = 0,60 vpiScaledRealTime = 60 diff --git a/test_regress/t/t_time_vpi_1ps1fs.out b/test_regress/t/t_time_vpi_1ps1fs.out index bd62df6af..35ab855e0 100644 --- a/test_regress/t/t_time_vpi_1ps1fs.out +++ b/test_regress/t/t_time_vpi_1ps1fs.out @@ -3,9 +3,11 @@ Time scale of t is 1ps / 1fs [60000] time%0d=60 123%0t=123000 dig%0t=5432109876543000 dig%0d=5432109876543 rdig%0t=5432109876543209 rdig%0f=5432109876543.209961 + acc%0t=4807115922877858816 acc%0d=12345678901234567890 [0.060000ns] time%0d=60 123%0t=0.123000ns dig%0t=5432109876.543000ns dig%0d=5432109876543 rdig%0t=5432109876.543209ns rdig%0f=5432109876543.209961 + acc%0t=4807115922877.858398ns acc%0d=12345678901234567890 [0.060000ns] stime%0t=0.060000ns stime%0d=60 stime%0f=60.000000 [0.060000ns] rtime%0t=0.060000ns rtime%0d=60 rtime%0f=60.000000 global vpiSimTime = 0,60000 vpiScaledRealTime = 60000 diff --git a/test_regress/t/t_time_vpi_1s10ns.out b/test_regress/t/t_time_vpi_1s10ns.out index 15d1750a9..f9a17a8f8 100644 --- a/test_regress/t/t_time_vpi_1s10ns.out +++ b/test_regress/t/t_time_vpi_1s10ns.out @@ -3,9 +3,11 @@ Time scale of t is 1s / 10ns [6000000000] time%0d=60 123%0t=12300000000 dig%0t=500000000 dig%0d=5 rdig%0t=543210988 rdig%0f=5.432110 + acc%0t=7888470988684038144 acc%0d=12345678901234567890 [60000000000.000000ns] time%0d=60 123%0t=123000000000.000000ns dig%0t=5000000000.000000ns dig%0d=5 rdig%0t=5432109876.543210ns rdig%0f=5.432110 + acc%0t=78884709886840389632.000000ns acc%0d=12345678901234567890 [60000000000.000000ns] stime%0t=60000000000.000000ns stime%0d=60 stime%0f=60.000000 [60000000000.000000ns] rtime%0t=60000000000.000000ns rtime%0d=60 rtime%0f=60.000000 global vpiSimTime = 1,1705032704 vpiScaledRealTime = 6e+09 diff --git a/test_regress/t/t_time_vpi_1us1ns.out b/test_regress/t/t_time_vpi_1us1ns.out index e6b5dd50b..4c2c152d0 100644 --- a/test_regress/t/t_time_vpi_1us1ns.out +++ b/test_regress/t/t_time_vpi_1us1ns.out @@ -3,9 +3,11 @@ Time scale of t is 1us / 1ns [60000] time%0d=60 123%0t=123000 dig%0t=5432110000 dig%0d=5432110 rdig%0t=5432109877 rdig%0f=5432109.876543 + acc%0t=4807115922877858816 acc%0d=12345678901234567890 [60000.000000ns] time%0d=60 123%0t=123000.000000ns dig%0t=5432110000.000000ns dig%0d=5432110 rdig%0t=5432109876.543209ns rdig%0f=5432109.876543 + acc%0t=4807115922877858816.000000ns acc%0d=12345678901234567890 [60000.000000ns] stime%0t=60000.000000ns stime%0d=60 stime%0f=60.000000 [60000.000000ns] rtime%0t=60000.000000ns rtime%0d=60 rtime%0f=60.000000 global vpiSimTime = 0,60000 vpiScaledRealTime = 60000