summaryrefslogtreecommitdiffstats
path: root/zpu/hdl/zealot/fpga/avnet-eval-xc5vfx30t/top_tb.vhd
diff options
context:
space:
mode:
Diffstat (limited to 'zpu/hdl/zealot/fpga/avnet-eval-xc5vfx30t/top_tb.vhd')
-rw-r--r--zpu/hdl/zealot/fpga/avnet-eval-xc5vfx30t/top_tb.vhd268
1 files changed, 268 insertions, 0 deletions
diff --git a/zpu/hdl/zealot/fpga/avnet-eval-xc5vfx30t/top_tb.vhd b/zpu/hdl/zealot/fpga/avnet-eval-xc5vfx30t/top_tb.vhd
new file mode 100644
index 0000000..0d173e2
--- /dev/null
+++ b/zpu/hdl/zealot/fpga/avnet-eval-xc5vfx30t/top_tb.vhd
@@ -0,0 +1,268 @@
+-- testbench for
+-- Avnet Virtex 5 FX Evaluation Board
+--
+-- includes "model" for clock generation
+-- simulate press on gpio_button(0) (=PB1) as reset
+--
+-- place models for external components (PHY, DDR2-RAM) in this file
+--
+
+
+library ieee;
+use ieee.std_logic_1164.all;
+
+
+entity top_tb is
+end entity top_tb;
+
+architecture testbench of top_tb is
+
+ ---------------------------
+ -- constant declarations
+ constant clk_100MHz_period : time := 1 sec / 100_000_000; -- 100 MHz
+
+
+ ---------------------------
+ -- signal declarations
+ signal simulation_run : boolean := true;
+ signal tb_stop_simulation : std_logic;
+ --
+ signal tb_clk_100MHz : std_logic := '0'; -- 100 MHz clock
+ signal tb_clk_socket : std_logic := '0'; -- user clock
+ signal tb_user_clk_p : std_logic := '0'; -- diff user clock
+ signal tb_user_clk_n : std_logic := '0'; -- diff user clock
+ --
+ -- RS232
+ signal tb_rs232_rx : std_logic := '0';
+ signal tb_rs232_tx : std_logic;
+ signal tb_rs232_rts : std_logic := '0';
+ signal tb_rs232_cts : std_logic;
+ -- RS232 USB
+ signal tb_rs232_usb_rx : std_logic := '0';
+ signal tb_rs232_usb_tx : std_logic;
+ signal tb_rs232_usb_reset_n : std_logic;
+ --
+ signal tb_gpio_led_n : std_logic_vector(7 downto 0);
+ signal tb_gpio_dipswitch : std_logic_vector(7 downto 0) := (others => '0');
+ signal tb_gpio_button : std_logic_vector(3 downto 0) := (others => '0');
+ --
+ -- FLASH 8Mx16
+ signal tb_flash_a : std_logic_vector(31 downto 7);
+ signal tb_flash_dq : std_logic_vector(15 downto 0);
+ signal tb_flash_wen : std_logic;
+ signal tb_flash_oen : std_logic_vector(0 downto 0);
+ signal tb_flash_cen : std_logic_vector(0 downto 0);
+ signal tb_flash_rp_n : std_logic;
+ signal tb_flash_byte_n : std_logic;
+ signal tb_flash_adv_n : std_logic;
+ signal tb_flash_clk : std_logic;
+ signal tb_flash_wait : std_logic := '0';
+ --
+ -- DDR2 SDRAM 16Mx32
+ signal tb_ddr2_odt : std_logic_vector(0 downto 0) := (others => '0');
+ signal tb_ddr2_a : std_logic_vector(12 downto 0);
+ signal tb_ddr2_ba : std_logic_vector(1 downto 0);
+ signal tb_ddr2_cas_n : std_logic;
+ signal tb_ddr2_cke : std_logic;
+ signal tb_ddr2_cs_n : std_logic;
+ signal tb_ddr2_ras_n : std_logic;
+ signal tb_ddr2_we_n : std_logic;
+ signal tb_ddr2_dm : std_logic_vector(3 downto 0);
+ signal tb_ddr2_dqs_p : std_logic_vector(3 downto 0);
+ signal tb_ddr2_dqs_n : std_logic_vector(3 downto 0);
+ signal tb_ddr2_dq : std_logic_vector(31 downto 0);
+ signal tb_ddr2_ck_p : std_logic_vector(1 downto 0) := (others => '0');
+ signal tb_ddr2_ck_n : std_logic_vector(1 downto 0) := (others => '0');
+ --
+ -- Ethernet MAC
+ signal tb_gmii_txer : std_logic;
+ signal tb_gmii_tx_clk : std_logic := '0'; -- 25 MHz
+ signal tb_gmii_rx_clk : std_logic := '0'; -- 25 MHz
+ signal tb_gmii_gtc_clk : std_logic;
+ signal tb_gmii_crs : std_logic := '0';
+ signal tb_gmii_dv : std_logic := '0';
+ signal tb_gmii_rx_data : std_logic_vector(7 downto 0);
+ signal tb_gmii_col : std_logic := '0';
+ signal tb_gmii_rx_er : std_logic := '0';
+ signal tb_gmii_tx_en : std_logic;
+ signal tb_gmii_tx_data : std_logic_vector(7 downto 0);
+ signal tb_gbe_rst_n : std_logic;
+ signal tb_gbe_mdc : std_logic;
+ signal tb_gbe_mdio : std_logic;
+ signal tb_gbe_int_n : std_logic;
+ signal tb_gbe_mclk : std_logic := '0';
+ --
+ -- SysACE CompactFlash
+ signal tb_sam_clk : std_logic := '0';
+ signal tb_sam_a : std_logic_vector(6 downto 0);
+ signal tb_sam_d : std_logic_vector(15 downto 0);
+ signal tb_sam_cen : std_logic;
+ signal tb_sam_oen : std_logic;
+ signal tb_sam_wen : std_logic;
+ signal tb_sam_mpirq : std_logic := '0';
+ signal tb_sam_brdy : std_logic := '0';
+ signal tb_sam_reset_n : std_logic;
+ --
+ -- Expansion Header
+ signal tb_exp1_se_io : std_logic_vector(33 downto 0);
+ signal tb_exp1_diff_p : std_logic_vector(21 downto 0);
+ signal tb_exp1_diff_n : std_logic_vector(21 downto 0);
+ signal tb_exp1_se_clk_out : std_logic;
+ signal tb_exp1_se_clk_in : std_logic := '0';
+ signal tb_exp1_diff_clk_out_p : std_logic;
+ signal tb_exp1_diff_clk_out_n : std_logic;
+ signal tb_exp1_diff_clk_in_p : std_logic := '0';
+ signal tb_exp1_diff_clk_in_n : std_logic := '0';
+ --
+ -- Debug/Trace
+ signal tb_atdd : std_logic_vector(19 downto 8);
+ signal tb_trace_ts10 : std_logic;
+ signal tb_trace_ts20 : std_logic;
+ signal tb_trace_ts1e : std_logic;
+ signal tb_trace_ts2e : std_logic;
+ signal tb_trace_ts3 : std_logic;
+ signal tb_trace_ts4 : std_logic;
+ signal tb_trace_ts5 : std_logic;
+ signal tb_trace_ts6 : std_logic;
+ signal tb_trace_clk : std_logic := '0';
+ signal tb_cpu_hreset : std_logic := '0';
+ signal tb_cpu_tdo : std_logic;
+ signal tb_cpu_tms : std_logic := '0';
+ signal tb_cpu_tdi : std_logic := '0';
+ signal tb_cpu_trst : std_logic := '0';
+ signal tb_cpu_tck : std_logic := '0';
+ signal tb_cpu_halt_n : std_logic := '0';
+
+
+begin
+
+
+ -- generate clocks
+ tb_clk_100MHz <= not tb_clk_100MHz after clk_100MHz_period / 2 when simulation_run;
+
+ -- generate reset
+ tb_gpio_button(0) <= '1', '0' after 6.66 * clk_100MHz_period;
+
+
+ -- dut
+ top_i0 : entity work.top
+ port map (
+ stop_simulation => tb_stop_simulation, -- : out std_logic;
+ clk_100MHz => tb_clk_100MHz, -- : in std_logic;
+ clk_socket => tb_clk_socket, -- : in std_logic;
+ user_clk_p => tb_user_clk_p, -- : in std_logic;
+ user_clk_n => tb_user_clk_n, -- : in std_logic;
+ --
+ -- RS232
+ rs232_rx => tb_rs232_rx, -- : in std_logic;
+ rs232_tx => tb_rs232_tx, -- : out std_logic;
+ rs232_rts => tb_rs232_rts, -- : in std_logic;
+ rs232_cts => tb_rs232_cts, -- : out std_logic;
+ -- RS232 USB
+ rs232_usb_rx => tb_rs232_usb_rx, -- : in std_logic;
+ rs232_usb_tx => tb_rs232_usb_tx, -- : out std_logic;
+ rs232_usb_reset_n => tb_rs232_usb_reset_n, -- : out std_logic;
+ --
+ gpio_led_n => tb_gpio_led_n, -- : out std_logic_vector(7 downto 0);
+ gpio_dipswitch => tb_gpio_dipswitch, -- : in std_logic_vector(7 downto 0);
+ gpio_button => tb_gpio_button, -- : in std_logic_vector(3 downto 0);
+ --
+ -- FLASH 8Mx16
+ flash_a => tb_flash_a, -- : out std_logic_vector(31 downto 7);
+ flash_dq => tb_flash_dq, -- : inout std_logic_vector(15 downto 0);
+ flash_wen => tb_flash_wen, -- : out std_logic;
+ flash_oen => tb_flash_oen, -- : out std_logic_vector(0 downto 0);
+ flash_cen => tb_flash_cen, -- : out std_logic_vector(0 downto 0);
+ flash_rp_n => tb_flash_rp_n, -- : out std_logic;
+ flash_byte_n => tb_flash_byte_n, -- : out std_logic;
+ flash_adv_n => tb_flash_adv_n, -- : out std_logic;
+ flash_clk => tb_flash_clk, -- : out std_logic;
+ flash_wait => tb_flash_wait, -- : in std_logic;
+ --
+ -- DDR2 SDRAM 16Mx32
+ ddr2_odt => tb_ddr2_odt, -- : in std_logic_vector(0 downto 0);
+ ddr2_a => tb_ddr2_a, -- : out std_logic_vector(12 downto 0);
+ ddr2_ba => tb_ddr2_ba, -- : out std_logic_vector(1 downto 0);
+ ddr2_cas_n => tb_ddr2_cas_n, -- : out std_logic;
+ ddr2_cke => tb_ddr2_cke, -- : out std_logic;
+ ddr2_cs_n => tb_ddr2_cs_n, -- : out std_logic;
+ ddr2_ras_n => tb_ddr2_ras_n, -- : out std_logic;
+ ddr2_we_n => tb_ddr2_we_n, -- : out std_logic;
+ ddr2_dm => tb_ddr2_dm, -- : out std_logic_vector(3 downto 0);
+ ddr2_dqs_p => tb_ddr2_dqs_p, -- : inout std_logic_vector(3 downto 0);
+ ddr2_dqs_n => tb_ddr2_dqs_n, -- : inout std_logic_vector(3 downto 0);
+ ddr2_dq => tb_ddr2_dq, -- : inout std_logic_vector(31 downto 0);
+ ddr2_ck_p => tb_ddr2_ck_p, -- : in std_logic_vector(1 downto 0);
+ ddr2_ck_n => tb_ddr2_ck_n, -- : in std_logic_vector(1 downto 0);
+ --
+ -- Ethernet MAC
+ gmii_txer => tb_gmii_txer, -- : out std_logic;
+ gmii_tx_clk => tb_gmii_tx_clk, -- : in std_logic;
+ gmii_rx_clk => tb_gmii_rx_clk, -- : in std_logic;
+ gmii_gtc_clk => tb_gmii_gtc_clk, -- : out std_logic;
+ gmii_crs => tb_gmii_crs, -- : in std_logic;
+ gmii_dv => tb_gmii_dv, -- : in std_logic;
+ gmii_rx_data => tb_gmii_rx_data, -- : in std_logic_vector(7 downto 0);
+ gmii_col => tb_gmii_col, -- : in std_logic;
+ gmii_rx_er => tb_gmii_rx_er, -- : in std_logic;
+ gmii_tx_en => tb_gmii_tx_en, -- : out std_logic;
+ gmii_tx_data => tb_gmii_tx_data, -- : out std_logic_vector(7 downto 0);
+ gbe_rst_n => tb_gbe_rst_n, -- : out std_logic;
+ gbe_mdc => tb_gbe_mdc, -- : out std_logic;
+ gbe_mdio => tb_gbe_mdio, -- : inout std_logic;
+ gbe_int_n => tb_gbe_int_n, -- : inout std_logic;
+ gbe_mclk => tb_gbe_mclk, -- : in std_logic;
+ --
+ -- SysACE CompactFlash
+ sam_clk => tb_sam_clk, -- : in std_logic;
+ sam_a => tb_sam_a, -- : out std_logic_vector(6 downto 0);
+ sam_d => tb_sam_d, -- : inout std_logic_vector(15 downto 0);
+ sam_cen => tb_sam_cen, -- : out std_logic;
+ sam_oen => tb_sam_oen, -- : out std_logic;
+ sam_wen => tb_sam_wen, -- : out std_logic;
+ sam_mpirq => tb_sam_mpirq, -- : in std_logic;
+ sam_brdy => tb_sam_brdy, -- : in std_logic;
+ sam_reset_n => tb_sam_reset_n, -- : out std_logic;
+ --
+ -- Expansion Header
+ exp1_se_io => tb_exp1_se_io, -- : inout std_logic_vector(33 downto 0);
+ exp1_diff_p => tb_exp1_diff_p, -- : inout std_logic_vector(21 downto 0);
+ exp1_diff_n => tb_exp1_diff_n, -- : inout std_logic_vector(21 downto 0);
+ exp1_se_clk_out => tb_exp1_se_clk_out, -- : out std_logic;
+ exp1_se_clk_in => tb_exp1_se_clk_in, -- : in std_logic;
+ exp1_diff_clk_out_p => tb_exp1_diff_clk_out_p, -- : out std_logic;
+ exp1_diff_clk_out_n => tb_exp1_diff_clk_out_n, -- : out std_logic;
+ exp1_diff_clk_in_p => tb_exp1_diff_clk_in_p, -- : in std_logic;
+ exp1_diff_clk_in_n => tb_exp1_diff_clk_in_n, -- : in std_logic;
+ --
+ -- Debug/Trace
+ atdd => tb_atdd, -- : inout std_logic_vector(19 downto 8);
+ trace_ts10 => tb_trace_ts10, -- : inout std_logic;
+ trace_ts20 => tb_trace_ts20, -- : inout std_logic;
+ trace_ts1e => tb_trace_ts1e, -- : inout std_logic;
+ trace_ts2e => tb_trace_ts2e, -- : inout std_logic;
+ trace_ts3 => tb_trace_ts3, -- : inout std_logic;
+ trace_ts4 => tb_trace_ts4, -- : inout std_logic;
+ trace_ts5 => tb_trace_ts5, -- : inout std_logic;
+ trace_ts6 => tb_trace_ts6, -- : inout std_logic;
+ trace_clk => tb_trace_clk, -- : in std_logic;
+ cpu_hreset => tb_cpu_hreset, -- : in std_logic;
+ cpu_tdo => tb_cpu_tdo, -- : out std_logic;
+ cpu_tms => tb_cpu_tms, -- : in std_logic;
+ cpu_tdi => tb_cpu_tdi, -- : in std_logic;
+ cpu_trst => tb_cpu_trst, -- : in std_logic;
+ cpu_tck => tb_cpu_tck, -- : in std_logic;
+ cpu_halt_n => tb_cpu_halt_n -- : in std_logic
+ );
+
+
+ -- check for simulation stopping
+ process (tb_stop_simulation)
+ begin
+ if tb_stop_simulation = '1' then
+ report "Simulation end." severity note;
+ simulation_run <= false;
+ end if;
+ end process;
+
+end architecture testbench;
OpenPOWER on IntegriCloud