URL
https://opencores.org/ocsvn/open_hitter/open_hitter/trunk
Subversion Repositories open_hitter
Compare Revisions
- This comparison shows the changes necessary to convert path
/open_hitter/trunk/bench/vhdl
- from Rev 16 to Rev 17
- ↔ Reverse comparison
Rev 16 → Rev 17
/search_item_wrapper.vhd
80,7 → 80,7
b2_id: out std_logic_vector(15 downto 0) -- unique/identifier/counter |
); |
end component; |
for search_item_0: search_item use entity work.search_item; |
-- for search_item_0: search_item use entity work.search_item; |
signal RX_CLK: std_logic; |
-- control flag(s) on the incoming bus |
signal b1_px_valid: std_logic; |
120,6 → 120,7
b2_sec => b2_sec, |
b2_id => b2_id |
); |
|
process |
variable l : line; |
|
180,13 → 181,13
(std_logic_vector'("11100"), std_logic_vector'("000"), test_px, remain_qty, test_sec, test_id) ); -- 7 incoming px (part qty) |
|
begin |
write (l, String'("Exercising search_item")); |
writeline (output, l); |
RX_CLK <= '0'; |
wait for 1 ns; |
write (l, String'("Exercising search_item")); |
writeline (output, l); |
RX_CLK <= '0'; |
wait for 1 ns; |
|
-- Check each pattern. |
for i in input_patterns'range loop |
-- Check each pattern. |
for i in input_patterns'range loop |
-- Set the inputs. |
b1_px_valid <= input_patterns(i).b1_px_valid; |
b1_px_type <= input_patterns(i).b1_px_type; |
199,29 → 200,19
RX_CLK <= '1'; |
wait for 1 ns; |
-- Check the outputs. |
write(l, i); |
writeline (output, l); |
assert b2_px_type = output_patterns(i).b2_px_type report "search_item_wrapper: bad px type" severity error; |
assert b2_buy_sell = output_patterns(i).b2_buy_sell report "search_item_wrapper: bad buy_sell" severity error; |
assert b2_px = output_patterns(i).b2_px report "search_item_wrapper: bad px" severity error; |
assert b2_qty = output_patterns(i).b2_qty report "search_item_wrapper: bad qty" severity error; |
assert b2_sec = output_patterns(i).b2_sec report "search_item_wrapper: bad sec" severity error; |
assert b2_id = output_patterns(i).b2_id report "search_item_wrapper: bad id" severity error; |
assert b2_px_type = output_patterns(i).b2_px_type report "search_item_wrapper: test: " & integer'image(i) & " bad px type" severity error; |
assert b2_buy_sell = output_patterns(i).b2_buy_sell report "search_item_wrapper: test: " & integer'image(i) & " bad buy_sell" severity error; |
assert b2_px = output_patterns(i).b2_px report "search_item_wrapper: test: " & integer'image(i) & " bad px" severity error; |
assert b2_qty = output_patterns(i).b2_qty report "search_item_wrapper: test: " & integer'image(i) & " bad qty" severity error; |
assert b2_sec = output_patterns(i).b2_sec report "search_item_wrapper: test: " & integer'image(i) & " bad sec" severity error; |
assert b2_id = output_patterns(i).b2_id report "search_item_wrapper: test: " & integer'image(i) & " bad id" severity error; |
-- Clock down. |
RX_CLK <= '0'; |
wait for 1 ns; |
b1_px_valid <= '0'; |
RX_CLK <= '1'; |
wait for 1 ns; |
RX_CLK <= '0'; |
wait for 1 ns; |
end loop; |
-- assert false report "end of test" severity note; |
|
write (l, String'("Done search_item")); |
writeline (output, l); |
end loop; |
write (l, String'("Done search_item")); |
writeline (output, l); |
wait; |
end process; |
end behaviour; |
|
wait; |
end process; |
end behaviour; |
|
/search_control_wrapper.vhd
171,32 → 171,38
type input_pattern_array is array (natural range <>) of input_pattern_type; |
constant input_patterns : input_pattern_array := |
( ('1', std_logic_vector'("00000"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec), -- 0 reset |
('0', std_logic_vector'("ZZZZZ"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec), -- 1 nothing |
('1', std_logic_vector'("01010"), std_logic_vector'("000"), test_px, set_qty, test_sec0), -- 2 sec/set |
('1', std_logic_vector'("01010"), std_logic_vector'("000"), test_px, set_qty, test_sec1), -- 3 sec/set |
('1', std_logic_vector'("01010"), std_logic_vector'("111"), test_px, set_qty, test_sec2), -- 4 sec/set |
('1', std_logic_vector'("01010"), std_logic_vector'("000"), test_px, set_qty, test_sec3), -- 5 too many sec/set |
('1', std_logic_vector'("11100"), std_logic_vector'("111"), test_px, test_qty, test_sec1), -- 6 incoming px |
('1', std_logic_vector'("11100"), std_logic_vector'("111"), test_px, zz_qty, other_sec), -- 7 incoming px (wrong security) |
('1', std_logic_vector'("11100"), std_logic_vector'("111"), other_px, test_qty, test_sec1), -- 8 incoming px (too low sale price) |
('1', std_logic_vector'("11100"), std_logic_vector'("111"), test_px, test_qty, test_sec1) ); -- 9 incoming px (part qty) |
('1', std_logic_vector'("01010"), std_logic_vector'("000"), test_px, set_qty, test_sec0), -- 0 pre |
('1', std_logic_vector'("ZZZZZ"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec), -- 1 nothing |
('1', std_logic_vector'("00110"), std_logic_vector'("000"), test_px, set_qty, test_sec0), -- 2 sec/set |
('1', std_logic_vector'("00110"), std_logic_vector'("000"), test_px, set_qty, test_sec1), -- 3 sec/set |
('1', std_logic_vector'("00110"), std_logic_vector'("000"), test_px, set_qty, test_sec1), -- 4 sec/set - repeat |
('1', std_logic_vector'("00110"), std_logic_vector'("111"), test_px, set_qty, test_sec2), -- 5 sec/set |
('1', std_logic_vector'("00110"), std_logic_vector'("000"), test_px, set_qty, test_sec2), -- 6 sec/set - diff buysell |
('1', std_logic_vector'("00110"), std_logic_vector'("000"), test_px, set_qty, test_sec3), -- 7 too many sec/set |
('1', std_logic_vector'("11100"), std_logic_vector'("111"), test_px, test_qty, test_sec1), -- 8 incoming px |
('1', std_logic_vector'("11100"), std_logic_vector'("111"), test_px, zz_qty, other_sec), -- 9 incoming px (wrong security) |
('1', std_logic_vector'("11100"), std_logic_vector'("111"), other_px, test_qty, test_sec1), -- 10incoming px (too low sale price) |
('1', std_logic_vector'("11100"), std_logic_vector'("111"), test_px, test_qty, test_sec1) ); -- 11incoming px (part qty) |
type output_pattern_array is array (natural range <>) of output_pattern_type; |
constant output_patterns : output_pattern_array := |
( (std_logic_vector'("ZZZZZ"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, zz_id), -- 0 reset |
( (std_logic_vector'("00000"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, zz_id), -- 0 reset |
(std_logic_vector'("01010"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, std_logic_vector'(X"0000")), -- 0 pre |
(std_logic_vector'("ZZZZZ"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, zz_id), -- 1 nothing |
(std_logic_vector'("01010"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, std_logic_vector'(X"0001")), -- 2 sec/set |
(std_logic_vector'("01010"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, std_logic_vector'(X"0002")), -- 3 sec/set |
(std_logic_vector'("01010"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, std_logic_vector'(X"0003")), -- 4 sec/set |
(std_logic_vector'("11111"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, zz_id), -- 5 bad sec/set (too many) |
(std_logic_vector'("11100"), std_logic_vector'("000"), test_px, test_qty, test_sec1, test_id), -- 6 incoming px |
(std_logic_vector'("11110"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, zz_id), -- 7 incoming px (wrong security) |
(std_logic_vector'("11101"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, zz_id), -- 8 incoming px (too low sale price) |
(std_logic_vector'("11100"), std_logic_vector'("000"), test_px, remain_qty, test_sec1, test_id) ); -- 9 incoming px (part qty) |
(std_logic_vector'("01010"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, std_logic_vector'(X"0000")), -- 2 sec/set |
(std_logic_vector'("01010"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, std_logic_vector'(X"0001")), -- 3 sec/set |
(std_logic_vector'("00110"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, std_logic_vector'(X"0001")), -- 4 sec/set |
(std_logic_vector'("01010"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, std_logic_vector'(X"0002")), -- 5 sec/set |
(std_logic_vector'("01010"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, std_logic_vector'(X"0003")), -- 6 sec/set |
(std_logic_vector'("11111"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, zz_id), -- 7 bad sec/set (too many) |
(std_logic_vector'("11100"), std_logic_vector'("000"), test_px, test_qty, test_sec1, test_id), -- 8 incoming px |
(std_logic_vector'("11110"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, zz_id), -- 9 incoming px (wrong security) |
(std_logic_vector'("11101"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, zz_id), -- 10incoming px (too low sale price) |
(std_logic_vector'("11100"), std_logic_vector'("000"), test_px, remain_qty, test_sec1, test_id) ); -- 11incoming px (part qty) |
begin |
write (l, String'("Exercising search_control")); |
writeline (output, l); |
RX_CLK <= '0'; |
wait for 1 ns; |
RX_CLK <= '1'; |
wait for 1 us; |
|
-- Check each pattern. |
for i in input_patterns'range loop |
208,36 → 214,33
search_qty_i <= input_patterns(i).search_qty_i; |
search_sec_i <= input_patterns(i).search_sec_i; |
--search_id_i <= input_patterns(i).search_id_i; |
-- Clock once for the results. |
RX_CLK <= '1'; |
wait for 1 ns; |
-- Clock once for the results (falling edge) |
RX_CLK <= '0'; |
wait for 1 us; |
search_px_valid_i <= '0'; |
-- Check the outputs. |
res := 0; |
for r in 0 to 4 loop |
for r in 0 to 3 loop |
if order_px_valid_o = '1' then |
write(l, i); |
writeline (output, l); |
assert order_px_type_o = output_patterns(i).order_px_type_o report "search_control_wrapper: bad px type" severity error; |
assert order_buy_sell_o = output_patterns(i).order_buy_sell_o report "search_control_wrapper: bad buy_sell" severity error; |
assert order_px_o = output_patterns(i).order_px_o report "search_control_wrapper: bad px" severity error; |
assert order_qty_o = output_patterns(i).order_qty_o report "search_control_wrapper: bad qty" severity error; |
assert order_sec_o = output_patterns(i).order_sec_o report "search_control_wrapper: bad sec" severity error; |
assert order_id_o = output_patterns(i).order_id_o report "search_control_wrapper: bad id" severity error; |
assert order_px_type_o = output_patterns(i).order_px_type_o report "search_control_wrapper: test: " & integer'image(i) & " bad px type" severity error; |
assert order_buy_sell_o = output_patterns(i).order_buy_sell_o report "search_control_wrapper: test: " & integer'image(i) & " bad buy_sell" severity error; |
assert order_px_o = output_patterns(i).order_px_o report "search_control_wrapper: test: " & integer'image(i) & " bad px" severity error; |
assert order_qty_o = output_patterns(i).order_qty_o report "search_control_wrapper: test: " & integer'image(i) & " bad qty" severity error; |
assert order_sec_o = output_patterns(i).order_sec_o report "search_control_wrapper: test: " & integer'image(i) & " bad sec" severity error; |
assert order_id_o = output_patterns(i).order_id_o report "search_control_wrapper: test: " & integer'image(i) & " bad id" severity error; |
res := res + 1; |
end if; |
-- Clock down. |
-- Clock up |
RX_CLK <= '1'; |
wait for 1 us; |
RX_CLK <= '0'; |
wait for 1 ns; |
search_px_valid_i <= '0'; |
RX_CLK <= '1'; |
wait for 1 ns; |
wait for 1 us; |
end loop; |
assert res = 1 report "search_control_wrapper: wrong number of results from input pattern message" severity error; |
assert res = 1 report "search_control_wrapper: test: " & integer'image(i) & " wrong number of results from input pattern message" severity error; |
|
RX_CLK <= '0'; |
wait for 1 ns; |
RX_CLK <= '1'; |
wait for 1 us; |
end loop; |
-- assert false report "end of test" severity note; |
|
write (l, String'("Done search_control")); |
writeline (output, l); |
/search_items_wrapper.vhd
0,0 → 1,225
--//////////////////////////////////////////////////////////////////// |
--// //// |
--// search_items_wrapper.vhd //// |
--// //// |
--// This file is part of the open_hitter opencores effort. //// |
--// <http://www.opencores.org/cores/open_hitter/> //// |
--// //// |
--// Module Description: //// |
--// Simulation program (non-synthesizable) //// |
--// Drives auto regression tests via NSEW button actions and //// |
--// NSEW LED reporting //// |
--// target env: ghdl <attrib required> //// |
--// TEST EXTENSION OF SEARCH_ITEM_WRAPPER //// |
--// //// |
--// To Do: //// |
--// //// |
--// Author(s): //// |
--// - Stephen Hawes //// |
--// //// |
--//////////////////////////////////////////////////////////////////// |
--// //// |
--// Copyright (C) 2015 Stephen Hawes and OPENCORES.ORG //// |
--// //// |
--// This source file may be used and distributed without //// |
--// restriction provided that this copyright statement is not //// |
--// removed from the file and that any derivative work contains //// |
--// the original copyright notice and the associated disclaimer. //// |
--// //// |
--// This source file is free software; you can redistribute it //// |
--// and/or modify it under the terms of the GNU Lesser General //// |
--// Public License as published by the Free Software Foundation; //// |
--// either version 2.1 of the License, or (at your option) any //// |
--// later version. //// |
--// //// |
--// This source is distributed in the hope that it will be //// |
--// useful, but WITHOUT ANY WARRANTY; without even the implied //// |
--// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR //// |
--// PURPOSE. See the GNU Lesser General Public License for more //// |
--// details. //// |
--// //// |
--// You should have received a copy of the GNU Lesser General //// |
--// Public License along with this source; if not, download it //// |
--// from <http://www.opencores.org/lgpl.shtml> //// |
--// //// |
--//////////////////////////////////////////////////////////////////// |
--// |
--// \$Id\$ TAKE OUT THE \'s and this comment in order to get this to work |
--// |
--// CVS Revision History |
--// |
--// \$Log\$ TAKE OUT THE \'s and this comment in order to get this to work |
--// |
library ieee; |
use ieee.std_logic_1164.all; |
use ieee.numeric_std.ALL; |
use std.textio.all; -- Imports the standard textio package. |
|
entity search_items_wrapper is |
end search_items_wrapper; |
|
architecture behaviour of search_items_wrapper is |
component search_item |
generic ( item_id: std_logic_vector(15 downto 0) ); |
port ( |
RX_CLK: in std_logic; |
-- control flag(s) on the incoming bus |
b1_px_valid: in std_logic; |
-- pxdata: in price_packet |
b1_px_type: in std_logic_vector(4 downto 0); |
b1_buy_sell: in std_logic_vector(2 downto 0); -- 111 buy, 000 sell |
b1_px: in std_logic_vector(15 downto 0); -- price |
b1_qty: in std_logic_vector(15 downto 0); -- quantity |
b1_sec: in std_logic_vector(55 downto 0); -- 7x 8bits securities identifier |
b1_id: in std_logic_vector(15 downto 0); -- unique/identifier/counter |
-- pxdata: out price_packet |
b2_px_type: out std_logic_vector(4 downto 0); |
b2_buy_sell: out std_logic_vector(2 downto 0); -- 111 buy, 000 sell |
b2_px: out std_logic_vector(15 downto 0); -- price |
b2_qty: out std_logic_vector(15 downto 0); -- quantity |
b2_sec: out std_logic_vector(55 downto 0); -- 7x 8bits securities identifier |
b2_id: out std_logic_vector(15 downto 0) -- unique/identifier/counter |
); |
end component; |
-- for search_item_0: searchs_item use entity work.search_item; |
signal RX_CLK: std_logic; |
-- control flag(s) on the incoming bus |
signal b1_px_valid: std_logic; |
-- pxdata: in price_packet |
signal b1_px_type: std_logic_vector(4 downto 0); |
signal b1_buy_sell: std_logic_vector(2 downto 0); -- 111 buy, 000 sell |
signal b1_px: std_logic_vector(15 downto 0); -- price |
signal b1_qty: std_logic_vector(15 downto 0); -- quantity |
signal b1_sec: std_logic_vector(55 downto 0); -- 7x 8bits securities identifier |
signal b1_id: std_logic_vector(15 downto 0); -- unique/identifier/counter |
-- pxdata: out price_packet |
signal b2_px_type: std_logic_vector(4 downto 0); |
signal b2_buy_sell: std_logic_vector(2 downto 0); -- 111 buy, 000 sell |
signal b2_px: std_logic_vector(15 downto 0); -- price |
signal b2_qty: std_logic_vector(15 downto 0); -- quantity |
signal b2_sec: std_logic_vector(55 downto 0); -- 7x 8bits securities identifier |
signal b2_id: std_logic_vector(15 downto 0); -- unique/identifier/counter |
begin |
items_array : for iter_id in 0 to 5 generate -- searchitems - 1 generate |
begin |
cell_item: entity work.search_item |
-- search_item_0: search_item |
-- generic map ( item_id => std_logic_vector'("0110011001100110") ) |
-- generic map ( item_id => std_logic_vector'(X"0000")) |
generic map ( item_id => std_logic_vector(to_unsigned(iter_id,16)) ) |
port map ( |
RX_CLK => RX_CLK, |
-- control flag(s) on the incoming bus |
b1_px_valid => b1_px_valid, |
-- pxdata: in price_packet |
b1_px_type => b1_px_type, |
b1_buy_sell => b1_buy_sell, |
b1_px => b1_px, |
b1_qty => b1_qty, |
b1_sec => b1_sec, |
b1_id => b1_id, |
-- pxdata: out price_packet |
b2_px_type => b2_px_type, |
b2_buy_sell => b2_buy_sell, |
b2_px => b2_px, |
b2_qty => b2_qty, |
b2_sec => b2_sec, |
b2_id => b2_id |
); |
end generate items_array; |
|
process |
variable l : line; |
|
type input_pattern_type is record |
-- control flag(s) on the incoming bus |
b1_px_valid: std_logic; |
-- pxdata: in price_packet |
b1_px_type: std_logic_vector(4 downto 0); |
b1_buy_sell: std_logic_vector(2 downto 0); -- 111 buy, 000 sell |
b1_px: std_logic_vector(15 downto 0); -- price |
b1_qty: std_logic_vector(15 downto 0); -- quantity |
b1_sec: std_logic_vector(55 downto 0); -- 7x 8bits securities identifier |
b1_id: std_logic_vector(15 downto 0); -- unique/identifier/counter |
end record; |
type output_pattern_type is record |
-- pxdata: out price_packet |
b2_px_type: std_logic_vector(4 downto 0); |
b2_buy_sell: std_logic_vector(2 downto 0); -- 111 buy, 000 sell |
b2_px: std_logic_vector(15 downto 0); -- price |
b2_qty: std_logic_vector(15 downto 0); -- quantity |
b2_sec: std_logic_vector(55 downto 0); -- 7x 8bits securities identifier |
b2_id: std_logic_vector(15 downto 0); -- unique/identifier/counter |
end record; |
|
-- The patterns to apply. |
constant zz_px: std_logic_vector(15 downto 0) := (others => 'Z'); |
constant zz_qty: std_logic_vector(15 downto 0) := (others => 'Z'); |
constant zz_sec: std_logic_vector(55 downto 0) := (others => 'Z'); |
constant zz_id: std_logic_vector(15 downto 0) := (others => 'Z'); |
constant set_qty: std_logic_vector(15 downto 0) := std_logic_vector'("0000000000010000"); |
constant test_px: std_logic_vector(15 downto 0) := std_logic_vector'("0000000011100000"); |
constant test_qty: std_logic_vector(15 downto 0) := std_logic_vector'("0000000000001100"); |
constant remain_qty: std_logic_vector(15 downto 0) := std_logic_vector'("0000000000000100"); |
constant test_sec: std_logic_vector(55 downto 0) := std_logic_vector'(X"ABA543332178DC"); |
constant test_id: std_logic_vector(15 downto 0) := std_logic_vector'(X"0002"); --- std_logic_vector'("0110011001100110"); |
constant other_id: std_logic_vector(15 downto 0) := std_logic_vector'("0000010001100010"); |
constant other_px: std_logic_vector(15 downto 0) := std_logic_vector'("0000000000001110"); |
constant other_sec: std_logic_vector(55 downto 0) := std_logic_vector'(X"CDC423354634AA"); |
type input_pattern_array is array (natural range <>) of input_pattern_type; |
constant input_patterns : input_pattern_array := |
( ('1', std_logic_vector'("00000"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, zz_id), -- 0 reset |
('0', std_logic_vector'("ZZZZZ"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, zz_id), -- 1 nothing |
('1', std_logic_vector'("01010"), std_logic_vector'("000"), test_px, set_qty, test_sec, other_id), -- 2 bad sec/set |
('1', std_logic_vector'("01010"), std_logic_vector'("000"), test_px, set_qty, test_sec, test_id), -- 3 sec/set |
('1', std_logic_vector'("11100"), std_logic_vector'("111"), test_px, test_qty, test_sec, zz_id), -- 4 incoming px |
('1', std_logic_vector'("11100"), std_logic_vector'("111"), test_px, zz_qty, other_sec, zz_id), -- 5 incoming px (wrong security) |
('1', std_logic_vector'("11100"), std_logic_vector'("111"), other_px, test_qty, test_sec, zz_id), -- 6 incoming px (too low sale price) |
('1', std_logic_vector'("11100"), std_logic_vector'("111"), test_px, test_qty, test_sec, zz_id) ); -- 7 incoming px (part qty) |
type output_pattern_array is array (natural range <>) of output_pattern_type; |
constant output_patterns : output_pattern_array := |
( (std_logic_vector'("ZZZZZ"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, zz_id), -- 0 reset |
(std_logic_vector'("ZZZZZ"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, zz_id), -- 1 nothing |
(std_logic_vector'("ZZZZZ"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, zz_id), -- 2 nothing (bad sec/set) |
(std_logic_vector'("01010"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, test_id), -- 3 sec/set |
(std_logic_vector'("11100"), std_logic_vector'("000"), test_px, test_qty, test_sec, test_id), -- 4 incoming px |
(std_logic_vector'("ZZZZZ"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, zz_id), -- 5 incoming px (wrong security) |
(std_logic_vector'("11101"), std_logic_vector'("ZZZ"), zz_px, zz_qty, zz_sec, zz_id), -- 6 incoming px (too low sale price) |
(std_logic_vector'("11100"), std_logic_vector'("000"), test_px, remain_qty, test_sec, test_id) ); -- 7 incoming px (part qty) |
|
begin |
write (l, String'("Exercising search_items")); |
writeline (output, l); |
RX_CLK <= '0'; |
wait for 1 ns; |
|
-- Check each pattern. |
for i in input_patterns'range loop |
-- Set the inputs. |
b1_px_valid <= input_patterns(i).b1_px_valid; |
b1_px_type <= input_patterns(i).b1_px_type; |
b1_buy_sell<= input_patterns(i).b1_buy_sell; |
b1_px <= input_patterns(i).b1_px; |
b1_qty <= input_patterns(i).b1_qty; |
b1_sec <= input_patterns(i).b1_sec; |
b1_id <= input_patterns(i).b1_id; |
-- Clock once for the results. |
RX_CLK <= '1'; |
wait for 1 ns; |
-- Check the outputs. |
assert b2_px_type = output_patterns(i).b2_px_type report "search_item_wrapper: test: " & integer'image(i) & " bad px type" severity error; |
assert b2_buy_sell = output_patterns(i).b2_buy_sell report "search_item_wrapper: test: " & integer'image(i) & " bad buy_sell" severity error; |
assert b2_px = output_patterns(i).b2_px report "search_item_wrapper: test: " & integer'image(i) & " bad px" severity error; |
assert b2_qty = output_patterns(i).b2_qty report "search_item_wrapper: test: " & integer'image(i) & " bad qty" severity error; |
assert b2_sec = output_patterns(i).b2_sec report "search_item_wrapper: test: " & integer'image(i) & " bad sec" severity error; |
assert b2_id = output_patterns(i).b2_id report "search_item_wrapper: test: " & integer'image(i) & " bad id" severity error; |
-- Clock down. |
RX_CLK <= '0'; |
wait for 1 ns; |
end loop; |
write (l, String'("Done search_items")); |
writeline (output, l); |
wait; |
end process; |
end behaviour; |
|
/build.sh
26,7 → 26,12
#ghdl -r hitter_wrapper |
|
ghdl -e search_item_wrapper |
#ghdl -r search_item_wrapper |
ghdl -r search_item_wrapper |
|
ghdl -e search_control_wrapper |
ghdl -r search_control_wrapper |
|
ghdl -a search_items_wrapper.vhd |
ghdl -e search_items_wrapper |
ghdl -r search_items_wrapper |
|