Advertisement
lasthunter657

Untitled

Dec 22nd, 2021
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.63 KB | None | 0 0
  1. LIBRARY ieee;
  2. USE ieee.std_logic_1164.ALL;
  3. USE ieee.numeric_std.ALL;
  4. USE STD.textio.ALL;
  5. USE ieee.std_logic_textio.ALL;
  6.  
  7. ENTITY example_file_io_tb IS
  8.  
  9. END example_file_io_tb;
  10. ARCHITECTURE behave OF example_file_io_tb IS
  11.  
  12. -----------------------------------------------------------------------------
  13. -- Declare the Component Under Test
  14. -----------------------------------------------------------------------------
  15. COMPONENT ripple_carry_adder IS
  16. GENERIC (
  17. g_WIDTH : NATURAL);
  18. PORT (
  19. i_add_term1 : IN STD_LOGIC_VECTOR(g_WIDTH - 1 DOWNTO 0);
  20. i_add_term2 : IN STD_LOGIC_VECTOR(g_WIDTH - 1 DOWNTO 0);
  21. o_result : OUT STD_LOGIC_VECTOR(g_WIDTH DOWNTO 0)
  22. );
  23. END COMPONENT;
  24.  
  25. -----------------------------------------------------------------------------
  26. -- Testbench Internal Signals
  27. -----------------------------------------------------------------------------
  28. FILE file_VECTORS : text;
  29. FILE file_RESULTS : text;
  30. CONSTANT c_width : NATURAL := 4;
  31. SIGNAL r_ADD_TERM1 : STD_LOGIC_VECTOR(c_width - 1 DOWNTO 0) := (OTHERS => '0');
  32. SIGNAL r_ADD_TERM2 : STD_LOGIC_VECTOR(c_width - 1 DOWNTO 0) := (OTHERS => '0');
  33. SIGNAL w_SUM : STD_LOGIC_VECTOR(c_width DOWNTO 0);
  34.  
  35. BEGIN
  36.  
  37. -----------------------------------------------------------------------------
  38. -- Instantiate and Map UUT
  39. -----------------------------------------------------------------------------
  40. MODULE_RIPPLE_CARRY_ADDER_INST : ripple_carry_adder
  41. GENERIC MAP(
  42. g_WIDTH => c_WIDTH)
  43. PORT MAP(
  44. i_add_term1 => r_ADD_TERM1,
  45. i_add_term2 => r_ADD_TERM2,
  46. o_result => w_SUM
  47. );
  48.  
  49. PROCESS
  50. VARIABLE v_ILINE : line;
  51. VARIABLE v_OLINE : line;
  52. VARIABLE v_ADD_TERM1 : STD_LOGIC_VECTOR(c_WIDTH - 1 DOWNTO 0);
  53. VARIABLE v_ADD_TERM2 : STD_LOGIC_VECTOR(c_WIDTH - 1 DOWNTO 0);
  54. VARIABLE v_SPACE : CHARACTER;
  55.  
  56. BEGIN
  57. file_open(file_VECTORS, "D:\UNI\ITCE211\Codes\textio2\input_vectors.txt", read_mode);
  58. file_open(file_RESULTS, "D:\UNI\ITCE211\Codes\textio2\output_results.txt", write_mode);
  59.  
  60. WHILE NOT endfile(file_VECTORS) LOOP
  61. readline(file_VECTORS, v_ILINE);
  62. read(v_ILINE, v_ADD_TERM1);
  63. read(v_ILINE, v_SPACE); -- read in the space character
  64. read(v_ILINE, v_ADD_TERM2);
  65.  
  66. -- Pass the variable to a signal to allow the ripple-carry to use it
  67. r_ADD_TERM1 <= v_ADD_TERM1;
  68. r_ADD_TERM2 <= v_ADD_TERM2;
  69.  
  70. WAIT FOR 60 ns;
  71.  
  72. write(v_OLINE, w_SUM, right, c_WIDTH);
  73. writeline(file_RESULTS, v_OLINE);
  74. END LOOP;
  75.  
  76. file_close(file_VECTORS);
  77. file_close(file_RESULTS);
  78.  
  79. WAIT;
  80. END PROCESS;
  81.  
  82. END behave;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement