Library of reusable VHDL components
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

190 lines
5.5 KiB

  1. -- Copyright (c) 2014 - 2022 by Torsten Meissner
  2. --
  3. -- Licensed under the Apache License, Version 2.0 (the "License");
  4. -- you may not use this file except in compliance with the License.
  5. -- You may obtain a copy of the License at
  6. --
  7. -- https://www.apache.org/licenses/LICENSE-2.0
  8. --
  9. -- Unless required by applicable law or agreed to in writing, software
  10. -- distributed under the License is distributed on an "AS IS" BASIS,
  11. -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. -- See the License for the specific language governing permissions and
  13. -- limitations under the License.
  14. library ieee;
  15. use ieee.std_logic_1164.all;
  16. --+ including vhdl 2008 libraries
  17. --+ These lines can be commented out when using
  18. --+ a simulator with built-in VHDL 2008 support
  19. --library ieee_proposed;
  20. -- use ieee_proposed.standard_additions.all;
  21. -- use ieee_proposed.std_logic_1164_additions.all;
  22. package AssertP is
  23. procedure assert_true ( a : in boolean;
  24. str : in string := "a should be evaluate to true";
  25. level : in severity_level := failure);
  26. procedure assert_false ( a : in boolean;
  27. str : in string := "a should be evaluate to false";
  28. level : in severity_level := failure);
  29. procedure assert_equal (a, b : in integer;
  30. str : in string := "";
  31. level : in severity_level := failure);
  32. procedure assert_equal ( a, b : in std_logic_vector;
  33. str : in string := "";
  34. level : in severity_level := failure);
  35. procedure assert_equal ( a, b : in string;
  36. str : in string := "";
  37. level : in severity_level := failure);
  38. procedure assert_unequal (a, b : in integer;
  39. str : in string := "";
  40. level : in severity_level := failure);
  41. procedure assert_unequal ( a, b : in std_logic_vector;
  42. str : in string := "";
  43. level : in severity_level := failure);
  44. procedure assert_unequal ( a, b : in string;
  45. str : in string := "";
  46. level : in severity_level := failure);
  47. end package AssertP;
  48. package body AssertP is
  49. procedure assert_true ( a : in boolean;
  50. str : in string := "a should be evaluate to true";
  51. level : in severity_level := failure) is
  52. begin
  53. assert a
  54. report str
  55. severity level;
  56. end procedure assert_true;
  57. procedure assert_false ( a : in boolean;
  58. str : in string := "a should be evaluate to false";
  59. level : in severity_level := failure) is
  60. begin
  61. assert not(a)
  62. report str
  63. severity level;
  64. end procedure assert_false;
  65. procedure assert_equal ( a, b : in integer;
  66. str : in string := "";
  67. level : in severity_level := failure) is
  68. begin
  69. if (str'length = 0) then
  70. assert a = b
  71. report to_string(a) & " should be equal to " & integer'image(b)
  72. severity level;
  73. else
  74. assert a = b
  75. report str
  76. severity level;
  77. end if;
  78. end procedure assert_equal;
  79. procedure assert_equal ( a, b : in std_logic_vector;
  80. str : in string := "";
  81. level : in severity_level := failure) is
  82. begin
  83. if (str'length = 0) then
  84. assert a = b
  85. report "FAILURE: 0x" & to_hstring(a) & " should be equal to 0x" & to_hstring(b)
  86. severity level;
  87. else
  88. assert a = b
  89. report str
  90. severity level;
  91. end if;
  92. end procedure assert_equal;
  93. procedure assert_equal ( a,b : in string;
  94. str : in string := "";
  95. level : in severity_level := failure) is
  96. begin
  97. if (str'length = 0) then
  98. assert a = b
  99. report "FAILURE: " & a & " should be equal to " & b
  100. severity level;
  101. else
  102. assert a = b
  103. report str
  104. severity level;
  105. end if;
  106. end procedure assert_equal;
  107. procedure assert_unequal ( a, b : in integer;
  108. str : in string := "";
  109. level : in severity_level := failure) is
  110. begin
  111. if (str'length = 0) then
  112. assert a /= b
  113. report to_string(a) & " should not be equal to " & integer'image(b)
  114. severity level;
  115. else
  116. assert a /= b
  117. report str
  118. severity level;
  119. end if;
  120. end procedure assert_unequal;
  121. procedure assert_unequal ( a, b : in std_logic_vector;
  122. str : in string := "";
  123. level : in severity_level := failure) is
  124. begin
  125. if (str'length = 0) then
  126. assert a /= b
  127. report "FAILURE: " & to_hstring(a) & " should not be equal to " & to_hstring(b)
  128. severity level;
  129. else
  130. assert a /= b
  131. report str
  132. severity level;
  133. end if;
  134. end procedure assert_unequal;
  135. procedure assert_unequal ( a,b : in string;
  136. str : in string := "";
  137. level : in severity_level := failure) is
  138. begin
  139. if (str'length = 0) then
  140. assert a /= b
  141. report "FAILURE: " & a & " should not be equal to " & b
  142. severity level;
  143. else
  144. assert a /= b
  145. report str
  146. severity level;
  147. end if;
  148. end procedure assert_unequal;
  149. end package body AssertP;