You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
996 lines
51 KiB
VHDL
996 lines
51 KiB
VHDL
3 years ago
|
-- © IBM Corp. 2020
|
||
|
-- Licensed under the Apache License, Version 2.0 (the "License"), as modified by
|
||
|
-- the terms below; you may not use the files in this repository except in
|
||
|
-- compliance with the License as modified.
|
||
|
-- You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||
|
--
|
||
|
-- Modified Terms:
|
||
|
--
|
||
|
-- 1) For the purpose of the patent license granted to you in Section 3 of the
|
||
|
-- License, the "Work" hereby includes implementations of the work of authorship
|
||
|
-- in physical form.
|
||
|
--
|
||
|
-- 2) Notwithstanding any terms to the contrary in the License, any licenses
|
||
|
-- necessary for implementation of the Work that are available from OpenPOWER
|
||
|
-- via the Power ISA End User License Agreement (EULA) are explicitly excluded
|
||
|
-- hereunder, and may be obtained from OpenPOWER under the terms and conditions
|
||
|
-- of the EULA.
|
||
|
--
|
||
|
-- Unless required by applicable law or agreed to in writing, the reference design
|
||
|
-- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||
|
-- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
|
||
|
-- for the specific language governing permissions and limitations under the License.
|
||
|
--
|
||
|
-- Additional rights, including the ability to physically implement a softcore that
|
||
|
-- is compliant with the required sections of the Power ISA Specification, are
|
||
|
-- available at no cost under the terms of the OpenPOWER Power ISA EULA, which can be
|
||
|
-- obtained (along with the Power ISA) here: https://openpowerfoundation.org.
|
||
|
|
||
|
-- Description: XU SPR - per core registers & array
|
||
|
--
|
||
|
library ieee,ibm,support,work,tri;
|
||
|
use ieee.std_logic_1164.all;
|
||
|
use ieee.numeric_std.all;
|
||
|
use support.power_logic_pkg.all;
|
||
|
use ibm.std_ulogic_support.all;
|
||
|
use ibm.std_ulogic_function_support.all;
|
||
|
use tri.tri_latches_pkg.all;
|
||
|
use work.xuq_pkg.all;
|
||
|
|
||
|
entity xuq_cpl_spr_cspr is
|
||
|
generic(
|
||
|
hvmode : integer := 1;
|
||
|
a2mode : integer := 1;
|
||
|
expand_type : integer := 2;
|
||
|
threads : integer := 4;
|
||
|
regsize : integer := 64;
|
||
|
eff_ifar : integer := 62);
|
||
|
port(
|
||
|
nclk : in clk_logic;
|
||
|
|
||
|
d_mode_dc : in std_ulogic;
|
||
|
delay_lclkr_dc : in std_ulogic;
|
||
|
mpw1_dc_b : in std_ulogic;
|
||
|
mpw2_dc_b : in std_ulogic;
|
||
|
|
||
|
dcfg_sl_force : in std_ulogic;
|
||
|
dcfg_sl_thold_0_b : in std_ulogic;
|
||
|
func_sl_force : in std_ulogic;
|
||
|
func_sl_thold_0_b : in std_ulogic;
|
||
|
func_nsl_force : in std_ulogic;
|
||
|
func_nsl_thold_0_b : in std_ulogic;
|
||
|
sg_0 : in std_ulogic;
|
||
|
scan_in : in std_ulogic;
|
||
|
scan_out : out std_ulogic;
|
||
|
dcfg_scan_in : in std_ulogic;
|
||
|
dcfg_scan_out : out std_ulogic;
|
||
|
|
||
|
-- Decode
|
||
|
spr_bit_act : in std_ulogic;
|
||
|
exx_act : in std_ulogic_vector(1 to 4);
|
||
|
ex1_instr : in std_ulogic_vector(11 to 20);
|
||
|
ex2_tid : in std_ulogic_vector(0 to threads-1);
|
||
|
ex1_is_mfspr : in std_ulogic;
|
||
|
ex1_is_mtspr : in std_ulogic;
|
||
|
|
||
|
-- IFAR
|
||
|
ex2_ifar : in std_ulogic_vector(0 to eff_ifar*threads-1);
|
||
|
|
||
|
-- Write Interface
|
||
|
ex5_valid : in std_ulogic_vector(0 to threads-1);
|
||
|
ex5_spr_wd : in std_ulogic_vector(64-regsize to 63);
|
||
|
|
||
|
ex2_mtiar : out std_ulogic;
|
||
|
|
||
|
-- SPRT Interface
|
||
|
cspr_tspr_ex5_is_mtspr : out std_ulogic;
|
||
|
cspr_tspr_ex5_instr : out std_ulogic_vector(11 to 20);
|
||
|
cspr_tspr_ex2_instr : out std_ulogic_vector(11 to 20);
|
||
|
|
||
|
-- Read Data
|
||
|
tspr_cspr_ex2_tspr_rt : in std_ulogic_vector(0 to regsize*threads-1);
|
||
|
cpl_byp_ex3_spr_rt : out std_ulogic_vector(64-regsize to 63);
|
||
|
|
||
|
|
||
|
-- IAC Compare
|
||
|
ex3_iac1_cmpr : out std_ulogic_vector(0 to threads-1);
|
||
|
ex3_iac2_cmpr : out std_ulogic_vector(0 to threads-1);
|
||
|
ex3_iac3_cmpr : out std_ulogic_vector(0 to threads-1);
|
||
|
ex3_iac4_cmpr : out std_ulogic_vector(0 to threads-1);
|
||
|
|
||
|
-- SPRs
|
||
|
spr_cpl_iac1_en : in std_ulogic_vector(0 to threads-1);
|
||
|
spr_cpl_iac2_en : in std_ulogic_vector(0 to threads-1);
|
||
|
spr_cpl_iac3_en : in std_ulogic_vector(0 to threads-1);
|
||
|
spr_cpl_iac4_en : in std_ulogic_vector(0 to threads-1);
|
||
|
spr_dbcr1_iac12m : in std_ulogic_vector(0 to threads-1);
|
||
|
spr_dbcr1_iac34m : in std_ulogic_vector(0 to threads-1);
|
||
|
spr_msr_cm : in std_ulogic_vector(0 to threads-1);
|
||
|
spr_givpr : out std_ulogic_vector(0 to eff_ifar-10-1);
|
||
|
spr_ivpr : out std_ulogic_vector(0 to eff_ifar-10-1);
|
||
|
spr_xucr3_hold1_dly : out std_ulogic_vector(0 to 3);
|
||
|
spr_xucr3_cm_hold_dly : out std_ulogic_vector(0 to 3);
|
||
|
spr_xucr3_stop_dly : out std_ulogic_vector(0 to 3);
|
||
|
spr_xucr3_hold0_dly : out std_ulogic_vector(0 to 3);
|
||
|
spr_xucr3_csi_dly : out std_ulogic_vector(0 to 3);
|
||
|
spr_xucr3_int_dly : out std_ulogic_vector(0 to 3);
|
||
|
spr_xucr3_asyncblk_dly : out std_ulogic_vector(0 to 3);
|
||
|
spr_xucr3_flush_dly : out std_ulogic_vector(0 to 3);
|
||
|
spr_xucr4_mmu_mchk : out std_ulogic;
|
||
|
spr_xucr4_mddmh : out std_ulogic;
|
||
|
spr_xucr4_div_barr_thres : out std_ulogic_vector(0 to 7);
|
||
|
spr_xucr4_div_bar_dis : out std_ulogic;
|
||
|
spr_xucr4_lsu_bar_dis : out std_ulogic;
|
||
|
spr_xucr4_barr_dly : out std_ulogic_vector(0 to 3);
|
||
|
|
||
|
-- Power
|
||
|
vdd : inout power_logic;
|
||
|
gnd : inout power_logic
|
||
|
);
|
||
|
|
||
|
-- synopsys translate_off
|
||
|
|
||
|
-- synopsys translate_on
|
||
|
end xuq_cpl_spr_cspr;
|
||
|
architecture xuq_cpl_spr_cspr of xuq_cpl_spr_cspr is
|
||
|
|
||
|
constant ui : integer := 62-eff_ifar;
|
||
|
-- Types
|
||
|
subtype DO is std_ulogic_vector(65-regsize to 64);
|
||
|
type IFAR_ARR is array (0 to threads-1) of std_ulogic_vector(62-eff_ifar to 61);
|
||
|
type IACM_ARR is array (0 to threads-1) of std_ulogic_vector(0 to regsize/8-1);
|
||
|
-- SPR Registers
|
||
|
signal givpr_d , givpr_q : std_ulogic_vector(64-(eff_ifar-10) to 63);
|
||
|
signal iac1_d , iac1_q : std_ulogic_vector(64-(eff_ifar) to 63);
|
||
|
signal iac2_d , iac2_q : std_ulogic_vector(64-(eff_ifar) to 63);
|
||
|
signal iac3_d , iac3_q : std_ulogic_vector(64-(eff_ifar) to 63);
|
||
|
signal iac4_d , iac4_q : std_ulogic_vector(64-(eff_ifar) to 63);
|
||
|
signal ivpr_d , ivpr_q : std_ulogic_vector(64-(eff_ifar-10) to 63);
|
||
|
signal xucr3_d , xucr3_q : std_ulogic_vector(32 to 63);
|
||
|
signal xucr4_d , xucr4_q : std_ulogic_vector(48 to 63);
|
||
|
-- FUNC Scanchain
|
||
|
constant givpr_offset : natural := 0;
|
||
|
constant iac1_offset : natural := givpr_offset + givpr_q'length*hvmode;
|
||
|
constant iac2_offset : natural := iac1_offset + iac1_q'length;
|
||
|
constant iac3_offset : natural := iac2_offset + iac2_q'length;
|
||
|
constant iac4_offset : natural := iac3_offset + iac3_q'length*a2mode;
|
||
|
constant ivpr_offset : natural := iac4_offset + iac4_q'length*a2mode;
|
||
|
constant last_reg_offset : natural := ivpr_offset + ivpr_q'length;
|
||
|
-- BCFG Scanchain
|
||
|
constant last_reg_offset_bcfg : natural := 1;
|
||
|
-- CCFG Scanchain
|
||
|
constant last_reg_offset_ccfg : natural := 1;
|
||
|
-- DCFG Scanchain
|
||
|
constant xucr3_offset_dcfg : natural := 0;
|
||
|
constant xucr4_offset_dcfg : natural := xucr3_offset_dcfg + xucr3_q'length;
|
||
|
constant last_reg_offset_dcfg : natural := xucr4_offset_dcfg + xucr4_q'length;
|
||
|
-- Latches
|
||
|
signal ex2_is_mfspr_q : std_ulogic; -- ex1_is_mfspr exx_act(1)
|
||
|
signal ex2_is_mtspr_q : std_ulogic; -- ex1_is_mtspr exx_act(1)
|
||
|
signal ex2_instr_q : std_ulogic_vector(11 to 20); -- ex1_instr exx_act(1)
|
||
|
signal ex3_is_mtspr_q : std_ulogic; -- ex2_is_mtspr_q exx_act(2)
|
||
|
signal ex3_instr_q : std_ulogic_vector(11 to 20); -- ex2_instr_q exx_act(2)
|
||
|
signal ex3_spr_rt_q, ex3_spr_rt_d : std_ulogic_vector(64-regsize to 63); -- exx_act(2)
|
||
|
signal ex3_iac1_cmpr_q, ex3_iac1_cmpr_d: std_ulogic_vector(0 to threads-1); -- input=>ex3_iac1_cmpr_d , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
|
||
|
signal ex3_iac2_cmpr_q, ex3_iac2_cmpr_d: std_ulogic_vector(0 to threads-1); -- input=>ex3_iac2_cmpr_d , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
|
||
|
signal ex3_iac3_cmpr_q, ex3_iac3_cmpr_d: std_ulogic_vector(0 to threads-1); -- input=>ex3_iac3_cmpr_d , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
|
||
|
signal ex3_iac4_cmpr_q, ex3_iac4_cmpr_d: std_ulogic_vector(0 to threads-1); -- input=>ex3_iac4_cmpr_d , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
|
||
|
signal ex4_is_mtspr_q : std_ulogic; -- ex3_is_mtspr_q exx_act(3)
|
||
|
signal ex4_instr_q : std_ulogic_vector(11 to 20); -- ex3_instr_q exx_act(3)
|
||
|
signal ex5_is_mtspr_q : std_ulogic; -- ex4_is_mtspr_q exx_act(4)
|
||
|
signal ex5_instr_q : std_ulogic_vector(11 to 20); -- ex4_instr_q exx_act(4)
|
||
|
signal dbcr1_iac12m_2_q, dbcr1_iac12m_2_d : IACM_ARR; -- input=>dbcr1_iac12m_2_d , act=>spr_bit_act , scan=>N, sleep=>N, ring=>func, needs_sreset=>1
|
||
|
signal dbcr1_iac34m_2_q, dbcr1_iac34m_2_d : IACM_ARR; -- input=>dbcr1_iac34m_2_d , act=>spr_bit_act , scan=>N, sleep=>N, ring=>func, needs_sreset=>1
|
||
|
--signal msrovride_enab_q : std_ulogic; -- pc_xu_msrovride_enab
|
||
|
--signal msrovride_gs_q : std_ulogic; -- pc_xu_msrovride_gs
|
||
|
--signal ram_thread_q : std_ulogic_vector(0 to 1); -- pc_xu_ram_thread
|
||
|
signal iac1_en_q : std_ulogic_vector(0 to threads-1); -- input=>spr_cpl_iac1_en
|
||
|
signal iac2_en_q : std_ulogic_vector(0 to threads-1); -- input=>spr_cpl_iac2_en
|
||
|
signal iac3_en_q : std_ulogic_vector(0 to threads-1); -- input=>spr_cpl_iac3_en
|
||
|
signal iac4_en_q : std_ulogic_vector(0 to threads-1); -- input=>spr_cpl_iac4_en
|
||
|
signal dbcr1_iac12m_q : std_ulogic_vector(0 to threads-1); -- input=>spr_dbcr1_iac12m
|
||
|
signal dbcr1_iac34m_q : std_ulogic_vector(0 to threads-1); -- input=>spr_dbcr1_iac34m
|
||
|
-- Scanchains
|
||
|
constant ex2_is_mfspr_offset : integer := last_reg_offset;
|
||
|
constant ex2_is_mtspr_offset : integer := ex2_is_mfspr_offset + 1;
|
||
|
constant ex2_instr_offset : integer := ex2_is_mtspr_offset + 1;
|
||
|
constant ex3_is_mtspr_offset : integer := ex2_instr_offset + ex2_instr_q'length;
|
||
|
constant ex3_instr_offset : integer := ex3_is_mtspr_offset + 1;
|
||
|
constant ex3_spr_rt_offset : integer := ex3_instr_offset + ex3_instr_q'length;
|
||
|
constant ex3_iac1_cmpr_offset : integer := ex3_spr_rt_offset + ex3_spr_rt_q'length;
|
||
|
constant ex3_iac2_cmpr_offset : integer := ex3_iac1_cmpr_offset + ex3_iac1_cmpr_q'length;
|
||
|
constant ex3_iac3_cmpr_offset : integer := ex3_iac2_cmpr_offset + ex3_iac2_cmpr_q'length;
|
||
|
constant ex3_iac4_cmpr_offset : integer := ex3_iac3_cmpr_offset + ex3_iac3_cmpr_q'length;
|
||
|
constant ex4_is_mtspr_offset : integer := ex3_iac4_cmpr_offset + ex3_iac4_cmpr_q'length;
|
||
|
constant ex4_instr_offset : integer := ex4_is_mtspr_offset + 1;
|
||
|
constant ex5_is_mtspr_offset : integer := ex4_instr_offset + ex4_instr_q'length;
|
||
|
constant ex5_instr_offset : integer := ex5_is_mtspr_offset + 1;
|
||
|
constant iac1_en_offset : integer := ex5_instr_offset + ex5_instr_q'length;
|
||
|
constant iac2_en_offset : integer := iac1_en_offset + iac1_en_q'length;
|
||
|
constant iac3_en_offset : integer := iac2_en_offset + iac2_en_q'length;
|
||
|
constant iac4_en_offset : integer := iac3_en_offset + iac3_en_q'length;
|
||
|
constant dbcr1_iac12m_offset : integer := iac4_en_offset + iac4_en_q'length;
|
||
|
constant dbcr1_iac34m_offset : integer := dbcr1_iac12m_offset + dbcr1_iac12m_q'length;
|
||
|
constant scan_right : integer := dbcr1_iac34m_offset + dbcr1_iac34m_q'length;
|
||
|
signal siv : std_ulogic_vector(0 to scan_right-1);
|
||
|
signal sov : std_ulogic_vector(0 to scan_right-1);
|
||
|
constant scan_right_dcfg : integer := last_reg_offset_dcfg;
|
||
|
signal siv_dcfg : std_ulogic_vector(0 to scan_right_dcfg-1);
|
||
|
signal sov_dcfg : std_ulogic_vector(0 to scan_right_dcfg-1);
|
||
|
-- Signals
|
||
|
signal tiup : std_ulogic;
|
||
|
signal tidn : std_ulogic_vector(00 to 63);
|
||
|
signal ex2_iac1_cmprh : std_ulogic_vector(0 to threads-1);
|
||
|
signal ex2_iac2_cmprh : std_ulogic_vector(0 to threads-1);
|
||
|
signal ex2_iac3_cmprh : std_ulogic_vector(0 to threads-1);
|
||
|
signal ex2_iac4_cmprh : std_ulogic_vector(0 to threads-1);
|
||
|
signal ex2_iac1_cmprl : std_ulogic_vector(0 to threads-1);
|
||
|
signal ex2_iac2_cmprl : std_ulogic_vector(0 to threads-1);
|
||
|
signal ex2_iac3_cmprl : std_ulogic_vector(0 to threads-1);
|
||
|
signal ex2_iac4_cmprl : std_ulogic_vector(0 to threads-1);
|
||
|
signal ex2_iac1_cmpr : std_ulogic_vector(0 to threads-1);
|
||
|
signal ex2_iac2_cmpr : std_ulogic_vector(0 to threads-1);
|
||
|
signal ex2_iac3_cmpr : std_ulogic_vector(0 to threads-1);
|
||
|
signal ex2_iac4_cmpr : std_ulogic_vector(0 to threads-1);
|
||
|
signal ex2_iac1_cmpr_sel : std_ulogic_vector(0 to threads-1);
|
||
|
signal ex2_iac2_cmpr_sel : std_ulogic_vector(0 to threads-1);
|
||
|
signal ex2_iac3_cmpr_sel : std_ulogic_vector(0 to threads-1);
|
||
|
signal ex2_iac4_cmpr_sel : std_ulogic_vector(0 to threads-1);
|
||
|
signal ex2_instr : std_ulogic_vector(11 to 20);
|
||
|
signal ex5_is_mtspr : std_ulogic;
|
||
|
signal ex5_instr : std_ulogic_vector(11 to 20);
|
||
|
signal ex2_cspr_rt,ex2_tspr_rt : std_ulogic_vector(64-regsize to 63);
|
||
|
signal ex5_val : std_ulogic;
|
||
|
-- Data
|
||
|
|
||
|
signal ex5_givpr_di : std_ulogic_vector(givpr_q'range);
|
||
|
signal ex5_iac1_di : std_ulogic_vector(iac1_q'range);
|
||
|
signal ex5_iac2_di : std_ulogic_vector(iac2_q'range);
|
||
|
signal ex5_iac3_di : std_ulogic_vector(iac3_q'range);
|
||
|
signal ex5_iac4_di : std_ulogic_vector(iac4_q'range);
|
||
|
signal ex5_ivpr_di : std_ulogic_vector(ivpr_q'range);
|
||
|
signal ex5_xucr3_di : std_ulogic_vector(xucr3_q'range);
|
||
|
signal ex5_xucr4_di : std_ulogic_vector(xucr4_q'range);
|
||
|
signal
|
||
|
ex2_givpr_rdec , ex2_iac1_rdec , ex2_iac2_rdec , ex2_iac3_rdec
|
||
|
, ex2_iac4_rdec , ex2_ivpr_rdec , ex2_xucr3_rdec , ex2_xucr4_rdec
|
||
|
: std_ulogic;
|
||
|
signal
|
||
|
ex2_givpr_re , ex2_iac1_re , ex2_iac2_re , ex2_iac3_re
|
||
|
, ex2_iac4_re , ex2_ivpr_re , ex2_xucr3_re , ex2_xucr4_re
|
||
|
: std_ulogic;
|
||
|
signal
|
||
|
ex5_givpr_wdec , ex5_iac1_wdec , ex5_iac2_wdec , ex5_iac3_wdec
|
||
|
, ex5_iac4_wdec , ex5_ivpr_wdec , ex5_xucr3_wdec , ex5_xucr4_wdec
|
||
|
: std_ulogic;
|
||
|
signal
|
||
|
ex5_givpr_we , ex5_iac1_we , ex5_iac2_we , ex5_iac3_we
|
||
|
, ex5_iac4_we , ex5_ivpr_we , ex5_xucr3_we , ex5_xucr4_we
|
||
|
: std_ulogic;
|
||
|
signal
|
||
|
givpr_act , iac1_act , iac2_act , iac3_act
|
||
|
, iac4_act , ivpr_act , xucr3_act , xucr4_act
|
||
|
: std_ulogic;
|
||
|
signal
|
||
|
givpr_do , iac1_do , iac2_do , iac3_do
|
||
|
, iac4_do , ivpr_do , xucr3_do , xucr4_do
|
||
|
: std_ulogic_vector(0 to 64);
|
||
|
|
||
|
begin
|
||
|
|
||
|
|
||
|
tiup <= '1';
|
||
|
tidn <= (others=>'0');
|
||
|
|
||
|
ex2_instr <= ex2_instr_q;
|
||
|
ex5_is_mtspr <= ex5_is_mtspr_q;
|
||
|
ex5_instr <= ex5_instr_q;
|
||
|
ex5_val <= or_reduce(ex5_valid);
|
||
|
|
||
|
ex2_mtiar <= ex2_is_mtspr_q and (ex2_instr_q(11 to 20) = "1001011011"); -- 882
|
||
|
|
||
|
cspr_tspr_ex5_is_mtspr <= ex5_is_mtspr_q;
|
||
|
cspr_tspr_ex5_instr <= ex5_instr_q;
|
||
|
cspr_tspr_ex2_instr <= ex2_instr_q;
|
||
|
|
||
|
|
||
|
-- SPR Input Control
|
||
|
-- IAC1
|
||
|
iac1_act <= ex5_iac1_we;
|
||
|
iac1_d <= ex5_iac1_di;
|
||
|
|
||
|
-- IAC2
|
||
|
iac2_act <= ex5_iac2_we;
|
||
|
iac2_d <= ex5_iac2_di;
|
||
|
|
||
|
-- IAC3
|
||
|
iac3_act <= ex5_iac3_we;
|
||
|
iac3_d <= ex5_iac3_di;
|
||
|
|
||
|
-- IAC4
|
||
|
iac4_act <= ex5_iac4_we;
|
||
|
iac4_d <= ex5_iac4_di;
|
||
|
|
||
|
-- IVPR
|
||
|
ivpr_act <= ex5_ivpr_we;
|
||
|
ivpr_d <= ex5_ivpr_di;
|
||
|
|
||
|
-- GIVR
|
||
|
givpr_act <= ex5_givpr_we;
|
||
|
givpr_d <= ex5_givpr_di;
|
||
|
|
||
|
-- XUCR3
|
||
|
xucr3_act <= ex5_xucr3_we;
|
||
|
xucr3_d <= ex5_xucr3_di;
|
||
|
|
||
|
-- XUCR4
|
||
|
xucr4_act <= ex5_xucr4_we;
|
||
|
xucr4_d <= ex5_xucr4_di;
|
||
|
|
||
|
|
||
|
|
||
|
-- IAC Compares
|
||
|
ex3_iac1_cmpr <= ex3_iac1_cmpr_q;
|
||
|
ex3_iac2_cmpr <= ex3_iac2_cmpr_q;
|
||
|
ex3_iac3_cmpr <= ex3_iac3_cmpr_q;
|
||
|
ex3_iac4_cmpr <= ex3_iac4_cmpr_q;
|
||
|
|
||
|
ifar_cmp : for t in 0 to threads-1 generate
|
||
|
signal ex2_ifar_int : std_ulogic_vector(62-eff_ifar to 61);
|
||
|
signal ex2_iac2_mask : std_ulogic_vector(62-eff_ifar to 61);
|
||
|
signal ex2_iac4_mask : std_ulogic_vector(62-eff_ifar to 61);
|
||
|
begin
|
||
|
|
||
|
ex2_ifar_int <= ex2_ifar(eff_ifar*t to eff_ifar*(t+1)-1);
|
||
|
|
||
|
ex2_iac2_mask <= iac2_q or not fanout(dbcr1_iac12m_2_q(t),eff_ifar);
|
||
|
ex2_iac4_mask <= iac4_q or not fanout(dbcr1_iac34m_2_q(t),eff_ifar);
|
||
|
|
||
|
xuq_spr_iac_cmprh_gen0 : if eff_ifar > 32 generate -- ui=62-eff_ifar
|
||
|
ex2_iac1_cmprh(t) <= and_reduce((ex2_ifar_int(ui to 31) xnor iac1_q(ui+2 to 33)) or not ex2_iac2_mask(ui to 31));
|
||
|
ex2_iac2_cmprh(t) <= and_reduce((ex2_ifar_int(ui to 31) xnor iac2_q(ui+2 to 33)) );
|
||
|
ex2_iac3_cmprh(t) <= and_reduce((ex2_ifar_int(ui to 31) xnor iac3_q(ui+2 to 33)) or not ex2_iac4_mask(ui to 31));
|
||
|
ex2_iac4_cmprh(t) <= and_reduce((ex2_ifar_int(ui to 31) xnor iac4_q(ui+2 to 33)) );
|
||
|
|
||
|
ex2_iac1_cmprl(t) <= and_reduce((ex2_ifar_int(32 to 61) xnor iac1_q(32+2 to 63)) or not ex2_iac2_mask(32 to 61));
|
||
|
ex2_iac2_cmprl(t) <= and_reduce((ex2_ifar_int(32 to 61) xnor iac2_q(32+2 to 63)) );
|
||
|
ex2_iac3_cmprl(t) <= and_reduce((ex2_ifar_int(32 to 61) xnor iac3_q(32+2 to 63)) or not ex2_iac4_mask(32 to 61));
|
||
|
ex2_iac4_cmprl(t) <= and_reduce((ex2_ifar_int(32 to 61) xnor iac4_q(32+2 to 63)) );
|
||
|
|
||
|
ex2_iac1_cmpr(t) <= ex2_iac1_cmprl(t) and (ex2_iac1_cmprh(t) or not spr_msr_cm(t));
|
||
|
ex2_iac2_cmpr(t) <= ex2_iac2_cmprl(t) and (ex2_iac2_cmprh(t) or not spr_msr_cm(t));
|
||
|
ex2_iac3_cmpr(t) <= ex2_iac3_cmprl(t) and (ex2_iac3_cmprh(t) or not spr_msr_cm(t));
|
||
|
ex2_iac4_cmpr(t) <= ex2_iac4_cmprl(t) and (ex2_iac4_cmprh(t) or not spr_msr_cm(t));
|
||
|
end generate;
|
||
|
|
||
|
xuq_spr_iac_cmprh_gen1 : if eff_ifar <= 32 generate -- ui=62-eff_ifar
|
||
|
ex2_iac1_cmprh(t) <= '1';
|
||
|
ex2_iac2_cmprh(t) <= '1';
|
||
|
ex2_iac3_cmprh(t) <= '1';
|
||
|
ex2_iac4_cmprh(t) <= '1';
|
||
|
|
||
|
ex2_iac1_cmprl(t) <= and_reduce((ex2_ifar(ui to 61) xnor iac1_q(ui+2 to 63)) or not ex2_iac2_mask(ui to 61));
|
||
|
ex2_iac2_cmprl(t) <= and_reduce((ex2_ifar(ui to 61) xnor iac2_q(ui+2 to 63)) );
|
||
|
ex2_iac3_cmprl(t) <= and_reduce((ex2_ifar(ui to 61) xnor iac3_q(ui+2 to 63)) or not ex2_iac4_mask(ui to 61));
|
||
|
ex2_iac4_cmprl(t) <= and_reduce((ex2_ifar(ui to 61) xnor iac4_q(ui+2 to 63)) );
|
||
|
|
||
|
ex2_iac1_cmpr(t) <= ex2_iac1_cmprl(t);
|
||
|
ex2_iac2_cmpr(t) <= ex2_iac2_cmprl(t);
|
||
|
ex2_iac3_cmpr(t) <= ex2_iac3_cmprl(t);
|
||
|
ex2_iac4_cmpr(t) <= ex2_iac4_cmprl(t);
|
||
|
end generate;
|
||
|
|
||
|
ex2_iac1_cmpr_sel(t) <= ex2_iac1_cmpr(t);
|
||
|
ex2_iac2_cmpr_sel(t) <= ex2_iac2_cmpr(t) when dbcr1_iac12m_2_q(t)(0)='0' else ex2_iac1_cmpr(t);
|
||
|
ex2_iac3_cmpr_sel(t) <= ex2_iac3_cmpr(t);
|
||
|
ex2_iac4_cmpr_sel(t) <= ex2_iac4_cmpr(t) when dbcr1_iac34m_2_q(t)(0)='0' else ex2_iac3_cmpr(t);
|
||
|
|
||
|
ex3_iac1_cmpr_d(t) <= ex2_iac1_cmpr_sel(t) and iac1_en_q(t);
|
||
|
ex3_iac2_cmpr_d(t) <= ex2_iac2_cmpr_sel(t) and iac2_en_q(t);
|
||
|
ex3_iac3_cmpr_d(t) <= ex2_iac3_cmpr_sel(t) and iac3_en_q(t);
|
||
|
ex3_iac4_cmpr_d(t) <= ex2_iac4_cmpr_sel(t) and iac4_en_q(t);
|
||
|
end generate;
|
||
|
|
||
|
-- MSR Override
|
||
|
|
||
|
|
||
|
readmux_00 : if a2mode = 0 and hvmode = 0 generate
|
||
|
ex2_cspr_rt <=
|
||
|
(iac1_do(DO'range) and (DO'range => ex2_iac1_re )) or
|
||
|
(iac2_do(DO'range) and (DO'range => ex2_iac2_re )) or
|
||
|
(ivpr_do(DO'range) and (DO'range => ex2_ivpr_re )) or
|
||
|
(xucr3_do(DO'range) and (DO'range => ex2_xucr3_re )) or
|
||
|
(xucr4_do(DO'range) and (DO'range => ex2_xucr4_re ));
|
||
|
end generate;
|
||
|
readmux_01 : if a2mode = 0 and hvmode = 1 generate
|
||
|
ex2_cspr_rt <=
|
||
|
(givpr_do(DO'range) and (DO'range => ex2_givpr_re )) or
|
||
|
(iac1_do(DO'range) and (DO'range => ex2_iac1_re )) or
|
||
|
(iac2_do(DO'range) and (DO'range => ex2_iac2_re )) or
|
||
|
(ivpr_do(DO'range) and (DO'range => ex2_ivpr_re )) or
|
||
|
(xucr3_do(DO'range) and (DO'range => ex2_xucr3_re )) or
|
||
|
(xucr4_do(DO'range) and (DO'range => ex2_xucr4_re ));
|
||
|
end generate;
|
||
|
readmux_10 : if a2mode = 1 and hvmode = 0 generate
|
||
|
ex2_cspr_rt <=
|
||
|
(iac1_do(DO'range) and (DO'range => ex2_iac1_re )) or
|
||
|
(iac2_do(DO'range) and (DO'range => ex2_iac2_re )) or
|
||
|
(iac3_do(DO'range) and (DO'range => ex2_iac3_re )) or
|
||
|
(iac4_do(DO'range) and (DO'range => ex2_iac4_re )) or
|
||
|
(ivpr_do(DO'range) and (DO'range => ex2_ivpr_re )) or
|
||
|
(xucr3_do(DO'range) and (DO'range => ex2_xucr3_re )) or
|
||
|
(xucr4_do(DO'range) and (DO'range => ex2_xucr4_re ));
|
||
|
end generate;
|
||
|
readmux_11 : if a2mode = 1 and hvmode = 1 generate
|
||
|
ex2_cspr_rt <=
|
||
|
(givpr_do(DO'range) and (DO'range => ex2_givpr_re )) or
|
||
|
(iac1_do(DO'range) and (DO'range => ex2_iac1_re )) or
|
||
|
(iac2_do(DO'range) and (DO'range => ex2_iac2_re )) or
|
||
|
(iac3_do(DO'range) and (DO'range => ex2_iac3_re )) or
|
||
|
(iac4_do(DO'range) and (DO'range => ex2_iac4_re )) or
|
||
|
(ivpr_do(DO'range) and (DO'range => ex2_ivpr_re )) or
|
||
|
(xucr3_do(DO'range) and (DO'range => ex2_xucr3_re )) or
|
||
|
(xucr4_do(DO'range) and (DO'range => ex2_xucr4_re ));
|
||
|
end generate;
|
||
|
|
||
|
-- Read Muxing
|
||
|
ex2_tspr_rt <= mux_t(tspr_cspr_ex2_tspr_rt,ex2_tid);
|
||
|
ex3_spr_rt_d <= gate((ex2_tspr_rt or ex2_cspr_rt),ex2_is_mfspr_q);
|
||
|
cpl_byp_ex3_spr_rt <= ex3_spr_rt_q;
|
||
|
|
||
|
|
||
|
ex2_givpr_rdec <= (ex2_instr(11 to 20) = "1111101101"); -- 447
|
||
|
ex2_iac1_rdec <= (ex2_instr(11 to 20) = "1100001001"); -- 312
|
||
|
ex2_iac2_rdec <= (ex2_instr(11 to 20) = "1100101001"); -- 313
|
||
|
ex2_iac3_rdec <= (ex2_instr(11 to 20) = "1101001001"); -- 314
|
||
|
ex2_iac4_rdec <= (ex2_instr(11 to 20) = "1101101001"); -- 315
|
||
|
ex2_ivpr_rdec <= (ex2_instr(11 to 20) = "1111100001"); -- 63
|
||
|
ex2_xucr3_rdec <= (ex2_instr(11 to 20) = "1010011010"); -- 852
|
||
|
ex2_xucr4_rdec <= (ex2_instr(11 to 20) = "1010111010"); -- 853
|
||
|
ex2_givpr_re <= ex2_givpr_rdec;
|
||
|
ex2_iac1_re <= ex2_iac1_rdec;
|
||
|
ex2_iac2_re <= ex2_iac2_rdec;
|
||
|
ex2_iac3_re <= ex2_iac3_rdec;
|
||
|
ex2_iac4_re <= ex2_iac4_rdec;
|
||
|
ex2_ivpr_re <= ex2_ivpr_rdec;
|
||
|
ex2_xucr3_re <= ex2_xucr3_rdec;
|
||
|
ex2_xucr4_re <= ex2_xucr4_rdec;
|
||
|
|
||
|
ex5_givpr_wdec <= (ex5_instr(11 to 20) = "1111101101"); -- 447
|
||
|
ex5_iac1_wdec <= (ex5_instr(11 to 20) = "1100001001"); -- 312
|
||
|
ex5_iac2_wdec <= (ex5_instr(11 to 20) = "1100101001"); -- 313
|
||
|
ex5_iac3_wdec <= (ex5_instr(11 to 20) = "1101001001"); -- 314
|
||
|
ex5_iac4_wdec <= (ex5_instr(11 to 20) = "1101101001"); -- 315
|
||
|
ex5_ivpr_wdec <= (ex5_instr(11 to 20) = "1111100001"); -- 63
|
||
|
ex5_xucr3_wdec <= (ex5_instr(11 to 20) = "1010011010"); -- 852
|
||
|
ex5_xucr4_wdec <= (ex5_instr(11 to 20) = "1010111010"); -- 853
|
||
|
ex5_givpr_we <= ex5_val and ex5_is_mtspr and ex5_givpr_wdec;
|
||
|
ex5_iac1_we <= ex5_val and ex5_is_mtspr and ex5_iac1_wdec;
|
||
|
ex5_iac2_we <= ex5_val and ex5_is_mtspr and ex5_iac2_wdec;
|
||
|
ex5_iac3_we <= ex5_val and ex5_is_mtspr and ex5_iac3_wdec;
|
||
|
ex5_iac4_we <= ex5_val and ex5_is_mtspr and ex5_iac4_wdec;
|
||
|
ex5_ivpr_we <= ex5_val and ex5_is_mtspr and ex5_ivpr_wdec;
|
||
|
ex5_xucr3_we <= ex5_val and ex5_is_mtspr and ex5_xucr3_wdec;
|
||
|
ex5_xucr4_we <= ex5_val and ex5_is_mtspr and ex5_xucr4_wdec;
|
||
|
|
||
|
spr_givpr <= givpr_q(64-(eff_ifar-10) to 63);
|
||
|
spr_ivpr <= ivpr_q(64-(eff_ifar-10) to 63);
|
||
|
spr_xucr3_hold1_dly <= xucr3_q(32 to 35);
|
||
|
spr_xucr3_cm_hold_dly <= xucr3_q(36 to 39);
|
||
|
spr_xucr3_stop_dly <= xucr3_q(40 to 43);
|
||
|
spr_xucr3_hold0_dly <= xucr3_q(44 to 47);
|
||
|
spr_xucr3_csi_dly <= xucr3_q(48 to 51);
|
||
|
spr_xucr3_int_dly <= xucr3_q(52 to 55);
|
||
|
spr_xucr3_asyncblk_dly <= xucr3_q(56 to 59);
|
||
|
spr_xucr3_flush_dly <= xucr3_q(60 to 63);
|
||
|
spr_xucr4_mmu_mchk <= xucr4_q(48);
|
||
|
spr_xucr4_mddmh <= xucr4_q(49);
|
||
|
spr_xucr4_div_barr_thres <= xucr4_q(50 to 57);
|
||
|
spr_xucr4_div_bar_dis <= xucr4_q(58);
|
||
|
spr_xucr4_lsu_bar_dis <= xucr4_q(59);
|
||
|
spr_xucr4_barr_dly <= xucr4_q(60 to 63);
|
||
|
|
||
|
-- GIVPR
|
||
|
ex5_givpr_di <= ex5_spr_wd(52-(eff_ifar-10) to 51); --GIVPR
|
||
|
givpr_do <= tidn(0 to 52-(eff_ifar-10)) &
|
||
|
givpr_q(64-(eff_ifar-10) to 63) & --GIVPR
|
||
|
tidn(52 to 63) ; --///
|
||
|
-- IAC1
|
||
|
ex5_iac1_di <= ex5_spr_wd(62-(eff_ifar) to 61) ; --IAC1
|
||
|
iac1_do <= tidn(0 to 62-(eff_ifar)) &
|
||
|
iac1_q(64-(eff_ifar) to 63) & --IAC1
|
||
|
tidn(62 to 63) ; --///
|
||
|
-- IAC2
|
||
|
ex5_iac2_di <= ex5_spr_wd(62-(eff_ifar) to 61) ; --IAC2
|
||
|
iac2_do <= tidn(0 to 62-(eff_ifar)) &
|
||
|
iac2_q(64-(eff_ifar) to 63) & --IAC2
|
||
|
tidn(62 to 63) ; --///
|
||
|
-- IAC3
|
||
|
ex5_iac3_di <= ex5_spr_wd(62-(eff_ifar) to 61) ; --IAC3
|
||
|
iac3_do <= tidn(0 to 62-(eff_ifar)) &
|
||
|
iac3_q(64-(eff_ifar) to 63) & --IAC3
|
||
|
tidn(62 to 63) ; --///
|
||
|
-- IAC4
|
||
|
ex5_iac4_di <= ex5_spr_wd(62-(eff_ifar) to 61) ; --IAC4
|
||
|
iac4_do <= tidn(0 to 62-(eff_ifar)) &
|
||
|
iac4_q(64-(eff_ifar) to 63) & --IAC4
|
||
|
tidn(62 to 63) ; --///
|
||
|
-- IVPR
|
||
|
ex5_ivpr_di <= ex5_spr_wd(52-(eff_ifar-10) to 51); --IVPR
|
||
|
ivpr_do <= tidn(0 to 52-(eff_ifar-10)) &
|
||
|
ivpr_q(64-(eff_ifar-10) to 63) & --IVPR
|
||
|
tidn(52 to 63) ; --///
|
||
|
-- XUCR3
|
||
|
ex5_xucr3_di <= ex5_spr_wd(32 to 35) & --HOLD1_DLY
|
||
|
ex5_spr_wd(36 to 39) & --CM_HOLD_DLY
|
||
|
ex5_spr_wd(40 to 43) & --STOP_DLY
|
||
|
ex5_spr_wd(44 to 47) & --HOLD0_DLY
|
||
|
ex5_spr_wd(48 to 51) & --CSI_DLY
|
||
|
ex5_spr_wd(52 to 55) & --INT_DLY
|
||
|
ex5_spr_wd(56 to 59) & --ASYNCBLK_DLY
|
||
|
ex5_spr_wd(60 to 63) ; --FLUSH_DLY
|
||
|
xucr3_do <= tidn(0 to 0) &
|
||
|
tidn(0 to 31) & --///
|
||
|
xucr3_q(32 to 35) & --HOLD1_DLY
|
||
|
xucr3_q(36 to 39) & --CM_HOLD_DLY
|
||
|
xucr3_q(40 to 43) & --STOP_DLY
|
||
|
xucr3_q(44 to 47) & --HOLD0_DLY
|
||
|
xucr3_q(48 to 51) & --CSI_DLY
|
||
|
xucr3_q(52 to 55) & --INT_DLY
|
||
|
xucr3_q(56 to 59) & --ASYNCBLK_DLY
|
||
|
xucr3_q(60 to 63) ; --FLUSH_DLY
|
||
|
-- XUCR4
|
||
|
ex5_xucr4_di <= ex5_spr_wd(46 to 46) & --MMU_MCHK
|
||
|
ex5_spr_wd(47 to 47) & --MDDMH
|
||
|
ex5_spr_wd(48 to 55) & --DIV_BARR_THRES
|
||
|
ex5_spr_wd(58 to 58) & --DIV_BAR_DIS
|
||
|
ex5_spr_wd(59 to 59) & --LSU_BAR_DIS
|
||
|
ex5_spr_wd(60 to 63) ; --BARR_DLY
|
||
|
xucr4_do <= tidn(0 to 0) &
|
||
|
tidn(0 to 31) & --///
|
||
|
tidn(32 to 45) & --///
|
||
|
xucr4_q(48 to 48) & --MMU_MCHK
|
||
|
xucr4_q(49 to 49) & --MDDMH
|
||
|
xucr4_q(50 to 57) & --DIV_BARR_THRES
|
||
|
tidn(56 to 57) & --///
|
||
|
xucr4_q(58 to 58) & --DIV_BAR_DIS
|
||
|
xucr4_q(59 to 59) & --LSU_BAR_DIS
|
||
|
xucr4_q(60 to 63) ; --BARR_DLY
|
||
|
|
||
|
-- Unused Signals
|
||
|
mark_unused(givpr_do(0 to 64-regsize));
|
||
|
mark_unused(iac1_do(0 to 64-regsize));
|
||
|
mark_unused(iac2_do(0 to 64-regsize));
|
||
|
mark_unused(iac3_do(0 to 64-regsize));
|
||
|
mark_unused(iac4_do(0 to 64-regsize));
|
||
|
mark_unused(ivpr_do(0 to 64-regsize));
|
||
|
mark_unused(xucr3_do(0 to 64-regsize));
|
||
|
mark_unused(xucr4_do(0 to 64-regsize));
|
||
|
|
||
|
givpr_latch_gen : if hvmode = 1 generate
|
||
|
givpr_latch : tri_ser_rlmreg_p
|
||
|
generic map(width => givpr_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map(nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => givpr_act,
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(givpr_offset to givpr_offset + givpr_q'length-1),
|
||
|
scout => sov(givpr_offset to givpr_offset + givpr_q'length-1),
|
||
|
din => givpr_d,
|
||
|
dout => givpr_q);
|
||
|
end generate;
|
||
|
givpr_latch_tie : if hvmode = 0 generate
|
||
|
givpr_q <= (others=>'0');
|
||
|
end generate;
|
||
|
iac1_latch : tri_ser_rlmreg_p
|
||
|
generic map(width => iac1_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map(nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => iac1_act,
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(iac1_offset to iac1_offset + iac1_q'length-1),
|
||
|
scout => sov(iac1_offset to iac1_offset + iac1_q'length-1),
|
||
|
din => iac1_d,
|
||
|
dout => iac1_q);
|
||
|
iac2_latch : tri_ser_rlmreg_p
|
||
|
generic map(width => iac2_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map(nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => iac2_act,
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(iac2_offset to iac2_offset + iac2_q'length-1),
|
||
|
scout => sov(iac2_offset to iac2_offset + iac2_q'length-1),
|
||
|
din => iac2_d,
|
||
|
dout => iac2_q);
|
||
|
iac3_latch_gen : if a2mode = 1 generate
|
||
|
iac3_latch : tri_ser_rlmreg_p
|
||
|
generic map(width => iac3_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map(nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => iac3_act,
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(iac3_offset to iac3_offset + iac3_q'length-1),
|
||
|
scout => sov(iac3_offset to iac3_offset + iac3_q'length-1),
|
||
|
din => iac3_d,
|
||
|
dout => iac3_q);
|
||
|
end generate;
|
||
|
iac3_latch_tie : if a2mode = 0 generate
|
||
|
iac3_q <= (others=>'0');
|
||
|
end generate;
|
||
|
iac4_latch_gen : if a2mode = 1 generate
|
||
|
iac4_latch : tri_ser_rlmreg_p
|
||
|
generic map(width => iac4_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map(nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => iac4_act,
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(iac4_offset to iac4_offset + iac4_q'length-1),
|
||
|
scout => sov(iac4_offset to iac4_offset + iac4_q'length-1),
|
||
|
din => iac4_d,
|
||
|
dout => iac4_q);
|
||
|
end generate;
|
||
|
iac4_latch_tie : if a2mode = 0 generate
|
||
|
iac4_q <= (others=>'0');
|
||
|
end generate;
|
||
|
ivpr_latch : tri_ser_rlmreg_p
|
||
|
generic map(width => ivpr_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map(nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => ivpr_act,
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(ivpr_offset to ivpr_offset + ivpr_q'length-1),
|
||
|
scout => sov(ivpr_offset to ivpr_offset + ivpr_q'length-1),
|
||
|
din => ivpr_d,
|
||
|
dout => ivpr_q);
|
||
|
xucr3_latch : tri_ser_rlmreg_p
|
||
|
generic map(width => xucr3_q'length, init => 37753921, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map(nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => xucr3_act,
|
||
|
forcee => dcfg_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => dcfg_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv_dcfg(xucr3_offset_dcfg to xucr3_offset_dcfg + xucr3_q'length-1),
|
||
|
scout => sov_dcfg(xucr3_offset_dcfg to xucr3_offset_dcfg + xucr3_q'length-1),
|
||
|
din => xucr3_d,
|
||
|
dout => xucr3_q);
|
||
|
xucr4_latch : tri_ser_rlmreg_p
|
||
|
generic map(width => xucr4_q'length, init => 320, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map(nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => xucr4_act,
|
||
|
forcee => dcfg_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => dcfg_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv_dcfg(xucr4_offset_dcfg to xucr4_offset_dcfg + xucr4_q'length-1),
|
||
|
scout => sov_dcfg(xucr4_offset_dcfg to xucr4_offset_dcfg + xucr4_q'length-1),
|
||
|
din => xucr4_d,
|
||
|
dout => xucr4_q);
|
||
|
|
||
|
|
||
|
mark_unused(tidn(46 to 51));
|
||
|
|
||
|
-- Latch Instances
|
||
|
ex2_is_mfspr_latch : tri_rlmlatch_p
|
||
|
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => exx_act(1),
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(ex2_is_mfspr_offset),
|
||
|
scout => sov(ex2_is_mfspr_offset),
|
||
|
din => ex1_is_mfspr,
|
||
|
dout => ex2_is_mfspr_q);
|
||
|
ex2_is_mtspr_latch : tri_rlmlatch_p
|
||
|
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => exx_act(1),
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(ex2_is_mtspr_offset),
|
||
|
scout => sov(ex2_is_mtspr_offset),
|
||
|
din => ex1_is_mtspr,
|
||
|
dout => ex2_is_mtspr_q);
|
||
|
ex2_instr_latch : tri_rlmreg_p
|
||
|
generic map (width => ex2_instr_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => exx_act(1),
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(ex2_instr_offset to ex2_instr_offset + ex2_instr_q'length-1),
|
||
|
scout => sov(ex2_instr_offset to ex2_instr_offset + ex2_instr_q'length-1),
|
||
|
din => ex1_instr,
|
||
|
dout => ex2_instr_q);
|
||
|
ex3_is_mtspr_latch : tri_rlmlatch_p
|
||
|
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => exx_act(2),
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(ex3_is_mtspr_offset),
|
||
|
scout => sov(ex3_is_mtspr_offset),
|
||
|
din => ex2_is_mtspr_q,
|
||
|
dout => ex3_is_mtspr_q);
|
||
|
ex3_instr_latch : tri_rlmreg_p
|
||
|
generic map (width => ex3_instr_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => exx_act(2),
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(ex3_instr_offset to ex3_instr_offset + ex3_instr_q'length-1),
|
||
|
scout => sov(ex3_instr_offset to ex3_instr_offset + ex3_instr_q'length-1),
|
||
|
din => ex2_instr_q,
|
||
|
dout => ex3_instr_q);
|
||
|
ex3_spr_rt_latch : tri_rlmreg_p
|
||
|
generic map (width => ex3_spr_rt_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => exx_act(2),
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(ex3_spr_rt_offset to ex3_spr_rt_offset + ex3_spr_rt_q'length-1),
|
||
|
scout => sov(ex3_spr_rt_offset to ex3_spr_rt_offset + ex3_spr_rt_q'length-1),
|
||
|
din => ex3_spr_rt_d,
|
||
|
dout => ex3_spr_rt_q);
|
||
|
ex3_iac1_cmpr_latch : tri_rlmreg_p
|
||
|
generic map (width => ex3_iac1_cmpr_q'length, init => 0, expand_type => expand_type, needs_sreset => 0)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => tiup,
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(ex3_iac1_cmpr_offset to ex3_iac1_cmpr_offset + ex3_iac1_cmpr_q'length-1),
|
||
|
scout => sov(ex3_iac1_cmpr_offset to ex3_iac1_cmpr_offset + ex3_iac1_cmpr_q'length-1),
|
||
|
din => ex3_iac1_cmpr_d,
|
||
|
dout => ex3_iac1_cmpr_q);
|
||
|
ex3_iac2_cmpr_latch : tri_rlmreg_p
|
||
|
generic map (width => ex3_iac2_cmpr_q'length, init => 0, expand_type => expand_type, needs_sreset => 0)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => tiup,
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(ex3_iac2_cmpr_offset to ex3_iac2_cmpr_offset + ex3_iac2_cmpr_q'length-1),
|
||
|
scout => sov(ex3_iac2_cmpr_offset to ex3_iac2_cmpr_offset + ex3_iac2_cmpr_q'length-1),
|
||
|
din => ex3_iac2_cmpr_d,
|
||
|
dout => ex3_iac2_cmpr_q);
|
||
|
ex3_iac3_cmpr_latch : tri_rlmreg_p
|
||
|
generic map (width => ex3_iac3_cmpr_q'length, init => 0, expand_type => expand_type, needs_sreset => 0)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => tiup,
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(ex3_iac3_cmpr_offset to ex3_iac3_cmpr_offset + ex3_iac3_cmpr_q'length-1),
|
||
|
scout => sov(ex3_iac3_cmpr_offset to ex3_iac3_cmpr_offset + ex3_iac3_cmpr_q'length-1),
|
||
|
din => ex3_iac3_cmpr_d,
|
||
|
dout => ex3_iac3_cmpr_q);
|
||
|
ex3_iac4_cmpr_latch : tri_rlmreg_p
|
||
|
generic map (width => ex3_iac4_cmpr_q'length, init => 0, expand_type => expand_type, needs_sreset => 0)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => tiup,
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(ex3_iac4_cmpr_offset to ex3_iac4_cmpr_offset + ex3_iac4_cmpr_q'length-1),
|
||
|
scout => sov(ex3_iac4_cmpr_offset to ex3_iac4_cmpr_offset + ex3_iac4_cmpr_q'length-1),
|
||
|
din => ex3_iac4_cmpr_d,
|
||
|
dout => ex3_iac4_cmpr_q);
|
||
|
ex4_is_mtspr_latch : tri_rlmlatch_p
|
||
|
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => exx_act(3),
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(ex4_is_mtspr_offset),
|
||
|
scout => sov(ex4_is_mtspr_offset),
|
||
|
din => ex3_is_mtspr_q,
|
||
|
dout => ex4_is_mtspr_q);
|
||
|
ex4_instr_latch : tri_rlmreg_p
|
||
|
generic map (width => ex4_instr_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => exx_act(3),
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(ex4_instr_offset to ex4_instr_offset + ex4_instr_q'length-1),
|
||
|
scout => sov(ex4_instr_offset to ex4_instr_offset + ex4_instr_q'length-1),
|
||
|
din => ex3_instr_q,
|
||
|
dout => ex4_instr_q);
|
||
|
ex5_is_mtspr_latch : tri_rlmlatch_p
|
||
|
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => exx_act(4),
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(ex5_is_mtspr_offset),
|
||
|
scout => sov(ex5_is_mtspr_offset),
|
||
|
din => ex4_is_mtspr_q,
|
||
|
dout => ex5_is_mtspr_q);
|
||
|
ex5_instr_latch : tri_rlmreg_p
|
||
|
generic map (width => ex5_instr_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => exx_act(4),
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(ex5_instr_offset to ex5_instr_offset + ex5_instr_q'length-1),
|
||
|
scout => sov(ex5_instr_offset to ex5_instr_offset + ex5_instr_q'length-1),
|
||
|
din => ex4_instr_q,
|
||
|
dout => ex5_instr_q);
|
||
|
|
||
|
dbcr1_iacm_gen : for t in 0 to threads-1 generate
|
||
|
dbcr1_iac12m_2_latch : tri_regk
|
||
|
generic map (width => dbcr1_iac12m_2_q(t)'length, init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => spr_bit_act,
|
||
|
forcee => func_nsl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_nsl_thold_0_b,
|
||
|
din => dbcr1_iac12m_2_d(t),
|
||
|
dout => dbcr1_iac12m_2_q(t));
|
||
|
dbcr1_iac34m_2_latch : tri_regk
|
||
|
generic map (width => dbcr1_iac34m_2_q(t)'length, init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => spr_bit_act,
|
||
|
forcee => func_nsl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_nsl_thold_0_b,
|
||
|
din => dbcr1_iac34m_2_d(t),
|
||
|
dout => dbcr1_iac34m_2_q(t));
|
||
|
dbcr1_iac12m_2_d(t) <= (others=>dbcr1_iac12m_q(t));
|
||
|
dbcr1_iac34m_2_d(t) <= (others=>dbcr1_iac34m_q(t));
|
||
|
end generate;
|
||
|
|
||
|
iac1_en_latch : tri_rlmreg_p
|
||
|
generic map (width => iac1_en_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => spr_bit_act,
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(iac1_en_offset to iac1_en_offset + iac1_en_q'length-1),
|
||
|
scout => sov(iac1_en_offset to iac1_en_offset + iac1_en_q'length-1),
|
||
|
din => spr_cpl_iac1_en ,
|
||
|
dout => iac1_en_q);
|
||
|
iac2_en_latch : tri_rlmreg_p
|
||
|
generic map (width => iac2_en_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => spr_bit_act,
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(iac2_en_offset to iac2_en_offset + iac2_en_q'length-1),
|
||
|
scout => sov(iac2_en_offset to iac2_en_offset + iac2_en_q'length-1),
|
||
|
din => spr_cpl_iac2_en ,
|
||
|
dout => iac2_en_q);
|
||
|
iac3_en_latch : tri_rlmreg_p
|
||
|
generic map (width => iac3_en_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => spr_bit_act,
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(iac3_en_offset to iac3_en_offset + iac3_en_q'length-1),
|
||
|
scout => sov(iac3_en_offset to iac3_en_offset + iac3_en_q'length-1),
|
||
|
din => spr_cpl_iac3_en ,
|
||
|
dout => iac3_en_q);
|
||
|
iac4_en_latch : tri_rlmreg_p
|
||
|
generic map (width => iac4_en_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => spr_bit_act,
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(iac4_en_offset to iac4_en_offset + iac4_en_q'length-1),
|
||
|
scout => sov(iac4_en_offset to iac4_en_offset + iac4_en_q'length-1),
|
||
|
din => spr_cpl_iac4_en ,
|
||
|
dout => iac4_en_q);
|
||
|
dbcr1_iac12m_latch : tri_rlmreg_p
|
||
|
generic map (width => dbcr1_iac12m_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => spr_bit_act,
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(dbcr1_iac12m_offset to dbcr1_iac12m_offset + dbcr1_iac12m_q'length-1),
|
||
|
scout => sov(dbcr1_iac12m_offset to dbcr1_iac12m_offset + dbcr1_iac12m_q'length-1),
|
||
|
din => spr_dbcr1_iac12m,
|
||
|
dout => dbcr1_iac12m_q);
|
||
|
dbcr1_iac34m_latch : tri_rlmreg_p
|
||
|
generic map (width => dbcr1_iac34m_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
|
||
|
port map (nclk => nclk, vd => vdd, gd => gnd,
|
||
|
act => spr_bit_act,
|
||
|
forcee => func_sl_force,
|
||
|
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc,
|
||
|
mpw1_b => mpw1_dc_b, mpw2_b => mpw2_dc_b,
|
||
|
thold_b => func_sl_thold_0_b,
|
||
|
sg => sg_0,
|
||
|
scin => siv(dbcr1_iac34m_offset to dbcr1_iac34m_offset + dbcr1_iac34m_q'length-1),
|
||
|
scout => sov(dbcr1_iac34m_offset to dbcr1_iac34m_offset + dbcr1_iac34m_q'length-1),
|
||
|
din => spr_dbcr1_iac34m,
|
||
|
dout => dbcr1_iac34m_q);
|
||
|
|
||
|
siv(0 to scan_right-1) <= sov(1 to scan_right-1) & scan_in;
|
||
|
scan_out <= sov(0);
|
||
|
|
||
|
|
||
|
dcfg_l : if sov_dcfg'length > 1 generate
|
||
|
siv_dcfg(0 to scan_right_dcfg-1) <= sov_dcfg(1 to scan_right_dcfg-1) & dcfg_scan_in;
|
||
|
dcfg_scan_out <= sov_dcfg(0);
|
||
|
end generate;
|
||
|
dcfg_s : if sov_dcfg'length <= 1 generate
|
||
|
dcfg_scan_out <= dcfg_scan_in;
|
||
|
sov_dcfg <= (others=>'0');
|
||
|
siv_dcfg <= (others=>'0');
|
||
|
end generate;
|
||
|
|
||
|
end architecture xuq_cpl_spr_cspr;
|