diff options
author | Tristan Gingold | 2013-12-18 05:53:22 +0100 |
---|---|---|
committer | Tristan Gingold | 2013-12-18 05:53:22 +0100 |
commit | bd4aff0f670351c0652cf24e9b04361dc0e3a01c (patch) | |
tree | afcc1050ac74fc64b5756e2550bc32ea61d1e7bb /testsuite/gna/bug7751/7751_tests.vhd | |
parent | 5fde24d46fae799e6c0723850097a8fccd64d747 (diff) | |
download | ghdl-bd4aff0f670351c0652cf24e9b04361dc0e3a01c.tar.gz ghdl-bd4aff0f670351c0652cf24e9b04361dc0e3a01c.tar.bz2 ghdl-bd4aff0f670351c0652cf24e9b04361dc0e3a01c.zip |
Add initial testsuite, using regression tests from bugs or support
reported on gna.org
Diffstat (limited to 'testsuite/gna/bug7751/7751_tests.vhd')
-rw-r--r-- | testsuite/gna/bug7751/7751_tests.vhd | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/testsuite/gna/bug7751/7751_tests.vhd b/testsuite/gna/bug7751/7751_tests.vhd new file mode 100644 index 0000000..8feebc0 --- /dev/null +++ b/testsuite/gna/bug7751/7751_tests.vhd @@ -0,0 +1,119 @@ +entity top is +end top; + +architecture sim of top is + +-------------- static value ---------------------- + + -- static value : enumeration + constant boolstr : string := "false"; + constant off : boolean := boolean'value("FALSE"); + -- static value : integer + constant numstr : string := "5"; + -- static value : float + constant fpstr1 : string := "123.4567"; + constant fpstr2 : string := "123.4567e-3"; + constant fpstr3 : string := "-123.4567e4"; + + constant fp0 : real := real'value("123.4567"); + constant fp1 : real := real'value(fpstr1); + constant fp2 : real := real'value(fpstr2); + constant fp3 : real := real'value(fpstr3); + + -- static value : physical + constant t_val_static : time := time'value("123 ns"); + +-------------- static image ---------------------- + + -- static image : enumeration + constant bool_img1 : string := boolean'image(False); + constant bool_img2 : string := boolean'image(True); + + -- static image : integer + constant int_img : string := integer'image(123); + + -- static image : float + constant fpimg0 : string := real'image(fp0); + constant fpimg1 : string := real'image(fp1); + constant fpimg2 : string := real'image(fp2); + constant fpimg3 : string := real'image(fp3); + + constant t_img_static : string := time'image(456 ps); + -- physical types always evaluated at runtime... + +-------------- runtime value ---------------------- + -- runtime integer + signal my_int : integer := 5; + signal my_str1 : string(1 to 1) := "5"; + -- runtime boolean + signal my_bool : boolean := true; + + -- runtime float + signal my_flt : real := 0.0; + +-------------- runtime image ---------------------- + -- runtime(signal) physical + signal t : time := time'value("789 US"); + + function t_img (t : time) return string is + begin + return time'image(t); + end t_img; + + +begin +-- Value tests : static enumeration expressions. + Assert boolean'value("FALSE") report "Bool Assertion triggered" severity NOTE; + Assert boolean'value(boolstr) report "Bool Assertion triggered" severity NOTE; +-- Value tests : static integer expressions. + Assert 2 + 2 = natural'value("5") report "Integer Assertion triggered" severity NOTE; + Assert 2 + 2 = natural'value(numstr) report "Integer Assertion triggered" severity NOTE; +-- Value tests : static real expressions. + Assert false report "real'value(""123.4567"" = " & real'image(fp0) severity NOTE; +-- Value tests : static physical expressions. Use time and at least one other phys unit. + Assert false report "123 ns is " & time'image(t_val_static) severity note; +-- To check compiler error diagnosis, uncomment these. +-- Assert boolean'value(79) report "Assertion triggered" severity NOTE; +-- Assert boolean'value(False) report "Assertion triggered" severity NOTE; +-- Assert boolean'value("SILLY") report "Assertion triggered" severity NOTE; + + +-- Image tests : static enumeration expressions. + Assert false report "Boolean can be " & boolean'image(True) & " or " & boolean'image(False) severity Note; + Assert false report "Static Boolean can be " & bool_img1 & " or " & bool_img2 severity Note; +-- Image tests : static integer expressions. + Assert false report "Integer image of 123 is " & int_img severity note; +-- Image tests : static real expressions. + Assert false report "123.4567" & " = " & fpimg0 severity note; + Assert false report "123.4567" & " = " & real'image(fp0) severity note; + Assert false report "124.4567" & " = " & real'image(fp0 + 1.0) severity note; + -- These assert despite nominally equal values. + Assert fp0 = real'value(fpimg0) report "123.4567" & " = " & fpimg0 severity note; + Assert fp1 = real'value(fpimg1) report fpstr1 & " = " & fpimg1 severity note; + Assert fp2 = real'value(fpimg2) report fpstr2 & " = " & fpimg2 severity note; + Assert fp3 = real'value(fpimg3) report fpstr3 & " = " & fpimg3 severity note; + -- So verify that the differences are not actually 0 + Assert false report "fp0 - real'value(fpimg0) = " & real'image(fp0 - real'value(fpimg0)) severity note; + Assert false report "fp1 - real'value(fpimg1) = " & real'image(fp1 - real'value(fpimg1)) severity note; + Assert false report "fp2 - real'value(fpimg2) = " & real'image(fp2 - real'value(fpimg2)) severity note; + Assert false report "fp3 - real'value(fpimg3) = " & real'image(fp3 - real'value(fpimg3)) severity note; + -- Image tests : static physical expressions + Assert false report "456 ps is " & t_img_static severity note; + +-- Value tests : runtime expressions + Assert boolean'value("FALSE") report "Assertion triggered" severity NOTE; + Assert boolean'value(boolstr) report "Assertion triggered" severity NOTE; + Assert my_bool report "Boolean my_bool = " & boolean'image(my_bool) severity NOTE; + + my_str1(1) <= '6' after 1 ns, '4' after 2 ns; + my_flt <= fp0 after 3 ns; + my_bool <= False after 4 ns; + Assert my_flt = 0.0 report "my_flt = " & real'image(my_flt) severity note; + Assert 2 + 2 = natural'value(my_str1) report "RT Assertion 1 triggered" severity NOTE; + Assert 2 + 2 /= natural'value(my_str1) report "RT Assertion 2 triggered" severity NOTE; + Assert my_bool report "Boolean my_bool = " & boolean'image(my_bool) severity NOTE; + +-- Image tests : runtime physical expressions. + Assert false report "Time " & t_img(123 us) severity note; + +end sim; |