3 use IEEE.std_logic_1164.all;
4 --use ieee.std_logic_unsigned.all;
5 use ieee.std_logic_arith.all;
9 entity testbench_cpu_reg is
10 end testbench_cpu_reg;
12 architecture stimulus of testbench_cpu_reg is
14 generic (dsize : integer := 8);
15 port ( clk, en : in std_logic;
16 d : in std_logic_vector (dsize - 1 downto 0);
17 q : out std_logic_vector (dsize - 1 downto 0)
20 constant interval : time := 15 ns;
21 constant dsize1 : integer := 1;
22 constant dsize8 : integer := 8;
23 constant dsize16 : integer := 16;
24 signal cclk, een : std_logic;
25 signal dd1, qq1 : std_logic_vector (dsize1 - 1 downto 0);
26 signal dd8, qq8 : std_logic_vector (dsize8 - 1 downto 0);
27 signal dd16, qq16 : std_logic_vector (dsize16 - 1 downto 0);
29 dut0 : cpu_reg generic map (dsize1) port map (cclk, een, dd1, qq1);
30 dut1 : cpu_reg generic map (dsize8) port map (cclk, een, dd8, qq8);
31 dut2 : cpu_reg generic map (dsize16) port map (cclk, een, dd16, qq16);
34 variable i : integer := 0;
35 constant loopcnt : integer := 10;
38 for i in 0 to loopcnt * 2 loop
40 wait for interval / 2;
42 wait for interval / 2;
47 variable i : integer := 0;
48 constant loopcnt : integer := 5;
51 wait for interval / 4;
53 for i in 0 to loopcnt loop
54 dd1 <= conv_std_logic_vector(i, dsize1);
55 dd8 <= conv_std_logic_vector(i, dsize8);
56 dd16 <= conv_std_logic_vector(i, dsize16);
57 wait for interval / 4;
62 for i in 0 to loopcnt * 3 loop
63 dd1 <= conv_std_logic_vector(i, dsize1);
64 dd8 <= conv_std_logic_vector(i, dsize8);
65 dd16 <= conv_std_logic_vector(i, dsize16);
66 wait for interval / 3;
69 for i in 0 to loopcnt * 4 loop
70 dd1 <= conv_std_logic_vector(i, dsize1);
71 dd8 <= conv_std_logic_vector(i, dsize8);
72 dd16 <= conv_std_logic_vector(i, dsize16);
73 wait for interval / 4;
76 for i in 0 to loopcnt * 5 loop
77 dd1 <= conv_std_logic_vector(i, dsize1);
78 dd8 <= conv_std_logic_vector(i, dsize8);
79 dd16 <= conv_std_logic_vector(i, dsize16);
80 wait for interval / 5;
83 for i in 0 to loopcnt * 2 loop
84 dd1 <= conv_std_logic_vector(i, dsize1);
85 dd8 <= conv_std_logic_vector(i, dsize8);
86 dd16 <= conv_std_logic_vector(i, dsize16);
90 for i in 0 to loopcnt * 2 loop
91 dd1 <= conv_std_logic_vector(i, dsize1);
92 dd8 <= conv_std_logic_vector(i, dsize8);
93 dd16 <= conv_std_logic_vector(i, dsize16);
94 wait for interval * 2;
99 for i in 0 to loopcnt * 3 loop
100 dd1 <= conv_std_logic_vector(i, dsize1);
101 dd8 <= conv_std_logic_vector(i, dsize8);
102 dd16 <= conv_std_logic_vector(i, dsize16);
103 wait for interval / 3;