OpenCores
URL https://opencores.org/ocsvn/mips_enhanced/mips_enhanced/trunk

Subversion Repositories mips_enhanced

[/] [mips_enhanced/] [trunk/] [grlib-gpl-1.0.19-b3188/] [designs/] [leon3-xilinx-ml506/] [testbench.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dimamali
-----------------------------------------------------------------------------
2
--  LEON3 Demonstration design test bench
3
--  Copyright (C) 2004 Jiri Gaisler, Gaisler Research
4
--
5
--  This program is free software; you can redistribute it and/or modify
6
--  it under the terms of the GNU General Public License as published by
7
--  the Free Software Foundation; either version 2 of the License, or
8
--  (at your option) any later version.
9
--
10
--  This program is distributed in the hope that it will be useful,
11
--  but WITHOUT ANY WARRANTY; without even the implied warranty of
12
--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
--  GNU General Public License for more details.
14
------------------------------------------------------------------------------
15
 
16
library ieee;
17
use ieee.std_logic_1164.all;
18
library gaisler;
19
use gaisler.libdcom.all;
20
use gaisler.sim.all;
21
library techmap;
22
use techmap.gencomp.all;
23
library micron;
24
use micron.components.all;
25
library cypress;
26
use cypress.components.all;
27
use work.debug.all;
28
 
29
use work.config.all;    -- configuration
30
 
31
entity testbench is
32
  generic (
33
    fabtech   : integer := CFG_FABTECH;
34
    memtech   : integer := CFG_MEMTECH;
35
    padtech   : integer := CFG_PADTECH;
36
    clktech   : integer := CFG_CLKTECH;
37
    ncpu      : integer := CFG_NCPU;
38
    disas     : integer := CFG_DISAS;   -- Enable disassembly to console
39
    dbguart   : integer := CFG_DUART;   -- Print UART on console
40
    pclow     : integer := CFG_PCLOW;
41
 
42
    clkperiod : integer := 10;          -- system clock period
43
    romwidth  : integer := 32;          -- rom data width (8/32)
44
    romdepth  : integer := 16;          -- rom address depth
45
    sramwidth  : integer := 32;         -- ram data width (8/16/32)
46
    sramdepth  : integer := 18;         -- ram address depth
47
    srambanks  : integer := 2           -- number of ram banks
48
  );
49
end;
50
 
51
architecture behav of testbench is
52
 
53
constant promfile  : string := "prom.srec";  -- rom contents
54
constant sramfile  : string := "sram.srec";  -- ram contents
55
constant sdramfile : string := "sdram.srec"; -- sdram contents
56
 
57
signal sys_clk : std_logic := '0';
58
signal sys_rst_in : std_logic := '0';                    -- Reset
59
constant ct : integer := clkperiod/2;
60
 
61
signal bus_error        : std_logic_vector (1 downto 0);
62
signal sram_flash_addr : std_logic_vector(23 downto 0);
63
signal address : std_logic_vector(24 downto 0);
64
signal sram_flash_data, data : std_logic_vector(31 downto 0);
65
signal sram_cen         : std_logic;
66
signal sram_bw          : std_logic_vector (3 downto 0);
67
signal sram_oen : std_ulogic;
68
signal flash_oen : std_ulogic;
69
signal sram_flash_we_n  : std_ulogic;
70
signal flash_cen        : std_logic;
71
signal flash_adv_n      : std_logic;
72
signal sram_clk         : std_ulogic;
73
signal sram_clk_fb      : std_ulogic;
74
signal sram_mode        : std_ulogic;
75
signal sram_adv_ld_n : std_ulogic;
76
signal iosn : std_ulogic;
77
signal ddr_clk          : std_logic_vector(1 downto 0);
78
signal ddr_clkb         : std_logic_vector(1 downto 0);
79
signal ddr_cke          : std_logic_vector(1 downto 0);
80
signal ddr_csb          : std_logic_vector(1 downto 0);
81
signal ddr_odt          : std_logic_vector(1 downto 0);
82
signal ddr_web          : std_ulogic;                       -- ddr write enable
83
signal ddr_rasb         : std_ulogic;                       -- ddr ras
84
signal ddr_casb         : std_ulogic;                       -- ddr cas
85
signal ddr_dm           : std_logic_vector (7 downto 0);    -- ddr dm
86
signal ddr_dqsp         : std_logic_vector (7 downto 0);    -- ddr dqs
87
signal ddr_dqsn         : std_logic_vector (7 downto 0);    -- ddr dqs
88
signal ddr_rdqs         : std_logic_vector (7 downto 0);    -- ddr dqs
89
signal ddr_ad      : std_logic_vector (13 downto 0);   -- ddr address
90
signal ddr_ba      : std_logic_vector (1 downto 0);    -- ddr bank address
91
signal ddr_dq   : std_logic_vector (63 downto 0); -- ddr data
92
 
93
 
94
signal txd1     : std_ulogic;                   -- UART1 tx data
95
signal rxd1     : std_ulogic;                   -- UART1 rx data
96
signal txd2     : std_ulogic;                   -- UART2 tx data
97
signal rxd2     : std_ulogic;                   -- UART2 rx data
98
signal gpio         : std_logic_vector(12 downto 0);     -- I/O port
99
signal led          : std_logic_vector(12 downto 0);     -- I/O port
100
signal phy_mii_data: std_logic;         -- ethernet PHY interface
101
signal phy_tx_clk       : std_ulogic;
102
signal phy_rx_clk       : std_ulogic;
103
signal phy_rx_data      : std_logic_vector(7 downto 0);
104
signal phy_dv   : std_ulogic;
105
signal phy_rx_er        : std_ulogic;
106
signal phy_col  : std_ulogic;
107
signal phy_crs  : std_ulogic;
108
signal phy_tx_data : std_logic_vector(7 downto 0);
109
signal phy_tx_en        : std_ulogic;
110
signal phy_tx_er        : std_ulogic;
111
signal phy_mii_clk      : std_ulogic;
112
signal phy_rst_n        : std_ulogic;
113
signal phy_gtx_clk      : std_ulogic;
114
signal ps2_keyb_clk: std_logic;
115
signal ps2_keyb_data: std_logic;
116
signal ps2_mouse_clk: std_logic;
117
signal ps2_mouse_data: std_logic;
118
signal tft_lcd_clk : std_ulogic;
119
signal vid_blankn  : std_ulogic;
120
signal vid_syncn   : std_ulogic;
121
signal vid_hsync   : std_ulogic;
122
signal vid_vsync   : std_ulogic;
123
signal vid_r       : std_logic_vector(7 downto 0);
124
signal vid_g       : std_logic_vector(7 downto 0);
125
signal vid_b       : std_logic_vector(7 downto 0);
126
signal usb_csn, usb_rstn : std_logic;
127
signal iic_scl_main, iic_sda_main : std_logic;
128
 
129
signal GND      : std_ulogic := '0';
130
signal VCC      : std_ulogic := '1';
131
signal NC       : std_ulogic := 'Z';
132
signal clk_200_p      : std_ulogic := '0';
133
signal clk_200_n      : std_ulogic := '1';
134
 
135
constant lresp : boolean := false;
136
 
137
begin
138
 
139
-- clock and reset
140
 
141
  sys_clk <= not sys_clk after ct * 1 ns;
142
  sys_rst_in <= '0', '1' after 200 ns;
143
  clk_200_p <= not clk_200_p after 8 ns;
144
  clk_200_n <= not clk_200_n after 8 ns;
145
  rxd1 <= 'H';
146
  sram_clk_fb <= sram_clk;
147
  ps2_keyb_data <= 'H'; ps2_keyb_clk <= 'H';
148
  ps2_mouse_clk <= 'H'; ps2_mouse_data <= 'H';
149
  iic_scl_main <= 'H'; iic_sda_main <= 'H';
150
 
151
  cpu : entity work.leon3mp
152
      generic map ( fabtech, memtech, padtech, ncpu, disas, dbguart, pclow )
153
      port map ( sys_rst_in, sys_clk, clk_200_p, clk_200_n, sram_flash_addr,
154
        sram_flash_data, sram_cen, sram_bw, sram_oen, sram_flash_we_n,
155
        flash_cen, flash_oen, flash_adv_n,sram_clk, sram_clk_fb, sram_mode,
156
        sram_adv_ld_n, iosn,
157
        ddr_clk, ddr_clkb, ddr_cke, ddr_csb, ddr_odt, ddr_web,
158
        ddr_rasb, ddr_casb, ddr_dm, ddr_dqsp, ddr_dqsn, ddr_ad, ddr_ba, ddr_dq,
159
        txd1, rxd1, txd2, rxd2, gpio, led, bus_error,
160
        phy_gtx_clk, phy_mii_data, phy_tx_clk, phy_rx_clk,
161
        phy_rx_data, phy_dv, phy_rx_er, phy_col, phy_crs,
162
        phy_tx_data, phy_tx_en, phy_tx_er, phy_mii_clk, phy_rst_n,
163
        ps2_keyb_clk, ps2_keyb_data, ps2_mouse_clk, ps2_mouse_data,
164
        usb_csn, usb_rstn,
165
        iic_scl_main, iic_sda_main
166
        );
167
 
168
  ddr2mem : for i in 0 to 3 generate
169
    u1 : ddr2
170
    PORT MAP(
171
      ck => ddr_clk(0), ck_n => ddr_clkb(0), cke => ddr_cke(0), cs_n => ddr_csb(0),
172
      ras_n => ddr_rasb, cas_n => ddr_casb, we_n => ddr_web,
173
      dm_rdqs => ddr_dm(i*2+1 downto i*2), ba => ddr_ba,
174
      addr => ddr_ad(12 downto 0), dq => ddr_dq(i*16+15 downto i*16),
175
      dqs => ddr_dqsp(i*2+1 downto i*2), dqs_n => ddr_dqsn(i*2+1 downto i*2),
176
      rdqs_n => ddr_rdqs(i*2+1 downto i*2), odt => ddr_odt(0));
177
  end generate;
178
 
179
  sram01 : for i in 0 to 1 generate
180
      sr0 : sram generic map (index => i, abits => sramdepth, fname => sramfile)
181
        port map (sram_flash_addr(sramdepth downto 1), sram_flash_data(15-i*8 downto 8-i*8),
182
                sram_cen, sram_bw(i+2), sram_oen);
183
  end generate;
184
 
185
  sram23 : for i in 2 to 3 generate
186
      sr0 : sram generic map (index => i, abits => sramdepth, fname => sramfile)
187
        port map (sram_flash_addr(sramdepth downto 1), sram_flash_data(47-i*8 downto 40-i*8),
188
                sram_cen, sram_bw(i-2), sram_oen);
189
  end generate;
190
 
191
  prom0 : sram16 generic map (index => 4, abits => romdepth, fname => promfile)
192
        port map (sram_flash_addr(romdepth-1 downto 0), sram_flash_data(15 downto 0),
193
                  gnd, gnd, flash_cen, sram_flash_we_n, flash_oen);
194
 
195
--  p0: phy 
196
--      port map(rst, led_cfg, open, etx_clk, erx_clk, erxd, erx_dv,
197
--      erx_er, erx_col, erx_crs, etxd, etx_en, etx_er, emdc);
198
 
199
 
200
  i0: i2c_slave_model
201
      port map (iic_scl_main, iic_sda_main);
202
 
203
  iuerr : process
204
   begin
205
     wait for 5000 ns;
206
     if to_x01(bus_error(0)) = '0' then wait on bus_error; end if;
207
     assert (to_x01(bus_error(0)) = '0')
208
       report "*** IU in error mode, simulation halted ***"
209
         severity failure ;
210
   end process;
211
 
212
  data <=  sram_flash_data(15 downto 0) &  sram_flash_data(31 downto 16);
213
  address <= sram_flash_addr & '0';
214
 
215
  test0 :  grtestmod
216
    port map ( sys_rst_in, sys_clk, bus_error(0), sram_flash_addr(20 downto 1), data,
217
               iosn, flash_oen, sram_bw(0), open);
218
 
219
 
220
  sram_flash_data <= buskeep(sram_flash_data), (others => 'H') after 250 ns;
221
  ddr_dq <= buskeep(ddr_dq), (others => 'H') after 250 ns;
222
  data <= buskeep(data), (others => 'H') after 250 ns;
223
 
224
end ;
225
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.