netcomp.vhd
1226 lines
| 54.4 KiB
| text/x-vhdl
|
VhdlLexer
martin
|
r100 | ------------------------------------------------------------------------------ | ||
-- This file is a part of the GRLIB VHDL IP LIBRARY | ||||
-- Copyright (C) 2003 - 2008, Gaisler Research | ||||
-- Copyright (C) 2008 - 2010, Aeroflex Gaisler | ||||
-- | ||||
-- This program is free software; you can redistribute it and/or modify | ||||
-- it under the terms of the GNU General Public License as published by | ||||
-- the Free Software Foundation; either version 2 of the License, or | ||||
-- (at your option) any later version. | ||||
-- | ||||
-- This program 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 General Public License for more details. | ||||
-- | ||||
-- You should have received a copy of the GNU General Public License | ||||
-- along with this program; if not, write to the Free Software | ||||
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||||
----------------------------------------------------------------------------- | ||||
-- Package: netcomp | ||||
-- File: netcomp.vhd | ||||
-- Author: Jiri Gaisler - Aeroflex Gaisler | ||||
-- Description: Declaration of netlists components | ||||
------------------------------------------------------------------------------ | ||||
library ieee; | ||||
use ieee.std_logic_1164.all; | ||||
library grlib; | ||||
use grlib.amba.all; | ||||
use work.gencomp.all; | ||||
package netcomp is | ||||
--------------------------------------------------------------------------- | ||||
-- netlists --------------------------------------------------------------- | ||||
--------------------------------------------------------------------------- | ||||
component grusbhc_net is | ||||
generic ( | ||||
tech : integer := 0; | ||||
nports : integer range 1 to 15 := 1; | ||||
ehcgen : integer range 0 to 1 := 1; | ||||
uhcgen : integer range 0 to 1 := 1; | ||||
n_cc : integer range 1 to 15 := 1; | ||||
n_pcc : integer range 1 to 15 := 1; | ||||
prr : integer range 0 to 1 := 0; | ||||
portroute1 : integer := 0; | ||||
portroute2 : integer := 0; | ||||
endian_conv : integer range 0 to 1 := 1; | ||||
be_regs : integer range 0 to 1 := 0; | ||||
be_desc : integer range 0 to 1 := 0; | ||||
uhcblo : integer range 0 to 255 := 2; | ||||
bwrd : integer range 1 to 256 := 16; | ||||
utm_type : integer range 0 to 2 := 2; | ||||
vbusconf : integer := 3; | ||||
ramtest : integer range 0 to 1 := 0; | ||||
urst_time : integer := 250; | ||||
oepol : integer range 0 to 1 := 0; | ||||
scantest : integer range 0 to 1 := 0; | ||||
memtech : integer range 0 to NTECH := DEFMEMTECH; | ||||
memsel : integer := 0; | ||||
syncprst : integer range 0 to 1 := 0; | ||||
sysfreq : integer := 65000); | ||||
port ( | ||||
clk : in std_ulogic; | ||||
uclk : in std_ulogic; | ||||
rst : in std_ulogic; | ||||
-- EHC apb_slv_in_type unwrapped | ||||
ehc_apbsi_psel : in std_ulogic; | ||||
ehc_apbsi_penable : in std_ulogic; | ||||
ehc_apbsi_paddr : in std_logic_vector(31 downto 0); | ||||
ehc_apbsi_pwrite : in std_ulogic; | ||||
ehc_apbsi_pwdata : in std_logic_vector(31 downto 0); | ||||
-- EHC apb_slv_out_type unwrapped | ||||
ehc_apbso_prdata : out std_logic_vector(31 downto 0); | ||||
ehc_apbso_pirq : out std_ulogic; | ||||
-- EHC/UHC ahb_mst_in_type unwrapped | ||||
ahbmi_hgrant : in std_logic_vector(n_cc*uhcgen downto 0); | ||||
ahbmi_hready : in std_ulogic; | ||||
ahbmi_hresp : in std_logic_vector(1 downto 0); | ||||
ahbmi_hrdata : in std_logic_vector(31 downto 0); | ||||
ahbmi_hcache : in std_ulogic; | ||||
-- UHC ahb_slv_in_type unwrapped | ||||
uhc_ahbsi_hsel : in std_logic_vector(n_cc*uhcgen downto 1*uhcgen); | ||||
uhc_ahbsi_haddr : in std_logic_vector(31 downto 0); | ||||
uhc_ahbsi_hwrite : in std_ulogic; | ||||
uhc_ahbsi_htrans : in std_logic_vector(1 downto 0); | ||||
uhc_ahbsi_hsize : in std_logic_vector(2 downto 0); | ||||
uhc_ahbsi_hwdata : in std_logic_vector(31 downto 0); | ||||
uhc_ahbsi_hready : in std_ulogic; | ||||
-- EHC ahb_mst_out_type_unwrapped | ||||
ehc_ahbmo_hbusreq : out std_ulogic; | ||||
ehc_ahbmo_hlock : out std_ulogic; | ||||
ehc_ahbmo_htrans : out std_logic_vector(1 downto 0); | ||||
ehc_ahbmo_haddr : out std_logic_vector(31 downto 0); | ||||
ehc_ahbmo_hwrite : out std_ulogic; | ||||
ehc_ahbmo_hsize : out std_logic_vector(2 downto 0); | ||||
ehc_ahbmo_hburst : out std_logic_vector(2 downto 0); | ||||
ehc_ahbmo_hprot : out std_logic_vector(3 downto 0); | ||||
ehc_ahbmo_hwdata : out std_logic_vector(31 downto 0); | ||||
-- UHC ahb_mst_out_vector_type unwrapped | ||||
uhc_ahbmo_hbusreq : out std_logic_vector(n_cc*uhcgen downto 1*uhcgen); | ||||
uhc_ahbmo_hlock : out std_logic_vector(n_cc*uhcgen downto 1*uhcgen); | ||||
uhc_ahbmo_htrans : out std_logic_vector((n_cc*2)*uhcgen downto 1*uhcgen); | ||||
uhc_ahbmo_haddr : out std_logic_vector((n_cc*32)*uhcgen downto 1*uhcgen); | ||||
uhc_ahbmo_hwrite : out std_logic_vector(n_cc*uhcgen downto 1*uhcgen); | ||||
uhc_ahbmo_hsize : out std_logic_vector((n_cc*3)*uhcgen downto 1*uhcgen); | ||||
uhc_ahbmo_hburst : out std_logic_vector((n_cc*3)*uhcgen downto 1*uhcgen); | ||||
uhc_ahbmo_hprot : out std_logic_vector((n_cc*4)*uhcgen downto 1*uhcgen); | ||||
uhc_ahbmo_hwdata : out std_logic_vector((n_cc*32)*uhcgen downto 1*uhcgen); | ||||
-- UHC ahb_slv_out_vector_type unwrapped | ||||
uhc_ahbso_hready : out std_logic_vector(n_cc*uhcgen downto 1*uhcgen); | ||||
uhc_ahbso_hresp : out std_logic_vector((n_cc*2)*uhcgen downto 1*uhcgen); | ||||
uhc_ahbso_hrdata : out std_logic_vector((n_cc*32)*uhcgen downto 1*uhcgen); | ||||
uhc_ahbso_hsplit : out std_logic_vector((n_cc*16)*uhcgen downto 1*uhcgen); | ||||
uhc_ahbso_hcache : out std_logic_vector(n_cc*uhcgen downto 1*uhcgen); | ||||
uhc_ahbso_hirq : out std_logic_vector(n_cc*uhcgen downto 1*uhcgen); | ||||
-- grusb_out_type_vector unwrapped | ||||
xcvrsel : out std_logic_vector(((nports*2)-1) downto 0); | ||||
termsel : out std_logic_vector((nports-1) downto 0); | ||||
opmode : out std_logic_vector(((nports*2)-1) downto 0); | ||||
txvalid : out std_logic_vector((nports-1) downto 0); | ||||
drvvbus : out std_logic_vector((nports-1) downto 0); | ||||
dataho : out std_logic_vector(((nports*8)-1) downto 0); | ||||
validho : out std_logic_vector((nports-1) downto 0); | ||||
stp : out std_logic_vector((nports-1) downto 0); | ||||
datao : out std_logic_vector(((nports*8)-1) downto 0); | ||||
utm_rst : out std_logic_vector((nports-1) downto 0); | ||||
dctrlo : out std_logic_vector((nports-1) downto 0); | ||||
suspendm : out std_ulogic; | ||||
dbus16_8 : out std_ulogic; | ||||
dppulldown : out std_ulogic; | ||||
dmpulldown : out std_ulogic; | ||||
idpullup : out std_ulogic; | ||||
dischrgvbus : out std_ulogic; | ||||
chrgvbus : out std_ulogic; | ||||
txbitstuffenable : out std_ulogic; | ||||
txbitstuffenableh : out std_ulogic; | ||||
fslsserialmode : out std_ulogic; | ||||
txenablen : out std_ulogic; | ||||
txdat : out std_ulogic; | ||||
txse0 : out std_ulogic; | ||||
-- grusb_in_type_vector unwrapped | ||||
linestate : in std_logic_vector(((nports*2)-1) downto 0); | ||||
txready : in std_logic_vector((nports-1) downto 0); | ||||
rxvalid : in std_logic_vector((nports-1) downto 0); | ||||
rxactive : in std_logic_vector((nports-1) downto 0); | ||||
rxerror : in std_logic_vector((nports-1) downto 0); | ||||
vbusvalid : in std_logic_vector((nports-1) downto 0); | ||||
datahi : in std_logic_vector(((nports*8)-1) downto 0); | ||||
validhi : in std_logic_vector((nports-1) downto 0); | ||||
hostdisc : in std_logic_vector((nports-1) downto 0); | ||||
nxt : in std_logic_vector((nports-1) downto 0); | ||||
dir : in std_logic_vector((nports-1) downto 0); | ||||
datai : in std_logic_vector(((nports*8)-1) downto 0); | ||||
urstdrive : in std_logic_vector((nports-1) downto 0); | ||||
-- EHC transaction buffer signals | ||||
mbc20_tb_addr : out std_logic_vector(8 downto 0); | ||||
mbc20_tb_data : out std_logic_vector(31 downto 0); | ||||
mbc20_tb_en : out std_ulogic; | ||||
mbc20_tb_wel : out std_ulogic; | ||||
mbc20_tb_weh : out std_ulogic; | ||||
tb_mbc20_data : in std_logic_vector(31 downto 0); | ||||
pe20_tb_addr : out std_logic_vector(8 downto 0); | ||||
pe20_tb_data : out std_logic_vector(31 downto 0); | ||||
pe20_tb_en : out std_ulogic; | ||||
pe20_tb_wel : out std_ulogic; | ||||
pe20_tb_weh : out std_ulogic; | ||||
tb_pe20_data : in std_logic_vector(31 downto 0); | ||||
-- EHC packet buffer signals | ||||
mbc20_pb_addr : out std_logic_vector(8 downto 0); | ||||
mbc20_pb_data : out std_logic_vector(31 downto 0); | ||||
mbc20_pb_en : out std_ulogic; | ||||
mbc20_pb_we : out std_ulogic; | ||||
pb_mbc20_data : in std_logic_vector(31 downto 0); | ||||
sie20_pb_addr : out std_logic_vector(8 downto 0); | ||||
sie20_pb_data : out std_logic_vector(31 downto 0); | ||||
sie20_pb_en : out std_ulogic; | ||||
sie20_pb_we : out std_ulogic; | ||||
pb_sie20_data : in std_logic_vector(31 downto 0); | ||||
-- UHC packet buffer signals | ||||
sie11_pb_addr : out std_logic_vector((n_cc*9)*uhcgen downto 1*uhcgen); | ||||
sie11_pb_data : out std_logic_vector((n_cc*32)*uhcgen downto 1*uhcgen); | ||||
sie11_pb_en : out std_logic_vector(n_cc*uhcgen downto 1*uhcgen); | ||||
sie11_pb_we : out std_logic_vector(n_cc*uhcgen downto 1*uhcgen); | ||||
pb_sie11_data : in std_logic_vector((n_cc*32)*uhcgen downto 1*uhcgen); | ||||
mbc11_pb_addr : out std_logic_vector((n_cc*9)*uhcgen downto 1*uhcgen); | ||||
mbc11_pb_data : out std_logic_vector((n_cc*32)*uhcgen downto 1*uhcgen); | ||||
mbc11_pb_en : out std_logic_vector(n_cc*uhcgen downto 1*uhcgen); | ||||
mbc11_pb_we : out std_logic_vector(n_cc*uhcgen downto 1*uhcgen); | ||||
pb_mbc11_data : in std_logic_vector((n_cc*32)*uhcgen downto 1*uhcgen); | ||||
bufsel : out std_ulogic; | ||||
-- scan signals | ||||
testen : in std_ulogic; | ||||
testrst : in std_ulogic; | ||||
scanen : in std_ulogic; | ||||
testoen : in std_ulogic); | ||||
end component; | ||||
component grspwc_net | ||||
generic( | ||||
tech : integer := 0; | ||||
sysfreq : integer := 40000; | ||||
usegen : integer range 0 to 1 := 1; | ||||
nsync : integer range 1 to 2 := 1; | ||||
rmap : integer range 0 to 1 := 0; | ||||
rmapcrc : integer range 0 to 1 := 0; | ||||
fifosize1 : integer range 4 to 32 := 32; | ||||
fifosize2 : integer range 16 to 64 := 64; | ||||
rxunaligned : integer range 0 to 1 := 0; | ||||
rmapbufs : integer range 2 to 8 := 4; | ||||
scantest : integer range 0 to 1 := 0 | ||||
); | ||||
port( | ||||
rst : in std_ulogic; | ||||
clk : in std_ulogic; | ||||
txclk : in std_ulogic; | ||||
--ahb mst in | ||||
hgrant : in std_ulogic; | ||||
hready : in std_ulogic; | ||||
hresp : in std_logic_vector(1 downto 0); | ||||
hrdata : in std_logic_vector(31 downto 0); | ||||
--ahb mst out | ||||
hbusreq : out std_ulogic; | ||||
hlock : out std_ulogic; | ||||
htrans : out std_logic_vector(1 downto 0); | ||||
haddr : out std_logic_vector(31 downto 0); | ||||
hwrite : out std_ulogic; | ||||
hsize : out std_logic_vector(2 downto 0); | ||||
hburst : out std_logic_vector(2 downto 0); | ||||
hprot : out std_logic_vector(3 downto 0); | ||||
hwdata : out std_logic_vector(31 downto 0); | ||||
--apb slv in | ||||
psel : in std_ulogic; | ||||
penable : in std_ulogic; | ||||
paddr : in std_logic_vector(31 downto 0); | ||||
pwrite : in std_ulogic; | ||||
pwdata : in std_logic_vector(31 downto 0); | ||||
--apb slv out | ||||
prdata : out std_logic_vector(31 downto 0); | ||||
--spw in | ||||
di : in std_logic_vector(1 downto 0); | ||||
si : in std_logic_vector(1 downto 0); | ||||
--spw out | ||||
do : out std_logic_vector(1 downto 0); | ||||
so : out std_logic_vector(1 downto 0); | ||||
--time iface | ||||
tickin : in std_ulogic; | ||||
tickout : out std_ulogic; | ||||
--irq | ||||
irq : out std_logic; | ||||
--misc | ||||
clkdiv10 : in std_logic_vector(7 downto 0); | ||||
dcrstval : in std_logic_vector(9 downto 0); | ||||
timerrstval : in std_logic_vector(11 downto 0); | ||||
--rmapen | ||||
rmapen : in std_ulogic; | ||||
--clk bufs | ||||
rxclki : in std_logic_vector(1 downto 0); | ||||
nrxclki : in std_logic_vector(1 downto 0); | ||||
rxclko : out std_logic_vector(1 downto 0); | ||||
--rx ahb fifo | ||||
rxrenable : out std_ulogic; | ||||
rxraddress : out std_logic_vector(4 downto 0); | ||||
rxwrite : out std_ulogic; | ||||
rxwdata : out std_logic_vector(31 downto 0); | ||||
rxwaddress : out std_logic_vector(4 downto 0); | ||||
rxrdata : in std_logic_vector(31 downto 0); | ||||
--tx ahb fifo | ||||
txrenable : out std_ulogic; | ||||
txraddress : out std_logic_vector(4 downto 0); | ||||
txwrite : out std_ulogic; | ||||
txwdata : out std_logic_vector(31 downto 0); | ||||
txwaddress : out std_logic_vector(4 downto 0); | ||||
txrdata : in std_logic_vector(31 downto 0); | ||||
--nchar fifo | ||||
ncrenable : out std_ulogic; | ||||
ncraddress : out std_logic_vector(5 downto 0); | ||||
ncwrite : out std_ulogic; | ||||
ncwdata : out std_logic_vector(8 downto 0); | ||||
ncwaddress : out std_logic_vector(5 downto 0); | ||||
ncrdata : in std_logic_vector(8 downto 0); | ||||
--rmap buf | ||||
rmrenable : out std_ulogic; | ||||
rmraddress : out std_logic_vector(7 downto 0); | ||||
rmwrite : out std_ulogic; | ||||
rmwdata : out std_logic_vector(7 downto 0); | ||||
rmwaddress : out std_logic_vector(7 downto 0); | ||||
rmrdata : in std_logic_vector(7 downto 0); | ||||
linkdis : out std_ulogic; | ||||
testclk : in std_ulogic := '0'; | ||||
testrst : in std_ulogic := '0'; | ||||
testen : in std_ulogic := '0' | ||||
); | ||||
end component; | ||||
component grspwc2_net | ||||
generic( | ||||
rmap : integer range 0 to 1 := 0; | ||||
rmapcrc : integer range 0 to 1 := 0; | ||||
fifosize1 : integer range 4 to 32 := 32; | ||||
fifosize2 : integer range 16 to 64 := 64; | ||||
rxunaligned : integer range 0 to 1 := 0; | ||||
rmapbufs : integer range 2 to 8 := 4; | ||||
scantest : integer range 0 to 1 := 0; | ||||
ports : integer range 1 to 2 := 1; | ||||
dmachan : integer range 1 to 4 := 1; | ||||
tech : integer; | ||||
input_type : integer range 0 to 3 := 0; | ||||
output_type : integer range 0 to 2 := 0; | ||||
rxtx_sameclk : integer range 0 to 1 := 0 | ||||
); | ||||
port( | ||||
rst : in std_ulogic; | ||||
clk : in std_ulogic; | ||||
rxclk : in std_logic_vector(1 downto 0); | ||||
txclk : in std_ulogic; | ||||
txclkn : in std_ulogic; | ||||
--ahb mst in | ||||
hgrant : in std_ulogic; | ||||
hready : in std_ulogic; | ||||
hresp : in std_logic_vector(1 downto 0); | ||||
hrdata : in std_logic_vector(31 downto 0); | ||||
--ahb mst out | ||||
hbusreq : out std_ulogic; | ||||
hlock : out std_ulogic; | ||||
htrans : out std_logic_vector(1 downto 0); | ||||
haddr : out std_logic_vector(31 downto 0); | ||||
hwrite : out std_ulogic; | ||||
hsize : out std_logic_vector(2 downto 0); | ||||
hburst : out std_logic_vector(2 downto 0); | ||||
hprot : out std_logic_vector(3 downto 0); | ||||
hwdata : out std_logic_vector(31 downto 0); | ||||
--apb slv in | ||||
psel : in std_ulogic; | ||||
penable : in std_ulogic; | ||||
paddr : in std_logic_vector(31 downto 0); | ||||
pwrite : in std_ulogic; | ||||
pwdata : in std_logic_vector(31 downto 0); | ||||
--apb slv out | ||||
prdata : out std_logic_vector(31 downto 0); | ||||
--spw in | ||||
d : in std_logic_vector(3 downto 0); | ||||
dv : in std_logic_vector(3 downto 0); | ||||
dconnect : in std_logic_vector(3 downto 0); | ||||
--spw out | ||||
do : out std_logic_vector(3 downto 0); | ||||
so : out std_logic_vector(3 downto 0); | ||||
--time iface | ||||
tickin : in std_ulogic; | ||||
tickout : out std_ulogic; | ||||
--irq | ||||
irq : out std_logic; | ||||
--misc | ||||
clkdiv10 : in std_logic_vector(7 downto 0); | ||||
dcrstval : in std_logic_vector(9 downto 0); | ||||
timerrstval : in std_logic_vector(11 downto 0); | ||||
--rmapen | ||||
rmapen : in std_ulogic; | ||||
--rx ahb fifo | ||||
rxrenable : out std_ulogic; | ||||
rxraddress : out std_logic_vector(4 downto 0); | ||||
rxwrite : out std_ulogic; | ||||
rxwdata : out std_logic_vector(31 downto 0); | ||||
rxwaddress : out std_logic_vector(4 downto 0); | ||||
rxrdata : in std_logic_vector(31 downto 0); | ||||
--tx ahb fifo | ||||
txrenable : out std_ulogic; | ||||
txraddress : out std_logic_vector(4 downto 0); | ||||
txwrite : out std_ulogic; | ||||
txwdata : out std_logic_vector(31 downto 0); | ||||
txwaddress : out std_logic_vector(4 downto 0); | ||||
txrdata : in std_logic_vector(31 downto 0); | ||||
--nchar fifo | ||||
ncrenable : out std_ulogic; | ||||
ncraddress : out std_logic_vector(5 downto 0); | ||||
ncwrite : out std_ulogic; | ||||
ncwdata : out std_logic_vector(9 downto 0); | ||||
ncwaddress : out std_logic_vector(5 downto 0); | ||||
ncrdata : in std_logic_vector(9 downto 0); | ||||
--rmap buf | ||||
rmrenable : out std_ulogic; | ||||
rmraddress : out std_logic_vector(7 downto 0); | ||||
rmwrite : out std_ulogic; | ||||
rmwdata : out std_logic_vector(7 downto 0); | ||||
rmwaddress : out std_logic_vector(7 downto 0); | ||||
rmrdata : in std_logic_vector(7 downto 0); | ||||
linkdis : out std_ulogic; | ||||
testclk : in std_ulogic := '0'; | ||||
testrst : in std_ulogic := '0'; | ||||
testen : in std_ulogic := '0'; | ||||
loopback : out std_ulogic | ||||
); | ||||
end component; | ||||
component grlfpw_net | ||||
generic (tech : integer := 0; | ||||
pclow : integer range 0 to 2 := 2; | ||||
dsu : integer range 0 to 1 := 1; | ||||
disas : integer range 0 to 2 := 0; | ||||
pipe : integer range 0 to 2 := 0 | ||||
); | ||||
port ( | ||||
rst : in std_ulogic; -- Reset | ||||
clk : in std_ulogic; | ||||
holdn : in std_ulogic; -- pipeline hold | ||||
cpi_flush : in std_ulogic; -- pipeline flush | ||||
cpi_exack : in std_ulogic; -- FP exception acknowledge | ||||
cpi_a_rs1 : in std_logic_vector(4 downto 0); | ||||
cpi_d_pc : in std_logic_vector(31 downto 0); | ||||
cpi_d_inst : in std_logic_vector(31 downto 0); | ||||
cpi_d_cnt : in std_logic_vector(1 downto 0); | ||||
cpi_d_trap : in std_ulogic; | ||||
cpi_d_annul : in std_ulogic; | ||||
cpi_d_pv : in std_ulogic; | ||||
cpi_a_pc : in std_logic_vector(31 downto 0); | ||||
cpi_a_inst : in std_logic_vector(31 downto 0); | ||||
cpi_a_cnt : in std_logic_vector(1 downto 0); | ||||
cpi_a_trap : in std_ulogic; | ||||
cpi_a_annul : in std_ulogic; | ||||
cpi_a_pv : in std_ulogic; | ||||
cpi_e_pc : in std_logic_vector(31 downto 0); | ||||
cpi_e_inst : in std_logic_vector(31 downto 0); | ||||
cpi_e_cnt : in std_logic_vector(1 downto 0); | ||||
cpi_e_trap : in std_ulogic; | ||||
cpi_e_annul : in std_ulogic; | ||||
cpi_e_pv : in std_ulogic; | ||||
cpi_m_pc : in std_logic_vector(31 downto 0); | ||||
cpi_m_inst : in std_logic_vector(31 downto 0); | ||||
cpi_m_cnt : in std_logic_vector(1 downto 0); | ||||
cpi_m_trap : in std_ulogic; | ||||
cpi_m_annul : in std_ulogic; | ||||
cpi_m_pv : in std_ulogic; | ||||
cpi_x_pc : in std_logic_vector(31 downto 0); | ||||
cpi_x_inst : in std_logic_vector(31 downto 0); | ||||
cpi_x_cnt : in std_logic_vector(1 downto 0); | ||||
cpi_x_trap : in std_ulogic; | ||||
cpi_x_annul : in std_ulogic; | ||||
cpi_x_pv : in std_ulogic; | ||||
cpi_lddata : in std_logic_vector(31 downto 0); -- load data | ||||
cpi_dbg_enable : in std_ulogic; | ||||
cpi_dbg_write : in std_ulogic; | ||||
cpi_dbg_fsr : in std_ulogic; -- FSR access | ||||
cpi_dbg_addr : in std_logic_vector(4 downto 0); | ||||
cpi_dbg_data : in std_logic_vector(31 downto 0); | ||||
cpo_data : out std_logic_vector(31 downto 0); -- store data | ||||
cpo_exc : out std_logic; -- FP exception | ||||
cpo_cc : out std_logic_vector(1 downto 0); -- FP condition codes | ||||
cpo_ccv : out std_ulogic; -- FP condition codes valid | ||||
cpo_ldlock : out std_logic; -- FP pipeline hold | ||||
cpo_holdn : out std_ulogic; | ||||
cpo_dbg_data : out std_logic_vector(31 downto 0); | ||||
rfi1_rd1addr : out std_logic_vector(3 downto 0); | ||||
rfi1_rd2addr : out std_logic_vector(3 downto 0); | ||||
rfi1_wraddr : out std_logic_vector(3 downto 0); | ||||
rfi1_wrdata : out std_logic_vector(31 downto 0); | ||||
rfi1_ren1 : out std_ulogic; | ||||
rfi1_ren2 : out std_ulogic; | ||||
rfi1_wren : out std_ulogic; | ||||
rfi2_rd1addr : out std_logic_vector(3 downto 0); | ||||
rfi2_rd2addr : out std_logic_vector(3 downto 0); | ||||
rfi2_wraddr : out std_logic_vector(3 downto 0); | ||||
rfi2_wrdata : out std_logic_vector(31 downto 0); | ||||
rfi2_ren1 : out std_ulogic; | ||||
rfi2_ren2 : out std_ulogic; | ||||
rfi2_wren : out std_ulogic; | ||||
rfo1_data1 : in std_logic_vector(31 downto 0); | ||||
rfo1_data2 : in std_logic_vector(31 downto 0); | ||||
rfo2_data1 : in std_logic_vector(31 downto 0); | ||||
rfo2_data2 : in std_logic_vector(31 downto 0) | ||||
); | ||||
end component; | ||||
component grfpw_net | ||||
generic (tech : integer := 0; | ||||
pclow : integer range 0 to 2 := 2; | ||||
dsu : integer range 0 to 2 := 1; | ||||
disas : integer range 0 to 2 := 0; | ||||
pipe : integer range 0 to 2 := 0 | ||||
); | ||||
port ( | ||||
rst : in std_ulogic; -- Reset | ||||
clk : in std_ulogic; | ||||
holdn : in std_ulogic; -- pipeline hold | ||||
cpi_flush : in std_ulogic; -- pipeline flush | ||||
cpi_exack : in std_ulogic; -- FP exception acknowledge | ||||
cpi_a_rs1 : in std_logic_vector(4 downto 0); | ||||
cpi_d_pc : in std_logic_vector(31 downto 0); | ||||
cpi_d_inst : in std_logic_vector(31 downto 0); | ||||
cpi_d_cnt : in std_logic_vector(1 downto 0); | ||||
cpi_d_trap : in std_ulogic; | ||||
cpi_d_annul : in std_ulogic; | ||||
cpi_d_pv : in std_ulogic; | ||||
cpi_a_pc : in std_logic_vector(31 downto 0); | ||||
cpi_a_inst : in std_logic_vector(31 downto 0); | ||||
cpi_a_cnt : in std_logic_vector(1 downto 0); | ||||
cpi_a_trap : in std_ulogic; | ||||
cpi_a_annul : in std_ulogic; | ||||
cpi_a_pv : in std_ulogic; | ||||
cpi_e_pc : in std_logic_vector(31 downto 0); | ||||
cpi_e_inst : in std_logic_vector(31 downto 0); | ||||
cpi_e_cnt : in std_logic_vector(1 downto 0); | ||||
cpi_e_trap : in std_ulogic; | ||||
cpi_e_annul : in std_ulogic; | ||||
cpi_e_pv : in std_ulogic; | ||||
cpi_m_pc : in std_logic_vector(31 downto 0); | ||||
cpi_m_inst : in std_logic_vector(31 downto 0); | ||||
cpi_m_cnt : in std_logic_vector(1 downto 0); | ||||
cpi_m_trap : in std_ulogic; | ||||
cpi_m_annul : in std_ulogic; | ||||
cpi_m_pv : in std_ulogic; | ||||
cpi_x_pc : in std_logic_vector(31 downto 0); | ||||
cpi_x_inst : in std_logic_vector(31 downto 0); | ||||
cpi_x_cnt : in std_logic_vector(1 downto 0); | ||||
cpi_x_trap : in std_ulogic; | ||||
cpi_x_annul : in std_ulogic; | ||||
cpi_x_pv : in std_ulogic; | ||||
cpi_lddata : in std_logic_vector(31 downto 0); -- load data | ||||
cpi_dbg_enable : in std_ulogic; | ||||
cpi_dbg_write : in std_ulogic; | ||||
cpi_dbg_fsr : in std_ulogic; -- FSR access | ||||
cpi_dbg_addr : in std_logic_vector(4 downto 0); | ||||
cpi_dbg_data : in std_logic_vector(31 downto 0); | ||||
cpo_data : out std_logic_vector(31 downto 0); -- store data | ||||
cpo_exc : out std_logic; -- FP exception | ||||
cpo_cc : out std_logic_vector(1 downto 0); -- FP condition codes | ||||
cpo_ccv : out std_ulogic; -- FP condition codes valid | ||||
cpo_ldlock : out std_logic; -- FP pipeline hold | ||||
cpo_holdn : out std_ulogic; | ||||
cpo_dbg_data : out std_logic_vector(31 downto 0); | ||||
rfi1_rd1addr : out std_logic_vector(3 downto 0); | ||||
rfi1_rd2addr : out std_logic_vector(3 downto 0); | ||||
rfi1_wraddr : out std_logic_vector(3 downto 0); | ||||
rfi1_wrdata : out std_logic_vector(31 downto 0); | ||||
rfi1_ren1 : out std_ulogic; | ||||
rfi1_ren2 : out std_ulogic; | ||||
rfi1_wren : out std_ulogic; | ||||
rfi2_rd1addr : out std_logic_vector(3 downto 0); | ||||
rfi2_rd2addr : out std_logic_vector(3 downto 0); | ||||
rfi2_wraddr : out std_logic_vector(3 downto 0); | ||||
rfi2_wrdata : out std_logic_vector(31 downto 0); | ||||
rfi2_ren1 : out std_ulogic; | ||||
rfi2_ren2 : out std_ulogic; | ||||
rfi2_wren : out std_ulogic; | ||||
rfo1_data1 : in std_logic_vector(31 downto 0); | ||||
rfo1_data2 : in std_logic_vector(31 downto 0); | ||||
rfo2_data1 : in std_logic_vector(31 downto 0); | ||||
rfo2_data2 : in std_logic_vector(31 downto 0) | ||||
); | ||||
end component; | ||||
component leon3ft_net | ||||
generic ( | ||||
hindex : integer := 0; | ||||
fabtech : integer range 0 to NTECH := DEFFABTECH; | ||||
memtech : integer range 0 to NTECH := DEFMEMTECH; | ||||
nwindows : integer range 2 to 32 := 8; | ||||
dsu : integer range 0 to 1 := 0; | ||||
fpu : integer range 0 to 31 := 0; | ||||
v8 : integer range 0 to 63 := 0; | ||||
cp : integer range 0 to 1 := 0; | ||||
mac : integer range 0 to 1 := 0; | ||||
pclow : integer range 0 to 2 := 2; | ||||
notag : integer range 0 to 1 := 0; | ||||
nwp : integer range 0 to 4 := 0; | ||||
icen : integer range 0 to 1 := 0; | ||||
irepl : integer range 0 to 2 := 2; | ||||
isets : integer range 1 to 4 := 1; | ||||
ilinesize : integer range 4 to 8 := 4; | ||||
isetsize : integer range 1 to 256 := 1; | ||||
isetlock : integer range 0 to 1 := 0; | ||||
dcen : integer range 0 to 1 := 0; | ||||
drepl : integer range 0 to 2 := 2; | ||||
dsets : integer range 1 to 4 := 1; | ||||
dlinesize : integer range 4 to 8 := 4; | ||||
dsetsize : integer range 1 to 256 := 1; | ||||
dsetlock : integer range 0 to 1 := 0; | ||||
dsnoop : integer range 0 to 6 := 0; | ||||
ilram : integer range 0 to 1 := 0; | ||||
ilramsize : integer range 1 to 512 := 1; | ||||
ilramstart : integer range 0 to 255 := 16#8e#; | ||||
dlram : integer range 0 to 1 := 0; | ||||
dlramsize : integer range 1 to 512 := 1; | ||||
dlramstart : integer range 0 to 255 := 16#8f#; | ||||
mmuen : integer range 0 to 1 := 0; | ||||
itlbnum : integer range 2 to 64 := 8; | ||||
dtlbnum : integer range 2 to 64 := 8; | ||||
tlb_type : integer range 0 to 3 := 1; | ||||
tlb_rep : integer range 0 to 1 := 0; | ||||
lddel : integer range 1 to 2 := 2; | ||||
disas : integer range 0 to 2 := 0; | ||||
tbuf : integer range 0 to 64 := 0; | ||||
pwd : integer range 0 to 2 := 2; -- power-down | ||||
svt : integer range 0 to 1 := 1; -- single vector trapping | ||||
rstaddr : integer := 0; | ||||
smp : integer range 0 to 15 := 0; -- support SMP systems | ||||
iuft : integer range 0 to 4 := 0; | ||||
fpft : integer range 0 to 4 := 0; | ||||
cmft : integer range 0 to 1 := 0; | ||||
cached : integer := 0; | ||||
scantest : integer := 0; | ||||
mmupgsz : integer range 0 to 5 := 0 | ||||
); | ||||
port ( | ||||
clk : in std_ulogic; | ||||
gclk : in std_ulogic; | ||||
rstn : in std_ulogic; | ||||
ahbix : in ahb_mst_in_type; | ||||
ahbox : out ahb_mst_out_type; | ||||
ahbsix : in ahb_slv_in_type; | ||||
ahbso : in ahb_slv_out_vector; | ||||
irqi_irl: in std_logic_vector(3 downto 0); | ||||
irqi_rst: in std_ulogic; | ||||
irqi_run: in std_ulogic; | ||||
irqo_intack: out std_ulogic; | ||||
irqo_irl: out std_logic_vector(3 downto 0); | ||||
irqo_pwd: out std_ulogic; | ||||
dbgi_dsuen: in std_ulogic; -- DSU enable | ||||
dbgi_denable: in std_ulogic; -- diagnostic register access enable | ||||
dbgi_dbreak: in std_ulogic; -- debug break-in | ||||
dbgi_step: in std_ulogic; -- single step | ||||
dbgi_halt: in std_ulogic; -- halt processor | ||||
dbgi_reset: in std_ulogic; -- reset processor | ||||
dbgi_dwrite: in std_ulogic; -- read/write | ||||
dbgi_daddr: in std_logic_vector(23 downto 2); -- diagnostic address | ||||
dbgi_ddata: in std_logic_vector(31 downto 0); -- diagnostic data | ||||
dbgi_btrapa: in std_ulogic; -- break on IU trap | ||||
dbgi_btrape: in std_ulogic; -- break on IU trap | ||||
dbgi_berror: in std_ulogic; -- break on IU error mode | ||||
dbgi_bwatch: in std_ulogic; -- break on IU watchpoint | ||||
dbgi_bsoft: in std_ulogic; -- break on software breakpoint (TA 1) | ||||
dbgi_tenable: in std_ulogic; | ||||
dbgi_timer: in std_logic_vector(30 downto 0); | ||||
dbgo_data: out std_logic_vector(31 downto 0); | ||||
dbgo_crdy: out std_ulogic; | ||||
dbgo_dsu: out std_ulogic; | ||||
dbgo_dsumode: out std_ulogic; | ||||
dbgo_error: out std_ulogic; | ||||
dbgo_halt: out std_ulogic; | ||||
dbgo_pwd: out std_ulogic; | ||||
dbgo_idle: out std_ulogic; | ||||
dbgo_ipend: out std_ulogic; | ||||
dbgo_icnt: out std_ulogic | ||||
); | ||||
end component; | ||||
component ftmctrl_net | ||||
generic ( | ||||
hindex : integer := 0; | ||||
pindex : integer := 0; | ||||
romaddr : integer := 16#000#; | ||||
rommask : integer := 16#E00#; | ||||
ioaddr : integer := 16#200#; | ||||
iomask : integer := 16#E00#; | ||||
ramaddr : integer := 16#400#; | ||||
rammask : integer := 16#C00#; | ||||
paddr : integer := 0; | ||||
pmask : integer := 16#fff#; | ||||
wprot : integer := 0; | ||||
invclk : integer := 0; | ||||
fast : integer := 0; | ||||
romasel : integer := 28; | ||||
sdrasel : integer := 29; | ||||
srbanks : integer := 4; | ||||
ram8 : integer := 0; | ||||
ram16 : integer := 0; | ||||
sden : integer := 0; | ||||
sepbus : integer := 0; | ||||
sdbits : integer := 32; | ||||
sdlsb : integer := 2; -- set to 12 for the GE-HPE board | ||||
oepol : integer := 0; | ||||
edac : integer := 0; | ||||
syncrst : integer := 0; | ||||
pageburst : integer := 0; | ||||
scantest : integer := 0; | ||||
writefb : integer := 0; | ||||
tech : integer := 0 | ||||
); | ||||
port ( | ||||
rst: in Std_ULogic; | ||||
clk: in Std_ULogic; | ||||
ahbsi: in ahb_slv_in_type; | ||||
ahbso: out ahb_slv_out_type; | ||||
apbi: in apb_slv_in_type; | ||||
apbo: out apb_slv_out_type; | ||||
memi_data: in Std_Logic_Vector(31 downto 0); | ||||
memi_brdyn: in Std_Logic; | ||||
memi_bexcn: in Std_Logic; | ||||
memi_writen: in Std_Logic; | ||||
memi_wrn: in Std_Logic_Vector(3 downto 0); | ||||
memi_bwidth: in Std_Logic_Vector(1 downto 0); | ||||
memi_sd: in Std_Logic_Vector(63 downto 0); | ||||
memi_cb: in Std_Logic_Vector(15 downto 0); | ||||
memi_scb: in Std_Logic_Vector(15 downto 0); | ||||
memi_edac: in Std_Logic; | ||||
memo_address: out Std_Logic_Vector(31 downto 0); | ||||
memo_data: out Std_Logic_Vector(31 downto 0); | ||||
memo_sddata: out Std_Logic_Vector(63 downto 0); | ||||
memo_ramsn: out Std_Logic_Vector(7 downto 0); | ||||
memo_ramoen: out Std_Logic_Vector(7 downto 0); | ||||
memo_ramn: out Std_ULogic; | ||||
memo_romn: out Std_ULogic; | ||||
memo_mben: out Std_Logic_Vector(3 downto 0); | ||||
memo_iosn: out Std_Logic; | ||||
memo_romsn: out Std_Logic_Vector(7 downto 0); | ||||
memo_oen: out Std_Logic; | ||||
memo_writen: out Std_Logic; | ||||
memo_wrn: out Std_Logic_Vector(3 downto 0); | ||||
memo_bdrive: out Std_Logic_Vector(3 downto 0); | ||||
memo_vbdrive: out Std_Logic_Vector(31 downto 0); | ||||
memo_svbdrive: out Std_Logic_Vector(63 downto 0); | ||||
memo_read: out Std_Logic; | ||||
memo_sa: out Std_Logic_Vector(14 downto 0); | ||||
memo_cb: out Std_Logic_Vector(15 downto 0); | ||||
memo_scb: out Std_Logic_Vector(15 downto 0); | ||||
memo_vcdrive: out Std_Logic_Vector(15 downto 0); | ||||
memo_svcdrive: out Std_Logic_Vector(15 downto 0); | ||||
memo_ce: out Std_ULogic; | ||||
sdo_sdcke: out Std_Logic_Vector( 1 downto 0); | ||||
sdo_sdcsn: out Std_Logic_Vector( 1 downto 0); | ||||
sdo_sdwen: out Std_ULogic; | ||||
sdo_rasn: out Std_ULogic; | ||||
sdo_casn: out Std_ULogic; | ||||
sdo_dqm: out Std_Logic_Vector( 7 downto 0); | ||||
wpo_wprothit: in Std_ULogic); | ||||
end component; | ||||
component ssrctrl_net | ||||
generic ( | ||||
tech: Integer := 0; | ||||
bus16: Integer := 1); | ||||
port ( | ||||
rst: in Std_Logic; | ||||
clk: in Std_Logic; | ||||
n_ahbsi_hsel: in Std_Logic_Vector(0 to 15); | ||||
n_ahbsi_haddr: in Std_Logic_Vector(31 downto 0); | ||||
n_ahbsi_hwrite: in Std_Logic; | ||||
n_ahbsi_htrans: in Std_Logic_Vector(1 downto 0); | ||||
n_ahbsi_hsize: in Std_Logic_Vector(2 downto 0); | ||||
n_ahbsi_hburst: in Std_Logic_Vector(2 downto 0); | ||||
n_ahbsi_hwdata: in Std_Logic_Vector(31 downto 0); | ||||
n_ahbsi_hprot: in Std_Logic_Vector(3 downto 0); | ||||
n_ahbsi_hready: in Std_Logic; | ||||
n_ahbsi_hmaster: in Std_Logic_Vector(3 downto 0); | ||||
n_ahbsi_hmastlock:in Std_Logic; | ||||
n_ahbsi_hmbsel: in Std_Logic_Vector(0 to 3); | ||||
n_ahbsi_hcache: in Std_Logic; | ||||
n_ahbsi_hirq: in Std_Logic_Vector(31 downto 0); | ||||
n_ahbso_hready: out Std_Logic; | ||||
n_ahbso_hresp: out Std_Logic_Vector(1 downto 0); | ||||
n_ahbso_hrdata: out Std_Logic_Vector(31 downto 0); | ||||
n_ahbso_hsplit: out Std_Logic_Vector(15 downto 0); | ||||
n_ahbso_hcache: out Std_Logic; | ||||
n_ahbso_hirq: out Std_Logic_Vector(31 downto 0); | ||||
n_apbi_psel: in Std_Logic_Vector(0 to 15); | ||||
n_apbi_penable: in Std_Logic; | ||||
n_apbi_paddr: in Std_Logic_Vector(31 downto 0); | ||||
n_apbi_pwrite: in Std_Logic; | ||||
n_apbi_pwdata: in Std_Logic_Vector(31 downto 0); | ||||
n_apbi_pirq: in Std_Logic_Vector(31 downto 0); | ||||
n_apbo_prdata: out Std_Logic_Vector(31 downto 0); | ||||
n_apbo_pirq: out Std_Logic_Vector(31 downto 0); | ||||
n_sri_data: in Std_Logic_Vector(31 downto 0); | ||||
n_sri_brdyn: in Std_Logic; | ||||
n_sri_bexcn: in Std_Logic; | ||||
n_sri_writen: in Std_Logic; | ||||
n_sri_wrn: in Std_Logic_Vector(3 downto 0); | ||||
n_sri_bwidth: in Std_Logic_Vector(1 downto 0); | ||||
n_sri_sd: in Std_Logic_Vector(63 downto 0); | ||||
n_sri_cb: in Std_Logic_Vector(7 downto 0); | ||||
n_sri_scb: in Std_Logic_Vector(7 downto 0); | ||||
n_sri_edac: in Std_Logic; | ||||
n_sro_address: out Std_Logic_Vector(31 downto 0); | ||||
n_sro_data: out Std_Logic_Vector(31 downto 0); | ||||
n_sro_sddata: out Std_Logic_Vector(63 downto 0); | ||||
n_sro_ramsn: out Std_Logic_Vector(7 downto 0); | ||||
n_sro_ramoen: out Std_Logic_Vector(7 downto 0); | ||||
n_sro_ramn: out Std_Logic; | ||||
n_sro_romn: out Std_Logic; | ||||
n_sro_mben: out Std_Logic_Vector(3 downto 0); | ||||
n_sro_iosn: out Std_Logic; | ||||
n_sro_romsn: out Std_Logic_Vector(7 downto 0); | ||||
n_sro_oen: out Std_Logic; | ||||
n_sro_writen: out Std_Logic; | ||||
n_sro_wrn: out Std_Logic_Vector(3 downto 0); | ||||
n_sro_bdrive: out Std_Logic_Vector(3 downto 0); | ||||
n_sro_vbdrive: out Std_Logic_Vector(31 downto 0); | ||||
n_sro_svbdrive: out Std_Logic_Vector(63 downto 0); | ||||
n_sro_read: out Std_Logic; | ||||
n_sro_sa: out Std_Logic_Vector(14 downto 0); | ||||
n_sro_cb: out Std_Logic_Vector(7 downto 0); | ||||
n_sro_scb: out Std_Logic_Vector(7 downto 0); | ||||
n_sro_vcdrive: out Std_Logic_Vector(7 downto 0); | ||||
n_sro_svcdrive: out Std_Logic_Vector(7 downto 0); | ||||
n_sro_ce: out Std_Logic); | ||||
end component; | ||||
component ftsrctrl_net | ||||
generic ( | ||||
hindex : integer := 0; | ||||
romaddr : integer := 0; | ||||
rommask : integer := 16#ff0#; | ||||
ramaddr : integer := 16#400#; | ||||
rammask : integer := 16#ff0#; | ||||
ioaddr : integer := 16#200#; | ||||
iomask : integer := 16#ff0#; | ||||
ramws : integer := 0; | ||||
romws : integer := 2; | ||||
iows : integer := 2; | ||||
rmw : integer := 0; | ||||
srbanks : integer range 1 to 8 := 1; | ||||
banksz : integer range 0 to 15 := 15; | ||||
rombanks : integer range 1 to 8 := 1; | ||||
rombanksz : integer range 0 to 15 := 15; | ||||
rombankszdef : integer range 0 to 15 := 15; | ||||
pindex : integer := 0; | ||||
paddr : integer := 0; | ||||
pmask : integer := 16#fff#; | ||||
edacen : integer range 0 to 1 := 1; | ||||
errcnt : integer range 0 to 1 := 0; | ||||
cntbits : integer range 1 to 8 := 1; | ||||
wsreg : integer := 0; | ||||
oepol : integer := 0; | ||||
prom8en : integer := 0; | ||||
netlist : integer := 0; | ||||
tech : integer := 0 | ||||
); | ||||
port ( | ||||
rst: in Std_ULogic; | ||||
clk: in Std_ULogic; | ||||
ahbsi : in ahb_slv_in_type; | ||||
ahbso : out ahb_slv_out_type; | ||||
apbi : in apb_slv_in_type; | ||||
apbo : out apb_slv_out_type; | ||||
sri_data: in Std_Logic_Vector(31 downto 0); -- Data bus address | ||||
sri_brdyn: in Std_Logic; | ||||
sri_bexcn: in Std_Logic; | ||||
sri_writen: in Std_Logic; | ||||
sri_wrn: in Std_Logic_Vector(3 downto 0); | ||||
sri_bwidth: in Std_Logic_Vector(1 downto 0); | ||||
sri_sd: in Std_Logic_Vector(63 downto 0); | ||||
sri_cb: in Std_Logic_Vector(15 downto 0); | ||||
sri_scb: in Std_Logic_Vector(15 downto 0); | ||||
sri_edac: in Std_Logic; | ||||
sro_address: out Std_Logic_Vector(31 downto 0); | ||||
sro_data: out Std_Logic_Vector(31 downto 0); | ||||
sro_sddata: out Std_Logic_Vector(63 downto 0); | ||||
sro_ramsn: out Std_Logic_Vector(7 downto 0); | ||||
sro_ramoen: out Std_Logic_Vector(7 downto 0); | ||||
sro_ramn: out Std_ULogic; | ||||
sro_romn: out Std_ULogic; | ||||
sro_mben: out Std_Logic_Vector(3 downto 0); | ||||
sro_iosn: out Std_Logic; | ||||
sro_romsn: out Std_Logic_Vector(7 downto 0); | ||||
sro_oen: out Std_Logic; | ||||
sro_writen: out Std_Logic; | ||||
sro_wrn: out Std_Logic_Vector(3 downto 0); | ||||
sro_bdrive: out Std_Logic_Vector(3 downto 0); | ||||
sro_vbdrive: out Std_Logic_Vector(31 downto 0); --vector bus drive | ||||
sro_svbdrive: out Std_Logic_Vector(63 downto 0); --vector bus drive sdram | ||||
sro_read: out Std_Logic; | ||||
sro_sa: out Std_Logic_Vector(14 downto 0); | ||||
sro_cb: out Std_Logic_Vector(15 downto 0); | ||||
sro_scb: out Std_Logic_Vector(15 downto 0); | ||||
sro_vcdrive: out Std_Logic_Vector(15 downto 0); --vector bus drive cb | ||||
sro_svcdrive: out Std_Logic_Vector(15 downto 0); --vector bus drive cb sdram | ||||
sro_ce: out Std_ULogic; | ||||
sdo_sdcke: out Std_Logic_Vector( 1 downto 0); -- clk en | ||||
sdo_sdcsn: out Std_Logic_Vector( 1 downto 0); -- chip sel | ||||
sdo_sdwen: out Std_ULogic; -- write en | ||||
sdo_rasn: out Std_ULogic; -- row addr stb | ||||
sdo_casn: out Std_ULogic; -- col addr stb | ||||
sdo_dqm: out Std_Logic_Vector(15 downto 0); -- data i/o mask | ||||
sdo_bdrive: out Std_ULogic; -- bus drive | ||||
sdo_qdrive: out Std_ULogic; -- bus drive | ||||
sdo_vbdrive: out Std_Logic_Vector(31 downto 0); -- vector bus drive | ||||
sdo_address: out Std_Logic_Vector(16 downto 2); -- address out | ||||
sdo_data: out Std_Logic_Vector(127 downto 0); -- data out | ||||
sdo_cb: out Std_Logic_Vector(15 downto 0); | ||||
sdo_ce: out Std_ULogic; | ||||
sdo_ba: out Std_Logic_Vector(2 downto 0)); -- bank address | ||||
end component; | ||||
component grlfpw4_net | ||||
generic (tech : integer := 0; | ||||
pclow : integer range 0 to 2 := 2; | ||||
dsu : integer range 0 to 1 := 1; | ||||
disas : integer range 0 to 2 := 0; | ||||
pipe : integer range 0 to 2 := 0; | ||||
wrt : integer range 0 to 2 := 0 | ||||
); | ||||
port ( | ||||
rst : in std_ulogic; -- Reset | ||||
clk : in std_ulogic; | ||||
holdn : in std_ulogic; -- pipeline hold | ||||
cpi_flush : in std_ulogic; -- pipeline flush | ||||
cpi_exack : in std_ulogic; -- FP exception acknowledge | ||||
cpi_a_rs1 : in std_logic_vector(4 downto 0); | ||||
cpi_d_pc : in std_logic_vector(31 downto 0); | ||||
cpi_d_inst : in std_logic_vector(31 downto 0); | ||||
cpi_d_cnt : in std_logic_vector(1 downto 0); | ||||
cpi_d_trap : in std_ulogic; | ||||
cpi_d_annul : in std_ulogic; | ||||
cpi_d_pv : in std_ulogic; | ||||
cpi_a_pc : in std_logic_vector(31 downto 0); | ||||
cpi_a_inst : in std_logic_vector(31 downto 0); | ||||
cpi_a_cnt : in std_logic_vector(1 downto 0); | ||||
cpi_a_trap : in std_ulogic; | ||||
cpi_a_annul : in std_ulogic; | ||||
cpi_a_pv : in std_ulogic; | ||||
cpi_e_pc : in std_logic_vector(31 downto 0); | ||||
cpi_e_inst : in std_logic_vector(31 downto 0); | ||||
cpi_e_cnt : in std_logic_vector(1 downto 0); | ||||
cpi_e_trap : in std_ulogic; | ||||
cpi_e_annul : in std_ulogic; | ||||
cpi_e_pv : in std_ulogic; | ||||
cpi_m_pc : in std_logic_vector(31 downto 0); | ||||
cpi_m_inst : in std_logic_vector(31 downto 0); | ||||
cpi_m_cnt : in std_logic_vector(1 downto 0); | ||||
cpi_m_trap : in std_ulogic; | ||||
cpi_m_annul : in std_ulogic; | ||||
cpi_m_pv : in std_ulogic; | ||||
cpi_x_pc : in std_logic_vector(31 downto 0); | ||||
cpi_x_inst : in std_logic_vector(31 downto 0); | ||||
cpi_x_cnt : in std_logic_vector(1 downto 0); | ||||
cpi_x_trap : in std_ulogic; | ||||
cpi_x_annul : in std_ulogic; | ||||
cpi_x_pv : in std_ulogic; | ||||
cpi_lddata : in std_logic_vector(63 downto 0); -- load data | ||||
cpi_dbg_enable : in std_ulogic; | ||||
cpi_dbg_write : in std_ulogic; | ||||
cpi_dbg_fsr : in std_ulogic; -- FSR access | ||||
cpi_dbg_addr : in std_logic_vector(4 downto 0); | ||||
cpi_dbg_data : in std_logic_vector(31 downto 0); | ||||
cpo_data : out std_logic_vector(63 downto 0); -- store data | ||||
cpo_exc : out std_logic; -- FP exception | ||||
cpo_cc : out std_logic_vector(1 downto 0); -- FP condition codes | ||||
cpo_ccv : out std_ulogic; -- FP condition codes valid | ||||
cpo_ldlock : out std_logic; -- FP pipeline hold | ||||
cpo_holdn : out std_ulogic; | ||||
cpo_dbg_data : out std_logic_vector(31 downto 0); | ||||
rfi1_rd1addr : out std_logic_vector(3 downto 0); | ||||
rfi1_rd2addr : out std_logic_vector(3 downto 0); | ||||
rfi1_wraddr : out std_logic_vector(3 downto 0); | ||||
rfi1_wrdata : out std_logic_vector(31 downto 0); | ||||
rfi1_ren1 : out std_ulogic; | ||||
rfi1_ren2 : out std_ulogic; | ||||
rfi1_wren : out std_ulogic; | ||||
rfi2_rd1addr : out std_logic_vector(3 downto 0); | ||||
rfi2_rd2addr : out std_logic_vector(3 downto 0); | ||||
rfi2_wraddr : out std_logic_vector(3 downto 0); | ||||
rfi2_wrdata : out std_logic_vector(31 downto 0); | ||||
rfi2_ren1 : out std_ulogic; | ||||
rfi2_ren2 : out std_ulogic; | ||||
rfi2_wren : out std_ulogic; | ||||
rfo1_data1 : in std_logic_vector(31 downto 0); | ||||
rfo1_data2 : in std_logic_vector(31 downto 0); | ||||
rfo2_data1 : in std_logic_vector(31 downto 0); | ||||
rfo2_data2 : in std_logic_vector(31 downto 0) | ||||
); | ||||
end component; | ||||
component grfpw4_net | ||||
generic (tech : integer := 0; | ||||
pclow : integer range 0 to 2 := 2; | ||||
dsu : integer range 0 to 2 := 1; | ||||
disas : integer range 0 to 2 := 0; | ||||
pipe : integer range 0 to 2 := 0 | ||||
); | ||||
port ( | ||||
rst : in std_ulogic; -- Reset | ||||
clk : in std_ulogic; | ||||
holdn : in std_ulogic; -- pipeline hold | ||||
cpi_flush : in std_ulogic; -- pipeline flush | ||||
cpi_exack : in std_ulogic; -- FP exception acknowledge | ||||
cpi_a_rs1 : in std_logic_vector(4 downto 0); | ||||
cpi_d_pc : in std_logic_vector(31 downto 0); | ||||
cpi_d_inst : in std_logic_vector(31 downto 0); | ||||
cpi_d_cnt : in std_logic_vector(1 downto 0); | ||||
cpi_d_trap : in std_ulogic; | ||||
cpi_d_annul : in std_ulogic; | ||||
cpi_d_pv : in std_ulogic; | ||||
cpi_a_pc : in std_logic_vector(31 downto 0); | ||||
cpi_a_inst : in std_logic_vector(31 downto 0); | ||||
cpi_a_cnt : in std_logic_vector(1 downto 0); | ||||
cpi_a_trap : in std_ulogic; | ||||
cpi_a_annul : in std_ulogic; | ||||
cpi_a_pv : in std_ulogic; | ||||
cpi_e_pc : in std_logic_vector(31 downto 0); | ||||
cpi_e_inst : in std_logic_vector(31 downto 0); | ||||
cpi_e_cnt : in std_logic_vector(1 downto 0); | ||||
cpi_e_trap : in std_ulogic; | ||||
cpi_e_annul : in std_ulogic; | ||||
cpi_e_pv : in std_ulogic; | ||||
cpi_m_pc : in std_logic_vector(31 downto 0); | ||||
cpi_m_inst : in std_logic_vector(31 downto 0); | ||||
cpi_m_cnt : in std_logic_vector(1 downto 0); | ||||
cpi_m_trap : in std_ulogic; | ||||
cpi_m_annul : in std_ulogic; | ||||
cpi_m_pv : in std_ulogic; | ||||
cpi_x_pc : in std_logic_vector(31 downto 0); | ||||
cpi_x_inst : in std_logic_vector(31 downto 0); | ||||
cpi_x_cnt : in std_logic_vector(1 downto 0); | ||||
cpi_x_trap : in std_ulogic; | ||||
cpi_x_annul : in std_ulogic; | ||||
cpi_x_pv : in std_ulogic; | ||||
cpi_lddata : in std_logic_vector(63 downto 0); -- load data | ||||
cpi_dbg_enable : in std_ulogic; | ||||
cpi_dbg_write : in std_ulogic; | ||||
cpi_dbg_fsr : in std_ulogic; -- FSR access | ||||
cpi_dbg_addr : in std_logic_vector(4 downto 0); | ||||
cpi_dbg_data : in std_logic_vector(31 downto 0); | ||||
cpo_data : out std_logic_vector(63 downto 0); -- store data | ||||
cpo_exc : out std_logic; -- FP exception | ||||
cpo_cc : out std_logic_vector(1 downto 0); -- FP condition codes | ||||
cpo_ccv : out std_ulogic; -- FP condition codes valid | ||||
cpo_ldlock : out std_logic; -- FP pipeline hold | ||||
cpo_holdn : out std_ulogic; | ||||
cpo_dbg_data : out std_logic_vector(31 downto 0); | ||||
rfi1_rd1addr : out std_logic_vector(3 downto 0); | ||||
rfi1_rd2addr : out std_logic_vector(3 downto 0); | ||||
rfi1_wraddr : out std_logic_vector(3 downto 0); | ||||
rfi1_wrdata : out std_logic_vector(31 downto 0); | ||||
rfi1_ren1 : out std_ulogic; | ||||
rfi1_ren2 : out std_ulogic; | ||||
rfi1_wren : out std_ulogic; | ||||
rfi2_rd1addr : out std_logic_vector(3 downto 0); | ||||
rfi2_rd2addr : out std_logic_vector(3 downto 0); | ||||
rfi2_wraddr : out std_logic_vector(3 downto 0); | ||||
rfi2_wrdata : out std_logic_vector(31 downto 0); | ||||
rfi2_ren1 : out std_ulogic; | ||||
rfi2_ren2 : out std_ulogic; | ||||
rfi2_wren : out std_ulogic; | ||||
rfo1_data1 : in std_logic_vector(31 downto 0); | ||||
rfo1_data2 : in std_logic_vector(31 downto 0); | ||||
rfo2_data1 : in std_logic_vector(31 downto 0); | ||||
rfo2_data2 : in std_logic_vector(31 downto 0) | ||||
); | ||||
end component; | ||||
component spictrl_net | ||||
generic ( | ||||
tech : integer range 0 to NTECH := 0; | ||||
fdepth : integer range 1 to 7 := 1; | ||||
slvselen : integer range 0 to 1 := 0; | ||||
slvselsz : integer range 1 to 32 := 1; | ||||
oepol : integer range 0 to 1 := 0; | ||||
odmode : integer range 0 to 1 := 0; | ||||
automode : integer range 0 to 1 := 0; | ||||
acntbits : integer range 1 to 32 := 32; | ||||
aslvsel : integer range 0 to 1 := 0; | ||||
twen : integer range 0 to 1 := 1; | ||||
maxwlen : integer range 0 to 15 := 0); | ||||
port ( | ||||
rstn : in std_ulogic; | ||||
clk : in std_ulogic; | ||||
apbi_psel : in std_ulogic; | ||||
apbi_penable : in std_ulogic; | ||||
apbi_paddr : in std_logic_vector(31 downto 0); | ||||
apbi_pwrite : in std_ulogic; | ||||
apbi_pwdata : in std_logic_vector(31 downto 0); | ||||
apbi_testen : in std_ulogic; | ||||
apbi_testrst : in std_ulogic; | ||||
apbi_scanen : in std_ulogic; | ||||
apbi_testoen : in std_ulogic; | ||||
apbo_prdata : out std_logic_vector(31 downto 0); | ||||
apbo_pirq : out std_ulogic; | ||||
spii_miso : in std_ulogic; | ||||
spii_mosi : in std_ulogic; | ||||
spii_sck : in std_ulogic; | ||||
spii_spisel : in std_ulogic; | ||||
spii_astart : in std_ulogic; | ||||
spio_miso : out std_ulogic; | ||||
spio_misooen : out std_ulogic; | ||||
spio_mosi : out std_ulogic; | ||||
spio_mosioen : out std_ulogic; | ||||
spio_sck : out std_ulogic; | ||||
spio_sckoen : out std_ulogic; | ||||
spio_enable : out std_ulogic; | ||||
spio_astart : out std_ulogic; | ||||
slvsel : out std_logic_vector((slvselsz-1) downto 0)); | ||||
end component; | ||||
component leon4_net | ||||
generic ( | ||||
hindex : integer := 0; | ||||
fabtech : integer range 0 to NTECH := DEFFABTECH; | ||||
memtech : integer range 0 to NTECH := DEFMEMTECH; | ||||
nwindows : integer range 2 to 32 := 8; | ||||
dsu : integer range 0 to 1 := 0; | ||||
fpu : integer range 0 to 31 := 0; | ||||
v8 : integer range 0 to 63 := 0; | ||||
cp : integer range 0 to 1 := 0; | ||||
mac : integer range 0 to 1 := 0; | ||||
pclow : integer range 0 to 2 := 2; | ||||
notag : integer range 0 to 1 := 0; | ||||
nwp : integer range 0 to 4 := 0; | ||||
icen : integer range 0 to 1 := 0; | ||||
irepl : integer range 0 to 2 := 2; | ||||
isets : integer range 1 to 4 := 1; | ||||
ilinesize : integer range 4 to 8 := 4; | ||||
isetsize : integer range 1 to 256 := 1; | ||||
isetlock : integer range 0 to 1 := 0; | ||||
dcen : integer range 0 to 1 := 0; | ||||
drepl : integer range 0 to 2 := 2; | ||||
dsets : integer range 1 to 4 := 1; | ||||
dlinesize : integer range 4 to 8 := 4; | ||||
dsetsize : integer range 1 to 256 := 1; | ||||
dsetlock : integer range 0 to 1 := 0; | ||||
dsnoop : integer range 0 to 6 := 0; | ||||
ilram : integer range 0 to 1 := 0; | ||||
ilramsize : integer range 1 to 512 := 1; | ||||
ilramstart : integer range 0 to 255 := 16#8e#; | ||||
dlram : integer range 0 to 1 := 0; | ||||
dlramsize : integer range 1 to 512 := 1; | ||||
dlramstart : integer range 0 to 255 := 16#8f#; | ||||
mmuen : integer range 0 to 1 := 0; | ||||
itlbnum : integer range 2 to 64 := 8; | ||||
dtlbnum : integer range 2 to 64 := 8; | ||||
tlb_type : integer range 0 to 3 := 1; | ||||
tlb_rep : integer range 0 to 1 := 0; | ||||
lddel : integer range 1 to 2 := 2; | ||||
disas : integer range 0 to 2 := 0; | ||||
tbuf : integer range 0 to 64 := 0; | ||||
pwd : integer range 0 to 2 := 2; -- power-down | ||||
svt : integer range 0 to 1 := 1; -- single vector trapping | ||||
rstaddr : integer := 0; | ||||
smp : integer range 0 to 31 := 0; -- support SMP systems | ||||
iuft : integer range 0 to 4 := 0; | ||||
fpft : integer range 0 to 4 := 0; | ||||
cmft : integer range 0 to 1 := 0; | ||||
cached : integer := 0; | ||||
scantest : integer := 0 | ||||
); | ||||
port ( | ||||
clk : in std_ulogic; | ||||
gclk : in std_ulogic; | ||||
rstn : in std_ulogic; | ||||
ahbix : in ahb_mst_in_type; | ||||
ahbox : out ahb_mst_out_type; | ||||
ahbsix : in ahb_slv_in_type; | ||||
ahbso : in ahb_slv_out_vector; | ||||
irqi_irl: in std_logic_vector(3 downto 0); | ||||
irqi_rst: in std_ulogic; | ||||
irqi_run: in std_ulogic; | ||||
irqi_rstvec: in std_logic_vector(31 downto 12); | ||||
irqi_iact: in std_ulogic; | ||||
irqi_index: in std_logic_vector(3 downto 0); | ||||
irqo_intack: out std_ulogic; | ||||
irqo_irl: out std_logic_vector(3 downto 0); | ||||
irqo_pwd: out std_ulogic; | ||||
irqo_fpen: out std_ulogic; | ||||
dbgi_dsuen: in std_ulogic; -- DSU enable | ||||
dbgi_denable: in std_ulogic; -- diagnostic register access enable | ||||
dbgi_dbreak: in std_ulogic; -- debug break-in | ||||
dbgi_step: in std_ulogic; -- single step | ||||
dbgi_halt: in std_ulogic; -- halt processor | ||||
dbgi_reset: in std_ulogic; -- reset processor | ||||
dbgi_dwrite: in std_ulogic; -- read/write | ||||
dbgi_daddr: in std_logic_vector(23 downto 2); -- diagnostic address | ||||
dbgi_ddata: in std_logic_vector(31 downto 0); -- diagnostic data | ||||
dbgi_btrapa: in std_ulogic; -- break on IU trap | ||||
dbgi_btrape: in std_ulogic; -- break on IU trap | ||||
dbgi_berror: in std_ulogic; -- break on IU error mode | ||||
dbgi_bwatch: in std_ulogic; -- break on IU watchpoint | ||||
dbgi_bsoft: in std_ulogic; -- break on software breakpoint (TA 1) | ||||
dbgi_tenable: in std_ulogic; | ||||
dbgi_timer: in std_logic_vector(30 downto 0); | ||||
dbgo_data: out std_logic_vector(31 downto 0); | ||||
dbgo_crdy: out std_ulogic; | ||||
dbgo_dsu: out std_ulogic; | ||||
dbgo_dsumode: out std_ulogic; | ||||
dbgo_error: out std_ulogic; | ||||
dbgo_halt: out std_ulogic; | ||||
dbgo_pwd: out std_ulogic; | ||||
dbgo_idle: out std_ulogic; | ||||
dbgo_ipend: out std_ulogic; | ||||
dbgo_icnt: out std_ulogic; | ||||
dbgo_fcnt : out std_ulogic; | ||||
dbgo_optype : out std_logic_vector(5 downto 0); -- instruction type | ||||
dbgo_bpmiss : out std_ulogic; -- branch predict miss | ||||
dbgo_istat_cmiss: out std_ulogic; | ||||
dbgo_istat_tmiss: out std_ulogic; | ||||
dbgo_istat_chold: out std_ulogic; | ||||
dbgo_istat_mhold: out std_ulogic; | ||||
dbgo_dstat_cmiss: out std_ulogic; | ||||
dbgo_dstat_tmiss: out std_ulogic; | ||||
dbgo_dstat_chold: out std_ulogic; | ||||
dbgo_dstat_mhold: out std_ulogic; | ||||
dbgo_wbhold : out std_ulogic; -- write buffer hold | ||||
dbgo_su : out std_ulogic); | ||||
end component; | ||||
end; | ||||