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.

4379 lines
230 KiB
VHDL

-- © 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 thread register slice
--
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_spr_tspr is
generic(
hvmode : integer := 1;
a2mode : integer := 1;
expand_type : integer := 2;
regsize : integer := 64;
eff_ifar : integer := 62);
port(
nclk : in clk_logic;
-- CHIP IO
an_ac_ext_interrupt : in std_ulogic;
an_ac_crit_interrupt : in std_ulogic;
an_ac_perf_interrupt : in std_ulogic;
an_ac_hang_pulse : in std_ulogic;
ac_tc_machine_check : out std_ulogic;
an_ac_external_mchk : in std_ulogic;
instr_trace_mode : in std_ulogic;
d_mode_dc : in std_ulogic;
delay_lclkr_dc : in std_ulogic_vector(0 to 0);
mpw1_dc_b : in std_ulogic_vector(0 to 0);
mpw2_dc_b : in std_ulogic;
ccfg_sl_force : in std_ulogic;
ccfg_sl_thold_0_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_slp_sl_force : in std_ulogic;
func_slp_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;
ccfg_scan_in : in std_ulogic;
ccfg_scan_out : out std_ulogic;
dcfg_scan_in : in std_ulogic;
dcfg_scan_out : out std_ulogic;
cspr_tspr_rf1_act : in std_ulogic;
-- Read Interface
cspr_tspr_ex1_instr : in std_ulogic_vector(0 to 31);
cspr_tspr_ex2_tid : in std_ulogic;
tspr_cspr_ex3_tspr_rt : out std_ulogic_vector(64-regsize to 63);
-- Write Interface
dec_spr_ex4_val : in std_ulogic;
cspr_tspr_ex5_is_mtmsr : in std_ulogic;
cspr_tspr_ex5_is_mtspr : in std_ulogic;
cspr_tspr_ex5_is_wrtee : in std_ulogic;
cspr_tspr_ex5_is_wrteei : in std_ulogic;
cspr_tspr_ex5_instr : in std_ulogic_vector(11 to 20);
ex5_spr_wd : in std_ulogic_vector(64-regsize to 63);
cspr_tspr_dec_dbg_dis : in std_ulogic;
dec_spr_ex1_epid_instr : in std_ulogic;
fxu_spr_ex1_rs2 : in std_ulogic_vector(42 to 55);
spr_cpl_ex3_ct_be : out std_ulogic;
spr_cpl_ex3_ct_le : out std_ulogic;
-- Illegal SPR
tspr_cspr_illeg_mtspr_b : out std_ulogic;
tspr_cspr_illeg_mfspr_b : out std_ulogic;
tspr_cspr_hypv_mtspr : out std_ulogic;
tspr_cspr_hypv_mfspr : out std_ulogic;
-- Interrupt Interface
cpl_spr_ex5_act : in std_ulogic;
cpl_spr_ex5_int : in std_ulogic;
cpl_spr_ex5_gint : in std_ulogic;
cpl_spr_ex5_cint : in std_ulogic;
cpl_spr_ex5_mcint : in std_ulogic;
cpl_spr_ex5_nia : in std_ulogic_vector(62-eff_ifar to 61);
cpl_spr_ex5_esr : in std_ulogic_vector(0 to 16);
cpl_spr_ex5_mcsr : in std_ulogic_vector(0 to 14);
cpl_spr_ex5_dbsr : in std_ulogic_vector(0 to 18);
cpl_spr_ex5_dear_save : in std_ulogic;
cpl_spr_ex5_dear_update : in std_ulogic;
cpl_spr_ex5_dear_update_saved : in std_ulogic;
cpl_spr_ex5_dbsr_update : in std_ulogic;
cpl_spr_ex5_esr_update : in std_ulogic;
cpl_spr_ex5_srr0_dec : in std_ulogic;
cpl_spr_ex5_force_gsrr : in std_ulogic;
cpl_spr_ex5_dbsr_ide : in std_ulogic;
spr_cpl_dbsr_ide : out std_ulogic;
-- Async Interrupt Req Interface
spr_cpl_external_mchk : out std_ulogic;
spr_cpl_ext_interrupt : out std_ulogic;
spr_cpl_dec_interrupt : out std_ulogic;
spr_cpl_udec_interrupt : out std_ulogic;
spr_cpl_perf_interrupt : out std_ulogic;
spr_cpl_fit_interrupt : out std_ulogic;
spr_cpl_crit_interrupt : out std_ulogic;
spr_cpl_wdog_interrupt : out std_ulogic;
cspr_tspr_crit_mask : in std_ulogic;
cspr_tspr_wdog_mask : in std_ulogic;
cspr_tspr_dec_mask : in std_ulogic;
cspr_tspr_udec_mask : in std_ulogic;
cspr_tspr_perf_mask : in std_ulogic;
cspr_tspr_fit_mask : in std_ulogic;
cspr_tspr_ext_mask : in std_ulogic;
tspr_cspr_pm_wake_up : out std_ulogic;
tspr_cspr_async_int : out std_ulogic_vector(0 to 2);
-- DBELL Int
cspr_tspr_dbell_pirtag : in std_ulogic_vector(50 to 63);
tspr_cspr_gpir_match : out std_ulogic;
cspr_tspr_timebase_taps : in std_ulogic_vector(0 to 9);
timer_update : in std_ulogic;
-- Debug
spr_cpl_iac1_en : out std_ulogic;
spr_cpl_iac2_en : out std_ulogic;
spr_cpl_iac3_en : out std_ulogic;
spr_cpl_iac4_en : out std_ulogic;
tspr_cspr_freeze_timers : out std_ulogic;
-- Flush
xu_ex4_flush : in std_ulogic;
xu_ex5_flush : in std_ulogic;
-- Run State
xu_iu_single_instr_mode : out std_ulogic;
xu_iu_raise_iss_pri : out std_ulogic;
-- LiveLock
cpl_spr_ex5_instr_cpl : in std_ulogic;
cspr_tspr_llen : in std_ulogic;
cspr_tspr_llpri : in std_ulogic;
tspr_cspr_lldet : out std_ulogic;
tspr_cspr_llpulse : out std_ulogic;
xu_pc_err_llbust_attempt : out std_ulogic;
xu_pc_err_llbust_failed : out std_ulogic;
pc_xu_inj_llbust_attempt : in std_ulogic;
pc_xu_inj_llbust_failed : in std_ulogic;
-- Resets
pc_xu_inj_wdt_reset : in std_ulogic;
reset_wd_complete : in std_ulogic;
reset_1_complete : in std_ulogic;
reset_2_complete : in std_ulogic;
reset_3_complete : in std_ulogic;
reset_1_request : out std_ulogic;
reset_2_request : out std_ulogic;
reset_3_request : out std_ulogic;
reset_wd_request : out std_ulogic;
xu_pc_err_wdt_reset : out std_ulogic;
-- XER
spr_byp_ex4_is_mtxer : out std_ulogic;
spr_byp_ex4_is_mfxer : out std_ulogic;
-- MSR Override
cspr_tspr_ram_mode : in std_ulogic;
cspr_tspr_msrovride_en : in std_ulogic;
pc_xu_msrovride_pr : in std_ulogic;
pc_xu_msrovride_gs : in std_ulogic;
pc_xu_msrovride_de : in std_ulogic;
-- SPRs
cpl_spr_dbcr0_edm : in std_ulogic;
lsu_xu_spr_epsc_egs : in std_ulogic;
lsu_xu_spr_epsc_epr : in std_ulogic;
tspr_msr_de : out std_ulogic;
tspr_msr_cm : out std_ulogic;
tspr_msr_pr : out std_ulogic;
tspr_msr_is : out std_ulogic;
tspr_msr_gs : out std_ulogic;
tspr_msr_ee : out std_ulogic;
tspr_msr_ce : out std_ulogic;
tspr_msr_me : out std_ulogic;
tspr_fp_precise : out std_ulogic;
tspr_epcr_extgs : out std_ulogic;
cspr_xucr0_clkg_ctl : in std_ulogic_vector(4 to 4);
spr_dbcr0_idm : out std_ulogic;
spr_dbcr0_icmp : out std_ulogic;
spr_dbcr0_brt : out std_ulogic;
spr_dbcr0_irpt : out std_ulogic;
spr_dbcr0_trap : out std_ulogic;
spr_dbcr0_dac1 : out std_ulogic_vector(0 to 1);
spr_dbcr0_dac2 : out std_ulogic_vector(0 to 1);
spr_dbcr0_ret : out std_ulogic;
spr_dbcr0_dac3 : out std_ulogic_vector(0 to 1);
spr_dbcr0_dac4 : out std_ulogic_vector(0 to 1);
spr_dbcr1_iac12m : out std_ulogic;
spr_dbcr1_iac34m : out std_ulogic;
spr_epcr_dtlbgs : out std_ulogic;
spr_epcr_itlbgs : out std_ulogic;
spr_epcr_dsigs : out std_ulogic;
spr_epcr_isigs : out std_ulogic;
spr_epcr_duvd : out std_ulogic;
spr_epcr_dgtmi : out std_ulogic;
xu_mm_spr_epcr_dmiuh : out std_ulogic;
spr_msr_ucle : out std_ulogic;
spr_msr_spv : out std_ulogic;
spr_msr_fp : out std_ulogic;
spr_msr_ds : out std_ulogic;
spr_msrp_uclep : out std_ulogic;
tspr_debug : out std_ulogic_vector(0 to 11);
-- Power
vdd : inout power_logic;
gnd : inout power_logic
);
-- synopsys translate_off
-- synopsys translate_on
end xuq_spr_tspr;
architecture xuq_spr_tspr of xuq_spr_tspr is
constant DEX2 : natural := 0;
constant DEX3 : natural := 0;
constant DEX4 : natural := 0;
constant DEX5 : natural := 0;
constant DEX6 : natural := 0;
constant DWR : natural := 0;
constant DX : natural := 0;
-- Types
subtype s2 is std_ulogic_vector(0 to 1);
subtype s3 is std_ulogic_vector(0 to 2);
subtype s4 is std_ulogic_vector(0 to 3);
subtype s5 is std_ulogic_vector(0 to 4);
subtype DO is std_ulogic_vector(65-regsize to 64);
-- SPR Bit Constants
constant MSR_CM : natural := 50;
constant MSR_GS : natural := 51;
constant MSR_UCLE : natural := 52;
constant MSR_SPV : natural := 53;
constant MSR_CE : natural := 54;
constant MSR_EE : natural := 55;
constant MSR_PR : natural := 56;
constant MSR_FP : natural := 57;
constant MSR_ME : natural := 58;
constant MSR_FE0 : natural := 59;
constant MSR_DE : natural := 60;
constant MSR_FE1 : natural := 61;
constant MSR_IS : natural := 62;
constant MSR_DS : natural := 63;
constant MSRP_UCLEP : natural := 62;
constant MSRP_DEP : natural := 63;
-- SPR Registers
signal acop_d , acop_q : std_ulogic_vector(32 to 63);
signal ccr3_d , ccr3_q : std_ulogic_vector(62 to 63);
signal csrr0_d , csrr0_q : std_ulogic_vector(64-(eff_ifar) to 63);
signal csrr1_d , csrr1_q : std_ulogic_vector(50 to 63);
signal dbcr0_d , dbcr0_q : std_ulogic_vector(43 to 63);
signal dbcr1_d , dbcr1_q : std_ulogic_vector(46 to 63);
signal dbsr_d , dbsr_q : std_ulogic_vector(44 to 63);
signal dear_d , dear_q : std_ulogic_vector(64-(regsize) to 63);
signal dec_d , dec_q : std_ulogic_vector(32 to 63);
signal decar_d , decar_q : std_ulogic_vector(32 to 63);
signal epcr_d , epcr_q : std_ulogic_vector(54 to 63);
signal esr_d , esr_q : std_ulogic_vector(47 to 63);
signal gdear_d , gdear_q : std_ulogic_vector(64-(regsize) to 63);
signal gesr_d , gesr_q : std_ulogic_vector(47 to 63);
signal gpir_d , gpir_q : std_ulogic_vector(32 to 63);
signal gsrr0_d , gsrr0_q : std_ulogic_vector(64-(eff_ifar) to 63);
signal gsrr1_d , gsrr1_q : std_ulogic_vector(50 to 63);
signal hacop_d , hacop_q : std_ulogic_vector(32 to 63);
signal mcsr_d , mcsr_q : std_ulogic_vector(49 to 63);
signal mcsrr0_d , mcsrr0_q : std_ulogic_vector(64-(eff_ifar) to 63);
signal mcsrr1_d , mcsrr1_q : std_ulogic_vector(50 to 63);
signal msr_d , msr_q : std_ulogic_vector(50 to 63);
signal msrp_d , msrp_q : std_ulogic_vector(62 to 63);
signal srr0_d , srr0_q : std_ulogic_vector(64-(eff_ifar) to 63);
signal srr1_d , srr1_q : std_ulogic_vector(50 to 63);
signal tcr_d , tcr_q : std_ulogic_vector(52 to 63);
signal tsr_d , tsr_q : std_ulogic_vector(59 to 63);
signal udec_d , udec_q : std_ulogic_vector(32 to 63);
signal xucr1_d , xucr1_q : std_ulogic_vector(59 to 63);
-- FUNC Scanchain
constant acop_offset : natural := 0;
constant csrr0_offset : natural := acop_offset + acop_q'length*a2mode;
constant csrr1_offset : natural := csrr0_offset + csrr0_q'length*a2mode;
constant dbcr1_offset : natural := csrr1_offset + csrr1_q'length*a2mode;
constant dbsr_offset : natural := dbcr1_offset + dbcr1_q'length;
constant dear_offset : natural := dbsr_offset + dbsr_q'length;
constant dec_offset : natural := dear_offset + dear_q'length;
constant decar_offset : natural := dec_offset + dec_q'length;
constant epcr_offset : natural := decar_offset + decar_q'length*a2mode;
constant esr_offset : natural := epcr_offset + epcr_q'length*hvmode;
constant gdear_offset : natural := esr_offset + esr_q'length;
constant gesr_offset : natural := gdear_offset + gdear_q'length*hvmode;
constant gpir_offset : natural := gesr_offset + gesr_q'length*hvmode;
constant gsrr0_offset : natural := gpir_offset + gpir_q'length*hvmode;
constant gsrr1_offset : natural := gsrr0_offset + gsrr0_q'length*hvmode;
constant hacop_offset : natural := gsrr1_offset + gsrr1_q'length*hvmode;
constant mcsr_offset : natural := hacop_offset + hacop_q'length*hvmode;
constant mcsrr0_offset : natural := mcsr_offset + mcsr_q'length*a2mode;
constant mcsrr1_offset : natural := mcsrr0_offset + mcsrr0_q'length*a2mode;
constant msrp_offset : natural := mcsrr1_offset + mcsrr1_q'length*a2mode;
constant srr0_offset : natural := msrp_offset + msrp_q'length*hvmode;
constant srr1_offset : natural := srr0_offset + srr0_q'length;
constant tcr_offset : natural := srr1_offset + srr1_q'length;
constant tsr_offset : natural := tcr_offset + tcr_q'length*a2mode;
constant udec_offset : natural := tsr_offset + tsr_q'length*a2mode;
constant last_reg_offset : natural := udec_offset + udec_q'length*a2mode;
-- BCFG Scanchain
constant last_reg_offset_bcfg : natural := 1;
-- CCFG Scanchain
constant ccr3_offset_ccfg : natural := 0;
constant msr_offset_ccfg : natural := ccr3_offset_ccfg + ccr3_q'length;
constant xucr1_offset_ccfg : natural := msr_offset_ccfg + msr_q'length;
constant last_reg_offset_ccfg : natural := xucr1_offset_ccfg + xucr1_q'length;
-- DCFG Scanchain
constant dbcr0_offset_dcfg : natural := 0;
constant last_reg_offset_dcfg : natural := dbcr0_offset_dcfg + dbcr0_q'length;
-- Latches
signal exx_act_q, exx_act_d : std_ulogic_vector(1 to 5); -- input=>exx_act_d , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal ex2_is_mfspr_q, ex1_is_mfspr : std_ulogic; -- input=>ex1_is_mfspr , act=>exx_act(1) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex2_is_mtspr_q, ex1_is_mtspr : std_ulogic; -- input=>ex1_is_mtspr , act=>exx_act(1) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex2_is_mfmsr_q, ex1_is_mfmsr : std_ulogic; -- input=>ex1_is_mfmsr , act=>exx_act(1) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex2_instr_q, ex2_instr_d : std_ulogic_vector(11 to 20); -- input=>ex2_instr_d , act=>exx_act(1) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex3_is_mtxer_q, ex3_is_mtxer_d : std_ulogic; -- input=>ex3_is_mtxer_d , act=>exx_act(2) , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal ex3_is_mfxer_q, ex3_is_mfxer_d : std_ulogic; -- input=>ex3_is_mfxer_d , act=>exx_act(2) , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal ex2_rfi_q, ex2_rfi_d : std_ulogic; -- input=>ex2_rfi_d , act=>exx_act(1) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex2_rfgi_q, ex2_rfgi_d : std_ulogic; -- input=>ex2_rfgi_d , act=>exx_act(1) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex2_rfci_q, ex1_is_rfci : std_ulogic; -- input=>ex1_is_rfci , act=>exx_act(1) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex2_rfmci_q, ex1_is_rfmci : std_ulogic; -- input=>ex1_is_rfmci , act=>exx_act(1) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex3_rfi_q : std_ulogic; -- input=>ex2_rfi_q , act=>exx_act(2) , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal ex3_rfgi_q : std_ulogic; -- input=>ex2_rfgi_q , act=>exx_act(2) , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal ex3_rfci_q : std_ulogic; -- input=>ex2_rfci_q , act=>exx_act(2) , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal ex3_rfmci_q : std_ulogic; -- input=>ex2_rfmci_q , act=>exx_act(2) , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal ex4_is_mfxer_q : std_ulogic; -- input=>ex3_is_mfxer_q , act=>exx_act(3) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex4_is_mtxer_q : std_ulogic; -- input=>ex3_is_mtxer_q , act=>exx_act(3) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex4_rfi_q : std_ulogic; -- input=>ex3_rfi_q , act=>exx_act(3) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex4_rfgi_q : std_ulogic; -- input=>ex3_rfgi_q , act=>exx_act(3) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex4_rfci_q : std_ulogic; -- input=>ex3_rfci_q , act=>exx_act(3) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex4_rfmci_q : std_ulogic; -- input=>ex3_rfmci_q , act=>exx_act(3) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex5_val_q, ex4_val : std_ulogic; -- input=>ex4_val , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal ex5_rfi_q : std_ulogic; -- input=>ex4_rfi_q , act=>exx_act(4) , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal ex5_rfgi_q : std_ulogic; -- input=>ex4_rfgi_q , act=>exx_act(4) , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal ex5_rfci_q : std_ulogic; -- input=>ex4_rfci_q , act=>exx_act(4) , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal ex5_rfmci_q : std_ulogic; -- input=>ex4_rfmci_q , act=>exx_act(4) , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal ex6_val_q, ex5_val : std_ulogic; -- input=>ex5_val , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal ex6_rfi_q : std_ulogic; -- input=>ex5_rfi_q , act=>exx_act(5) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex6_rfgi_q : std_ulogic; -- input=>ex5_rfgi_q , act=>exx_act(5) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex6_rfci_q : std_ulogic; -- input=>ex5_rfci_q , act=>exx_act(5) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex6_rfmci_q : std_ulogic; -- input=>ex5_rfmci_q , act=>exx_act(5) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex6_wrtee_q : std_ulogic; -- input=>cspr_tspr_ex5_is_wrtee , act=>exx_act(5) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex6_wrteei_q : std_ulogic; -- input=>cspr_tspr_ex5_is_wrteei , act=>exx_act(5) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex6_is_mtmsr_q : std_ulogic; -- input=>cspr_tspr_ex5_is_mtmsr , act=>exx_act(5) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex6_is_mtspr_q : std_ulogic; -- input=>cspr_tspr_ex5_is_mtspr , act=>exx_act(5) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex6_instr_q : std_ulogic_vector(11 to 20); -- input=>cspr_tspr_ex5_instr , act=>exx_act(5) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex6_int_q : std_ulogic; -- input=>cpl_spr_ex5_int , act=>ex5_int_act , scan=>N, sleep=>N, ring=>func, needs_sreset=>1
signal ex6_gint_q : std_ulogic; -- input=>cpl_spr_ex5_gint , act=>ex5_int_act , scan=>N, sleep=>N, ring=>func, needs_sreset=>1
signal ex6_cint_q : std_ulogic; -- input=>cpl_spr_ex5_cint , act=>ex5_int_act , scan=>N, sleep=>N, ring=>func, needs_sreset=>1
signal ex6_mcint_q : std_ulogic; -- input=>cpl_spr_ex5_mcint , act=>ex5_int_act , scan=>N, sleep=>N, ring=>func, needs_sreset=>1
signal ex6_nia_q : std_ulogic_vector(62-eff_ifar to 61); -- input=>cpl_spr_ex5_nia , act=>ex5_int_act , scan=>N, sleep=>N, ring=>func, needs_sreset=>1
signal ex6_esr_q : std_ulogic_vector(0 to 16); -- input=>cpl_spr_ex5_esr , act=>cpl_spr_ex5_esr_update , scan=>N, sleep=>N, ring=>func, needs_sreset=>1
signal ex6_mcsr_q : std_ulogic_vector(0 to 14); -- input=>cpl_spr_ex5_mcsr , act=>ex5_int_act , scan=>N, sleep=>N, ring=>func, needs_sreset=>1
signal ex6_dbsr_q : std_ulogic_vector(0 to 18); -- input=>cpl_spr_ex5_dbsr , act=>cpl_spr_ex5_dbsr_update , scan=>N, sleep=>N, ring=>func, needs_sreset=>1
signal ex6_dear_save_q : std_ulogic; -- input=>cpl_spr_ex5_dear_save , act=>tiup , scan=>N, sleep=>N, ring=>func, needs_sreset=>1
signal ex6_dear_update_q : std_ulogic; -- input=>cpl_spr_ex5_dear_update , act=>tiup , scan=>N, sleep=>N, ring=>func, needs_sreset=>1
signal ex6_dear_update_saved_q : std_ulogic; -- input=>cpl_spr_ex5_dear_update_saved, act=>tiup , scan=>N, sleep=>N, ring=>func, needs_sreset=>1
signal ex6_dbsr_update_q : std_ulogic; -- input=>cpl_spr_ex5_dbsr_update , act=>tiup , scan=>N, sleep=>N, ring=>func, needs_sreset=>1
signal ex6_esr_update_q : std_ulogic; -- input=>cpl_spr_ex5_esr_update , act=>tiup , scan=>N, sleep=>N, ring=>func, needs_sreset=>1
signal ex6_srr0_dec_q : std_ulogic; -- input=>cpl_spr_ex5_srr0_dec , act=>tiup , scan=>N, sleep=>N, ring=>func, needs_sreset=>1
signal ex6_force_gsrr_q : std_ulogic; -- input=>cpl_spr_ex5_force_gsrr , act=>ex5_int_act , scan=>N, sleep=>N, ring=>func, needs_sreset=>1
signal ex6_dbsr_ide_q : std_ulogic; -- input=>cpl_spr_ex5_dbsr_ide , act=>ex5_int_act , scan=>N, sleep=>N, ring=>func, needs_sreset=>1
signal ex6_spr_wd_q : std_ulogic_vector(64-regsize to 63); -- input=>ex5_spr_wd , act=>exx_act_data(5), scan=>N, sleep=>N, ring=>func, needs_sreset=>1
signal fit_tb_tap_q, fit_tb_tap_d : std_ulogic; -- input=>fit_tb_tap_d , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal wdog_tb_tap_q, wdog_tb_tap_d : std_ulogic; -- input=>wdog_tb_tap_d , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal hang_pulse_q, hang_pulse_d : std_ulogic_vector(0 to 3); -- input=>hang_pulse_d , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal lltap_q, lltap_d : std_ulogic; -- input=>lltap_d , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal llcnt_q, llcnt_d : std_ulogic_vector(0 to 1); -- input=>llcnt_d , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal msrovride_pr_q : std_ulogic; -- input=>pc_xu_msrovride_pr , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal msrovride_gs_q : std_ulogic; -- input=>pc_xu_msrovride_gs , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal msrovride_de_q : std_ulogic; -- input=>pc_xu_msrovride_de , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal an_ac_ext_interrupt_q : std_ulogic; -- input=>an_ac_ext_interrupt , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal an_ac_crit_interrupt_q : std_ulogic; -- input=>an_ac_crit_interrupt , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal an_ac_perf_interrupt_q : std_ulogic; -- input=>an_ac_perf_interrupt , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal dear_tmp_q, dear_tmp_d : std_ulogic_vector(dear_q'range); -- input=>dear_tmp_d , act=>ex6_dear_save_q, scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal mux_msr_gs_q, mux_msr_gs_d : std_ulogic_vector(0 to 3); -- input=>mux_msr_gs_d , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>0
signal mux_msr_pr_q, mux_msr_pr_d : std_ulogic_vector(0 to 0); -- input=>mux_msr_pr_d , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>0
signal ex3_tspr_rt_q, ex3_tspr_rt_d : std_ulogic_vector(64-regsize to 63); -- input=>ex3_tspr_rt_d , act=>exx_act_data(2), scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal err_llbust_attempt_q, err_llbust_attempt_d : std_ulogic; -- input=>err_llbust_attempt_d , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal err_llbust_failed_q, err_llbust_failed_d : std_ulogic; -- input=>err_llbust_failed_d , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal inj_llbust_attempt_q : std_ulogic; -- input=>pc_xu_inj_llbust_attempt , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal inj_llbust_failed_q : std_ulogic; -- input=>pc_xu_inj_llbust_failed , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal ex2_rs2_q : std_ulogic_vector(42 to 55); -- input=>fxu_spr_ex1_rs2 , act=>exx_act(1) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal ex3_ct_q, ex3_ct_d : std_ulogic_vector(0 to 1); -- input=>ex3_ct_d , act=>exx_act(2) , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal an_ac_external_mchk_q : std_ulogic; -- input=>an_ac_external_mchk , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal mchk_int_q, mchk_int : std_ulogic; -- input=>mchk_int , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal mchk_interrupt_q, mchk_interrupt : std_ulogic; -- input=>mchk_interrupt , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal crit_interrupt_q, crit_interrupt : std_ulogic; -- input=>crit_interrupt , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal wdog_interrupt_q, wdog_interrupt : std_ulogic; -- input=>wdog_interrupt , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal dec_interrupt_q, dec_interrupt : std_ulogic; -- input=>dec_interrupt , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal udec_interrupt_q, udec_interrupt : std_ulogic; -- input=>udec_interrupt , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal perf_interrupt_q, perf_interrupt : std_ulogic; -- input=>perf_interrupt , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal fit_interrupt_q, fit_interrupt : std_ulogic; -- input=>fit_interrupt , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal ext_interrupt_q, ext_interrupt : std_ulogic; -- input=>ext_interrupt , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal single_instr_mode_q, single_instr_mode_d : std_ulogic; -- input=>single_instr_mode_d , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>1
signal single_instr_mode_2_q : std_ulogic; -- input=>single_instr_mode_q , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>1
signal machine_check_q, machine_check_d : std_ulogic; -- input=>machine_check_d , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal raise_iss_pri_q, raise_iss_pri_d : std_ulogic; -- input=>raise_iss_pri_d , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>1
signal raise_iss_pri_2_q : std_ulogic; -- input=>raise_iss_pri_q , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>1
signal epsc_egs_q : std_ulogic; -- input=>lsu_xu_spr_epsc_egs , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal epsc_epr_q : std_ulogic; -- input=>lsu_xu_spr_epsc_epr , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal ex2_epid_instr_q : std_ulogic; -- input=>dec_spr_ex1_epid_instr , act=>exx_act(1) , scan=>N, sleep=>N, ring=>func, needs_sreset=>0
signal pc_xu_inj_wdt_reset_q : std_ulogic; -- input=>pc_xu_inj_wdt_reset , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal err_wdt_reset_q, err_wdt_reset_d : std_ulogic; -- input=>err_wdt_reset_d , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>1
signal ex3_tid_rpwr_q, ex3_tid_rpwr_d : std_ulogic_vector(0 to regsize/8-1); -- input=>ex3_tid_rpwr_d , act=>exx_act(2) , scan=>Y, sleep=>N, ring=>func, needs_sreset=>0
signal ram_mode_q : std_ulogic; -- input=>cspr_tspr_ram_mode , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>1
signal timebase_taps_q : std_ulogic_vector(cspr_tspr_timebase_taps'range);-- input=>cspr_tspr_timebase_taps , act=>tiup , scan=>Y, sleep=>Y, ring=>func, needs_sreset=>0
signal dbsr_mrr_q, dbsr_mrr_d : std_ulogic_vector(0 to 1); -- input=>dbsr_mrr_d , act=>dbsr_mrr_act , scan=>Y, sleep=>N, ring=>func, needs_sreset=>1
signal tsr_wrs_q, tsr_wrs_d : std_ulogic_vector(0 to 1); -- input=>tsr_wrs_d , act=>tsr_wrs_act , scan=>Y, sleep=>N, ring=>func, needs_sreset=>1
signal iac1_en_q, iac1_en_d : std_ulogic; -- input=>iac1_en_d , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>1
signal iac2_en_q, iac2_en_d : std_ulogic; -- input=>iac2_en_d , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>1
signal iac3_en_q, iac3_en_d : std_ulogic; -- input=>iac3_en_d , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>1
signal iac4_en_q, iac4_en_d : std_ulogic; -- input=>iac4_en_d , act=>tiup , scan=>Y, sleep=>N, ring=>func, needs_sreset=>1
signal spare_0_q, spare_0_d : std_ulogic_vector(0 to 13); -- input=>spare_0_d, act=>tiup,
-- Scanchain
constant exx_act_offset : integer := last_reg_offset;
constant ex3_is_mtxer_offset : integer := exx_act_offset + exx_act_q'length;
constant ex3_is_mfxer_offset : integer := ex3_is_mtxer_offset + 1;
constant ex3_rfi_offset : integer := ex3_is_mfxer_offset + 1;
constant ex3_rfgi_offset : integer := ex3_rfi_offset + 1;
constant ex3_rfci_offset : integer := ex3_rfgi_offset + 1;
constant ex3_rfmci_offset : integer := ex3_rfci_offset + 1;
constant ex5_val_offset : integer := ex3_rfmci_offset + 1;
constant ex5_rfi_offset : integer := ex5_val_offset + 1;
constant ex5_rfgi_offset : integer := ex5_rfi_offset + 1;
constant ex5_rfci_offset : integer := ex5_rfgi_offset + 1;
constant ex5_rfmci_offset : integer := ex5_rfci_offset + 1;
constant ex6_val_offset : integer := ex5_rfmci_offset + 1;
constant fit_tb_tap_offset : integer := ex6_val_offset + 1;
constant wdog_tb_tap_offset : integer := fit_tb_tap_offset + 1;
constant hang_pulse_offset : integer := wdog_tb_tap_offset + 1;
constant lltap_offset : integer := hang_pulse_offset + hang_pulse_q'length;
constant llcnt_offset : integer := lltap_offset + 1;
constant msrovride_pr_offset : integer := llcnt_offset + llcnt_q'length;
constant msrovride_gs_offset : integer := msrovride_pr_offset + 1;
constant msrovride_de_offset : integer := msrovride_gs_offset + 1;
constant an_ac_ext_interrupt_offset : integer := msrovride_de_offset + 1;
constant an_ac_crit_interrupt_offset : integer := an_ac_ext_interrupt_offset + 1;
constant an_ac_perf_interrupt_offset : integer := an_ac_crit_interrupt_offset + 1;
constant dear_tmp_offset : integer := an_ac_perf_interrupt_offset + 1;
constant mux_msr_gs_offset : integer := dear_tmp_offset + dear_tmp_q'length;
constant mux_msr_pr_offset : integer := mux_msr_gs_offset + mux_msr_gs_q'length;
constant ex3_tspr_rt_offset : integer := mux_msr_pr_offset + mux_msr_pr_q'length;
constant err_llbust_attempt_offset : integer := ex3_tspr_rt_offset + ex3_tspr_rt_q'length;
constant err_llbust_failed_offset : integer := err_llbust_attempt_offset + 1;
constant inj_llbust_attempt_offset : integer := err_llbust_failed_offset + 1;
constant inj_llbust_failed_offset : integer := inj_llbust_attempt_offset + 1;
constant ex3_ct_offset : integer := inj_llbust_failed_offset + 1;
constant an_ac_external_mchk_offset : integer := ex3_ct_offset + ex3_ct_q'length;
constant mchk_int_offset : integer := an_ac_external_mchk_offset + 1;
constant mchk_interrupt_offset : integer := mchk_int_offset + 1;
constant crit_interrupt_offset : integer := mchk_interrupt_offset + 1;
constant wdog_interrupt_offset : integer := crit_interrupt_offset + 1;
constant dec_interrupt_offset : integer := wdog_interrupt_offset + 1;
constant udec_interrupt_offset : integer := dec_interrupt_offset + 1;
constant perf_interrupt_offset : integer := udec_interrupt_offset + 1;
constant fit_interrupt_offset : integer := perf_interrupt_offset + 1;
constant ext_interrupt_offset : integer := fit_interrupt_offset + 1;
constant single_instr_mode_offset : integer := ext_interrupt_offset + 1;
constant single_instr_mode_2_offset : integer := single_instr_mode_offset + 1;
constant machine_check_offset : integer := single_instr_mode_2_offset + 1;
constant raise_iss_pri_offset : integer := machine_check_offset + 1;
constant raise_iss_pri_2_offset : integer := raise_iss_pri_offset + 1;
constant epsc_egs_offset : integer := raise_iss_pri_2_offset + 1;
constant epsc_epr_offset : integer := epsc_egs_offset + 1;
constant pc_xu_inj_wdt_reset_offset : integer := epsc_epr_offset + 1;
constant err_wdt_reset_offset : integer := pc_xu_inj_wdt_reset_offset + 1;
constant ex3_tid_rpwr_offset : integer := err_wdt_reset_offset + 1;
constant ram_mode_offset : integer := ex3_tid_rpwr_offset + ex3_tid_rpwr_q'length;
constant timebase_taps_offset : integer := ram_mode_offset + 1;
constant dbsr_mrr_offset : integer := timebase_taps_offset + timebase_taps_q'length;
constant tsr_wrs_offset : integer := dbsr_mrr_offset + dbsr_mrr_q'length;
constant iac1_en_offset : integer := tsr_wrs_offset + tsr_wrs_q'length;
constant iac2_en_offset : integer := iac1_en_offset + 1;
constant iac3_en_offset : integer := iac2_en_offset + 1;
constant iac4_en_offset : integer := iac3_en_offset + 1;
constant spare_0_offset : integer := iac4_en_offset + 1;
constant scan_right : integer := spare_0_offset + spare_0_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_ccfg : integer := last_reg_offset_ccfg;
signal siv_ccfg : std_ulogic_vector(0 to scan_right_ccfg-1);
signal sov_ccfg : std_ulogic_vector(0 to scan_right_ccfg-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 spare_0_lclk : clk_logic;
signal spare_0_d1clk, spare_0_d2clk : std_ulogic;
signal ex1_opcode_is_31 : boolean;
signal ex1_opcode_is_19 : boolean;
signal ex1_is_rfi, ex1_is_rfgi : std_ulogic;
signal ex2_is_mfmsr : std_ulogic;
signal ex2_is_mfspr : std_ulogic;
signal ex2_is_mtspr : std_ulogic;
signal ex2_instr : std_ulogic_vector(11 to 20);
signal ex6_val : std_ulogic;
signal ex6_is_mtmsr : std_ulogic;
signal ex6_is_mtspr : std_ulogic;
signal ex6_instr : std_ulogic_vector(11 to 20);
signal ex6_any_int, ex6_any_hint : std_ulogic;
signal ex6_msr_di2 : std_ulogic_vector(msr_q'range);
signal ex6_msr_mask : std_ulogic_vector(msr_q'range);
signal ex6_msr_mux : std_ulogic_vector(msr_q'range);
signal ex6_msr_in : std_ulogic_vector(msr_q'range);
signal ex6_csrr1_d,ex6_mcsrr1_d : std_ulogic_vector(msr_q'range);
signal ex6_gsrr1_d,ex6_srr1_d : std_ulogic_vector(msr_q'range);
signal ex6_rfgi_msr : std_ulogic_vector(msr_q'range);
signal ex6_nia_srr0 : std_ulogic_vector(srr0_q'range);
signal ex6_nia_srr0_dec : std_ulogic_vector(srr0_q'range);
signal ex6_dec_zero,ex6_dec_upper_zero : std_ulogic;
signal ex6_udec_zero,ex6_udec_upper_zero : std_ulogic;
signal ex6_set_tsr_udis : std_ulogic;
signal ex6_set_tsr_dis : std_ulogic;
signal ex6_set_tsr_fis : std_ulogic;
signal ex6_set_tsr_wis : std_ulogic;
signal ex6_set_tsr_enw : std_ulogic;
signal ex6_set_tsr : std_ulogic_vector(tsr_q'range);
signal ex6_spr_wd : std_ulogic_vector(64-regsize to 63);
signal wdog_pulse : std_ulogic;
signal lltbtap, llpulse, llreset : std_ulogic;
signal llstate : std_ulogic_vector(0 to 1);
signal set_dbsr_ide : std_ulogic;
signal set_dbsr : std_ulogic_vector(dbsr_q'range);
signal dec_running, udec_running : std_ulogic;
signal dbcr0_freeze_timers : std_ulogic;
signal dbsr_event : std_ulogic;
signal mux_msr_gs, mux_msr_pr : std_ulogic;
signal mux_msr_de : std_ulogic;
signal hang_pulse : std_ulogic;
signal dear_di : std_ulogic_vector(dear_q'range);
signal ex2_srr0_re2, ex2_gsrr0_re2 : std_ulogic;
signal ex2_csrr0_re2, ex2_mcsrr0_re2 : std_ulogic;
signal ex2_icswx_gs, ex2_icswx_pr : std_ulogic;
signal ex2_acop_ct, ex2_cop_ct : std_ulogic_vector(32 to 63);
signal iac_us_en, iac_er_en : std_ulogic_vector(1 to 4);
signal udec_en : std_ulogic;
signal ex2_ct : std_ulogic_vector(0 to 1);
signal ex6_rfi, ex6_rfgi : std_ulogic;
signal ex6_rfci, ex6_rfmci : std_ulogic;
signal ex6_wrteei, ex6_wrtee : std_ulogic;
signal reset_complete : std_ulogic_vector(0 to 1);
signal wdog_reset_1 : std_ulogic;
signal wdog_reset_2 : std_ulogic;
signal wdog_reset_3 : std_ulogic;
signal tb_tap_edge : std_ulogic_vector(cspr_tspr_timebase_taps'range);
signal exx_act, exx_act_data : std_ulogic_vector(1 to 5);
signal ex5_int_act : std_ulogic;
signal ex1_is_wrteei : std_ulogic;
signal dbsr_mrr_act, tsr_wrs_act : std_ulogic;
signal reset_complete_act : std_ulogic;
signal ex6_gint_nia_sel : std_ulogic;
signal fp_precise : std_ulogic;
signal dbsr_di : std_ulogic_vector(dbsr_q'range);
-- Data
signal spr_acop_ct : std_ulogic_vector(0 to 31);
signal spr_ccr3_en_eepri : std_ulogic;
signal spr_ccr3_si : std_ulogic;
signal spr_dbcr0_rst : std_ulogic_vector(0 to 1);
signal spr_dbcr0_iac1 : std_ulogic;
signal spr_dbcr0_iac2 : std_ulogic;
signal spr_dbcr0_iac3 : std_ulogic;
signal spr_dbcr0_iac4 : std_ulogic;
signal spr_dbcr0_ft : std_ulogic;
signal spr_dbcr1_iac1us : std_ulogic_vector(0 to 1);
signal spr_dbcr1_iac1er : std_ulogic_vector(0 to 1);
signal spr_dbcr1_iac2us : std_ulogic_vector(0 to 1);
signal spr_dbcr1_iac2er : std_ulogic_vector(0 to 1);
signal spr_dbcr1_iac3us : std_ulogic_vector(0 to 1);
signal spr_dbcr1_iac3er : std_ulogic_vector(0 to 1);
signal spr_dbcr1_iac4us : std_ulogic_vector(0 to 1);
signal spr_dbcr1_iac4er : std_ulogic_vector(0 to 1);
signal spr_dbsr_ide : std_ulogic;
signal spr_epcr_extgs : std_ulogic;
signal spr_epcr_icm : std_ulogic;
signal spr_epcr_gicm : std_ulogic;
signal spr_hacop_ct : std_ulogic_vector(0 to 31);
signal spr_msr_cm : std_ulogic;
signal spr_msr_gs : std_ulogic;
signal spr_msr_ce : std_ulogic;
signal spr_msr_ee : std_ulogic;
signal spr_msr_pr : std_ulogic;
signal spr_msr_me : std_ulogic;
signal spr_msr_fe0 : std_ulogic;
signal spr_msr_de : std_ulogic;
signal spr_msr_fe1 : std_ulogic;
signal spr_msr_is : std_ulogic;
signal spr_tcr_wp : std_ulogic_vector(0 to 1);
signal spr_tcr_wrc : std_ulogic_vector(0 to 1);
signal spr_tcr_wie : std_ulogic;
signal spr_tcr_die : std_ulogic;
signal spr_tcr_fp : std_ulogic_vector(0 to 1);
signal spr_tcr_fie : std_ulogic;
signal spr_tcr_are : std_ulogic;
signal spr_tcr_udie : std_ulogic;
signal spr_tcr_ud : std_ulogic;
signal spr_tsr_enw : std_ulogic;
signal spr_tsr_wis : std_ulogic;
signal spr_tsr_dis : std_ulogic;
signal spr_tsr_fis : std_ulogic;
signal spr_tsr_udis : std_ulogic;
signal spr_xucr1_ll_tb_sel : std_ulogic_vector(0 to 2);
signal spr_xucr1_ll_sel : std_ulogic;
signal spr_xucr1_ll_en : std_ulogic;
signal ex6_acop_di : std_ulogic_vector(acop_q'range);
signal ex6_ccr3_di : std_ulogic_vector(ccr3_q'range);
signal ex6_csrr0_di : std_ulogic_vector(csrr0_q'range);
signal ex6_csrr1_di : std_ulogic_vector(csrr1_q'range);
signal ex6_dbcr0_di : std_ulogic_vector(dbcr0_q'range);
signal ex6_dbcr1_di : std_ulogic_vector(dbcr1_q'range);
signal ex6_dbsr_di : std_ulogic_vector(dbsr_q'range);
signal ex6_dear_di : std_ulogic_vector(dear_q'range);
signal ex6_dec_di : std_ulogic_vector(dec_q'range);
signal ex6_decar_di : std_ulogic_vector(decar_q'range);
signal ex6_epcr_di : std_ulogic_vector(epcr_q'range);
signal ex6_esr_di : std_ulogic_vector(esr_q'range);
signal ex6_gdear_di : std_ulogic_vector(gdear_q'range);
signal ex6_gesr_di : std_ulogic_vector(gesr_q'range);
signal ex6_gpir_di : std_ulogic_vector(gpir_q'range);
signal ex6_gsrr0_di : std_ulogic_vector(gsrr0_q'range);
signal ex6_gsrr1_di : std_ulogic_vector(gsrr1_q'range);
signal ex6_hacop_di : std_ulogic_vector(hacop_q'range);
signal ex6_mcsr_di : std_ulogic_vector(mcsr_q'range);
signal ex6_mcsrr0_di : std_ulogic_vector(mcsrr0_q'range);
signal ex6_mcsrr1_di : std_ulogic_vector(mcsrr1_q'range);
signal ex6_msr_di : std_ulogic_vector(msr_q'range);
signal ex6_msrp_di : std_ulogic_vector(msrp_q'range);
signal ex6_srr0_di : std_ulogic_vector(srr0_q'range);
signal ex6_srr1_di : std_ulogic_vector(srr1_q'range);
signal ex6_tcr_di : std_ulogic_vector(tcr_q'range);
signal ex6_tsr_di : std_ulogic_vector(tsr_q'range);
signal ex6_udec_di : std_ulogic_vector(udec_q'range);
signal ex6_xucr1_di : std_ulogic_vector(xucr1_q'range);
signal
ex2_acop_rdec , ex2_ccr3_rdec , ex2_csrr0_rdec , ex2_csrr1_rdec
, ex2_ctr_rdec , ex2_dbcr0_rdec , ex2_dbcr1_rdec , ex2_dbcr2_rdec
, ex2_dbcr3_rdec , ex2_dbsr_rdec , ex2_dear_rdec , ex2_dec_rdec
, ex2_decar_rdec , ex2_epcr_rdec , ex2_esr_rdec , ex2_gdear_rdec
, ex2_gesr_rdec , ex2_gpir_rdec , ex2_gsrr0_rdec , ex2_gsrr1_rdec
, ex2_hacop_rdec , ex2_iar_rdec , ex2_lr_rdec , ex2_mcsr_rdec
, ex2_mcsrr0_rdec, ex2_mcsrr1_rdec, ex2_msrp_rdec , ex2_srr0_rdec
, ex2_srr1_rdec , ex2_tcr_rdec , ex2_tsr_rdec , ex2_udec_rdec
, ex2_xer_rdec , ex2_xucr1_rdec
: std_ulogic;
signal
ex2_acop_re , ex2_ccr3_re , ex2_csrr0_re , ex2_csrr1_re
, ex2_ctr_re , ex2_dbcr0_re , ex2_dbcr1_re , ex2_dbcr2_re
, ex2_dbcr3_re , ex2_dbsr_re , ex2_dear_re , ex2_dec_re
, ex2_decar_re , ex2_epcr_re , ex2_esr_re , ex2_gdear_re
, ex2_gesr_re , ex2_gpir_re , ex2_gsrr0_re , ex2_gsrr1_re
, ex2_hacop_re , ex2_iar_re , ex2_lr_re , ex2_mcsr_re
, ex2_mcsrr0_re , ex2_mcsrr1_re , ex2_msrp_re , ex2_srr0_re
, ex2_srr1_re , ex2_tcr_re , ex2_tsr_re , ex2_udec_re
, ex2_xer_re , ex2_xucr1_re
: std_ulogic;
signal ex2_pir_rdec : std_ulogic;
signal
ex2_acop_we , ex2_ccr3_we , ex2_csrr0_we , ex2_csrr1_we
, ex2_ctr_we , ex2_dbcr0_we , ex2_dbcr1_we , ex2_dbcr2_we
, ex2_dbcr3_we , ex2_dbsr_we , ex2_dbsrwr_we , ex2_dear_we
, ex2_dec_we , ex2_decar_we , ex2_epcr_we , ex2_esr_we
, ex2_gdear_we , ex2_gesr_we , ex2_gpir_we , ex2_gsrr0_we
, ex2_gsrr1_we , ex2_hacop_we , ex2_iar_we , ex2_lr_we
, ex2_mcsr_we , ex2_mcsrr0_we , ex2_mcsrr1_we , ex2_msrp_we
, ex2_srr0_we , ex2_srr1_we , ex2_tcr_we , ex2_tsr_we
, ex2_udec_we , ex2_xer_we , ex2_xucr1_we
: std_ulogic;
signal
ex2_acop_wdec , ex2_ccr3_wdec , ex2_csrr0_wdec , ex2_csrr1_wdec
, ex2_ctr_wdec , ex2_dbcr0_wdec , ex2_dbcr1_wdec , ex2_dbcr2_wdec
, ex2_dbcr3_wdec , ex2_dbsr_wdec , ex2_dbsrwr_wdec, ex2_dear_wdec
, ex2_dec_wdec , ex2_decar_wdec , ex2_epcr_wdec , ex2_esr_wdec
, ex2_gdear_wdec , ex2_gesr_wdec , ex2_gpir_wdec , ex2_gsrr0_wdec
, ex2_gsrr1_wdec , ex2_hacop_wdec , ex2_iar_wdec , ex2_lr_wdec
, ex2_mcsr_wdec , ex2_mcsrr0_wdec, ex2_mcsrr1_wdec, ex2_msrp_wdec
, ex2_srr0_wdec , ex2_srr1_wdec , ex2_tcr_wdec , ex2_tsr_wdec
, ex2_udec_wdec , ex2_xer_wdec , ex2_xucr1_wdec
: std_ulogic;
signal
ex6_acop_wdec , ex6_ccr3_wdec , ex6_csrr0_wdec , ex6_csrr1_wdec
, ex6_dbcr0_wdec , ex6_dbcr1_wdec , ex6_dbsr_wdec , ex6_dbsrwr_wdec
, ex6_dear_wdec , ex6_dec_wdec , ex6_decar_wdec , ex6_epcr_wdec
, ex6_esr_wdec , ex6_gdear_wdec , ex6_gesr_wdec , ex6_gpir_wdec
, ex6_gsrr0_wdec , ex6_gsrr1_wdec , ex6_hacop_wdec , ex6_mcsr_wdec
, ex6_mcsrr0_wdec, ex6_mcsrr1_wdec, ex6_msr_wdec , ex6_msrp_wdec
, ex6_srr0_wdec , ex6_srr1_wdec , ex6_tcr_wdec , ex6_tsr_wdec
, ex6_udec_wdec , ex6_xucr1_wdec
: std_ulogic;
signal
ex6_acop_we , ex6_ccr3_we , ex6_csrr0_we , ex6_csrr1_we
, ex6_dbcr0_we , ex6_dbcr1_we , ex6_dbsr_we , ex6_dbsrwr_we
, ex6_dear_we , ex6_dec_we , ex6_decar_we , ex6_epcr_we
, ex6_esr_we , ex6_gdear_we , ex6_gesr_we , ex6_gpir_we
, ex6_gsrr0_we , ex6_gsrr1_we , ex6_hacop_we , ex6_mcsr_we
, ex6_mcsrr0_we , ex6_mcsrr1_we , ex6_msr_we , ex6_msrp_we
, ex6_srr0_we , ex6_srr1_we , ex6_tcr_we , ex6_tsr_we
, ex6_udec_we , ex6_xucr1_we
: std_ulogic;
signal
acop_act , ccr3_act , csrr0_act , csrr1_act
, dbcr0_act , dbcr1_act , dbsr_act , dear_act
, dec_act , decar_act , epcr_act , esr_act
, gdear_act , gesr_act , gpir_act , gsrr0_act
, gsrr1_act , hacop_act , mcsr_act , mcsrr0_act
, mcsrr1_act , msr_act , msrp_act , srr0_act
, srr1_act , tcr_act , tsr_act , udec_act
, xucr1_act
: std_ulogic;
signal
acop_do , ccr3_do , csrr0_do , csrr1_do
, dbcr0_do , dbcr1_do , dbsr_do , dear_do
, dec_do , decar_do , epcr_do , esr_do
, gdear_do , gesr_do , gpir_do , gsrr0_do
, gsrr1_do , hacop_do , mcsr_do , mcsrr0_do
, mcsrr1_do , msr_do , msrp_do , srr0_do
, srr1_do , tcr_do , tsr_do , udec_do
, xucr1_do
: std_ulogic_vector(0 to 64);
begin
tiup <= '1';
tidn <= (others=>'0');
exx_act_d <= cspr_tspr_rf1_act & exx_act(1 to 4);
exx_act(1) <= exx_act_q(1);
exx_act(2) <= exx_act_q(2);
exx_act(3) <= exx_act_q(3);
exx_act(4) <= exx_act_q(4);
exx_act(5) <= exx_act_q(5);
exx_act_data(1) <= exx_act(1);
exx_act_data(2) <= exx_act(2);
exx_act_data(3) <= exx_act(3);
exx_act_data(4) <= exx_act(4);
exx_act_data(5) <= exx_act(5);
ex5_int_act <= cpl_spr_ex5_act or cspr_xucr0_clkg_ctl(4);
-- Decode
ex1_opcode_is_31 <= cspr_tspr_ex1_instr(0 to 5) = "011111";
ex1_opcode_is_19 <= cspr_tspr_ex1_instr(0 to 5) = "010011";
ex1_is_mfspr <= '1' when ex1_opcode_is_31 and cspr_tspr_ex1_instr(21 to 30) = "0101010011" else '0'; -- 31/339
ex1_is_mtspr <= '1' when ex1_opcode_is_31 and cspr_tspr_ex1_instr(21 to 30) = "0111010011" else '0'; -- 31/467
ex1_is_mfmsr <= '1' when ex1_opcode_is_31 and cspr_tspr_ex1_instr(21 to 30) = "0001010011" else '0'; -- 31/083
ex1_is_rfi <= '1' when ex1_opcode_is_19 and cspr_tspr_ex1_instr(21 to 30) = "0000110010" else '0'; -- 19/050
ex1_is_rfgi <= '1' when ex1_opcode_is_19 and cspr_tspr_ex1_instr(21 to 30) = "0001100110" else '0'; -- 19/102
ex1_is_rfci <= '1' when ex1_opcode_is_19 and cspr_tspr_ex1_instr(21 to 30) = "0000110011" else '0'; -- 19/051
ex1_is_rfmci <= '1' when ex1_opcode_is_19 and cspr_tspr_ex1_instr(21 to 30) = "0000100110" else '0'; -- 19/038
ex1_is_wrteei <= '1' when ex1_opcode_is_31 and cspr_tspr_ex1_instr(21 to 30) = "0010100011" else '0'; -- 31/163
ex2_instr_d <= gate(cspr_tspr_ex1_instr(11 to 20),(ex1_is_mfspr or ex1_is_mtspr or ex1_is_wrteei));
ex2_is_mfmsr <= ex2_is_mfmsr_q;
ex2_is_mfspr <= ex2_is_mfspr_q;
ex2_is_mtspr <= ex2_is_mtspr_q;
ex2_instr <= ex2_instr_q;
ex6_is_mtmsr <= ex6_is_mtmsr_q;
ex6_is_mtspr <= ex6_is_mtspr_q;
ex6_instr <= ex6_instr_q;
ex6_spr_wd <= ex6_spr_wd_q;
ex4_val <= dec_spr_ex4_val and not xu_ex4_flush;
ex5_val <= ex5_val_q and not xu_ex5_flush;
ex6_val <= ex6_val_q;
ex2_rfgi_d <=(ex1_is_rfi and mux_msr_gs_q(0)) or ex1_is_rfgi;
ex2_rfi_d <= ex1_is_rfi and not mux_msr_gs_q(0);
ex6_any_int <= ex6_int_q or ex6_cint_q or ex6_mcint_q or ex6_gint_q;
ex6_any_hint <= ex6_int_q or ex6_cint_q or ex6_mcint_q;
ex6_rfi <= ex6_val and ex6_rfi_q;
ex6_rfgi <= ex6_val and ex6_rfgi_q;
ex6_rfci <= ex6_val and ex6_rfci_q;
ex6_rfmci <= ex6_val and ex6_rfmci_q;
ex6_wrteei <= ex6_val and ex6_wrteei_q;
ex6_wrtee <= ex6_val and ex6_wrtee_q;
ex3_tid_rpwr_d <= (others=>cspr_tspr_ex2_tid);
tb_tap_edge <= cspr_tspr_timebase_taps and not timebase_taps_q;
-- SPR Input Control
-- ACOP
acop_act <= ex6_acop_we;
acop_d <= ex6_acop_di;
-- CCR3
ccr3_act <= ex6_ccr3_we;
ccr3_d <= ex6_ccr3_di;
-- CSRR0
csrr0_act <= ex6_csrr0_we or ex6_cint_q;
with ex6_cint_q select
csrr0_d <= ex6_nia_srr0 when '1',
ex6_csrr0_di when others;
-- CSRR1
csrr1_act <= ex6_csrr1_we or ex6_cint_q;
csrr1_gen_64 : if regsize = 64 generate
ex6_csrr1_d <= ex6_csrr1_di;
end generate;
csrr1_gen_32 : if regsize = 32 generate
ex6_csrr1_d(MSR_CM) <= '0';
ex6_csrr1_d(MSR_GS to MSR_DS) <= ex6_csrr1_di(MSR_GS to MSR_DS);
end generate;
with ex6_cint_q select
csrr1_d <= msr_q when '1',
ex6_csrr1_d when others;
-- DBCR0
dbcr0_act <= ex6_dbcr0_we;
dbcr0_d <= ex6_dbcr0_di;
-- DBCR1
dbcr1_act <= ex6_dbcr1_we;
dbcr1_d <= ex6_dbcr1_di;
-- DBSR
reset_complete_act <= or_reduce(reset_complete);
dbsr_mrr_act <= reset_complete_act or ex6_dbsr_we or ex6_dbsrwr_we;
dbsr_mrr_d <= reset_complete when reset_complete_act ='1' else
ex6_spr_wd(34 to 35) when ex6_dbsrwr_we ='1' else
(dbsr_mrr_q and not ex6_spr_wd(34 to 35));
dbsr_act <= ex6_dbsr_we or ex6_dbsrwr_we or ex6_dbsr_update_q;
-- BRT and ICMP event can never set IDE.
set_dbsr_ide <= ((ex6_dbsr_q(0) or or_reduce(ex6_dbsr_q(3 to 18))) and not msr_q(60)) or ex6_dbsr_ide_q;
set_dbsr <= set_dbsr_ide & ex6_dbsr_q(0 to 18);
dbsr_d <= dbsr_di or gate(set_dbsr,ex6_dbsr_update_q);
dbsr_di <= ex6_dbsr_di when ex6_dbsrwr_we ='1' else
(dbsr_q and not ex6_dbsr_di) when ex6_dbsr_we ='1' else
dbsr_q;
-- DEAR
dear_act <= ex6_dear_we or (ex6_dear_update_q and not ex6_gint_q);
dear_tmp_d(32 to 63) <= ex6_dear_di(32 to 63);
dear_di(32 to 63) <= ex6_dear_di(32 to 63);
xuq_cpl_dear_mask_gen0 : if (64-regsize) < 32 generate
dear_di(dear_d'left to 31) <= ex6_dear_di(dear_d'left to 31) and (dear_d'left to 31=>(spr_msr_cm or not ex6_dear_update_q));
dear_tmp_d(dear_d'left to 31) <= ex6_dear_di(dear_d'left to 31) and (dear_d'left to 31=> spr_msr_cm);
end generate;
with ex6_dear_update_saved_q select
dear_d <= dear_tmp_q when '1',
dear_di when others;
-- GDEAR
gdear_act <= ex6_gdear_we or (ex6_dear_update_q and ex6_gint_q);
gdear_d <= dear_d;
-- DEC
dec_running <= timer_update and not (not spr_tcr_are and ex6_dec_zero) and not cspr_tspr_dec_dbg_dis and not dbcr0_freeze_timers;
dec_act <= ex6_dec_we or dec_running;
dec_d <= ex6_dec_di when ex6_dec_we ='1' else
decar_q when (ex6_set_tsr_dis and spr_tcr_are) ='1' else
std_ulogic_vector(unsigned(dec_q) - 1);
-- UDEC
udec_running <= timer_update and not ex6_udec_zero and not cspr_tspr_dec_dbg_dis and not dbcr0_freeze_timers;
udec_act <= ex6_udec_we or udec_running;
udec_d <= ex6_udec_di when ex6_udec_we ='1' else
std_ulogic_vector(unsigned(udec_q) - 1);
-- DECAR
decar_act <= ex6_decar_we;
decar_d <= ex6_decar_di;
-- EPCR
epcr_act <= ex6_epcr_we;
epcr_d <= ex6_epcr_di;
-- ESR
esr_act <= ex6_esr_we or (ex6_esr_update_q and ex6_int_q);
esr_d <= ex6_esr_q when ex6_esr_update_q ='1' else
ex6_esr_di when ex6_esr_we ='1' else
esr_q;
-- GESR
gesr_act <= ex6_gesr_we or (ex6_esr_update_q and ex6_gint_q);
gesr_d <= ex6_esr_q when ex6_esr_update_q ='1' else
ex6_gesr_di when ex6_gesr_we ='1' else
gesr_q;
-- GPIR
gpir_act <= ex6_gpir_we;
gpir_d <= ex6_gpir_di;
-- HACOP
hacop_act <= ex6_hacop_we;
hacop_d <= ex6_hacop_di;
-- MCSR
mcsr_act <= ex6_mcsr_we or ex6_mcint_q;
mcsr_d <= ex6_mcsr_q when ex6_mcint_q ='1' else
ex6_mcsr_di when ex6_mcsr_we ='1' else
mcsr_q;
-- MCSRR0
mcsrr0_act <= ex6_mcsrr0_we or ex6_mcint_q;
with ex6_mcint_q select
mcsrr0_d <= ex6_nia_srr0 when '1',
ex6_mcsrr0_di when others;
-- MCSRR1
mcsrr1_act <= ex6_mcsrr1_we or ex6_mcint_q;
mcsrr1_gen_64 : if regsize = 64 generate
ex6_mcsrr1_d <= ex6_mcsrr1_di;
end generate;
mcsrr1_gen_32 : if regsize = 32 generate
ex6_mcsrr1_d(MSR_CM) <= '0';
ex6_mcsrr1_d(MSR_GS to MSR_DS) <= ex6_mcsrr1_di(MSR_GS to MSR_DS);
end generate;
with ex6_mcint_q select
mcsrr1_d <= msr_q when '1',
ex6_mcsrr1_d when others;
-- MSR
msr_act <= cspr_xucr0_clkg_ctl(4) or
ex6_any_int or ex6_msr_we or
ex6_wrteei_q or ex6_wrtee_q or
ex6_rfi_q or ex6_rfgi_q or ex6_rfci_q or ex6_rfmci_q;
-- CM GS UCLE SPV CE EE PR FP ME FE0 DE FE1 IS DS
-- 50 51 52 53 54 55 56 57 58 59 60 61 62 63
-- X X MSRP
with (msrp_q(MSRP_UCLEP) and msr_q(MSR_GS)) select
ex6_msr_di2(MSR_UCLE) <= msr_q(MSR_UCLE) when '1',
ex6_msr_di(MSR_UCLE) when others;
with (msrp_q(MSRP_DEP) and msr_q(MSR_GS)) select
ex6_msr_di2(MSR_DE) <= msr_q(MSR_DE) when '1',
ex6_msr_di(MSR_DE) when others;
ex6_msr_di2(MSR_CM) <= ex6_msr_di(MSR_CM);
ex6_msr_di2(MSR_GS) <= ex6_msr_di(MSR_GS) or msr_q(MSR_GS);
ex6_msr_di2(MSR_SPV to MSR_FE0) <= ex6_msr_di(MSR_SPV to MSR_FE0);
ex6_msr_di2(MSR_FE1 to MSR_DS) <= ex6_msr_di(MSR_FE1 to MSR_DS);
-- 0 leave unchanged
-- 1 clear
ex6_msr_mask(MSR_CM) <= '0'; -- CM
ex6_msr_mask(MSR_GS) <= ex6_any_hint; -- GS
ex6_msr_mask(MSR_UCLE) <= ex6_any_hint or (ex6_gint_q and not msrp_q(MSRP_UCLEP)); -- UCLE
ex6_msr_mask(MSR_SPV) <= ex6_any_int; -- SPV
ex6_msr_mask(MSR_CE) <= ex6_mcint_q or ex6_cint_q; -- CE
ex6_msr_mask(MSR_EE) <= ex6_any_int; -- EE
ex6_msr_mask(MSR_PR to MSR_FP) <= (others=>ex6_any_int); -- PR,FP
ex6_msr_mask(MSR_ME) <= ex6_mcint_q; -- ME
ex6_msr_mask(MSR_FE0) <= ex6_any_int; -- FE0
ex6_msr_mask(MSR_DE) <= ex6_mcint_q or ex6_cint_q; -- DE
ex6_msr_mask(MSR_FE1 to MSR_DS) <= (others=>ex6_any_int); -- FE1,IS,DS
with s5'(ex6_rfi & ex6_rfgi & ex6_rfci & ex6_rfmci & ex6_msr_we) select
ex6_msr_mux <= srr1_q when "10000",
ex6_rfgi_msr when "01000",
csrr1_q when "00100",
mcsrr1_q when "00010",
ex6_msr_di2 when "00001",
msr_q when others;
ex6_msr_in(51 to 54) <= ex6_msr_mux(51 to 54);
ex6_msr_in(56 to 63) <= ex6_msr_mux(56 to 63);
with s2'(ex6_any_hint & ex6_gint_q) select
ex6_msr_in(MSR_CM) <= spr_epcr_icm when "10", -- ICM
spr_epcr_gicm when "01", -- GICM
ex6_msr_mux(MSR_CM) when others; -- CM
with s2'(ex6_wrteei & ex6_wrtee) select
ex6_msr_in(MSR_EE) <= ex6_instr_q(16) when "10",
ex6_spr_wd(48) when "01",
ex6_msr_mux(MSR_EE) when others;
msr_gen_64 : if regsize = 64 generate
msr_d <= ex6_msr_in and not ex6_msr_mask;
end generate;
msr_gen_32 : if regsize = 32 generate
msr_d(MSR_CM) <= '0';
msr_d(MSR_GS to MSR_DS) <= ex6_msr_in(MSR_GS to MSR_DS) and not ex6_msr_mask(MSR_GS to MSR_DS);
end generate;
-- rfgi msr
ex6_rfgi_msr(MSR_CM) <= gsrr1_q(MSR_CM);
ex6_rfgi_msr(MSR_SPV to MSR_FE0) <= gsrr1_q(MSR_SPV to MSR_FE0);
ex6_rfgi_msr(MSR_FE1 to MSR_DS) <= gsrr1_q(MSR_FE1 to MSR_DS);
with (msr_q(MSR_GS)) select
ex6_rfgi_msr(MSR_GS) <= msr_q(MSR_GS) when '1',
gsrr1_q(MSR_GS) when others;
with (msrp_q(MSRP_UCLEP) and msr_q(MSR_GS)) select
ex6_rfgi_msr(MSR_UCLE) <= msr_q(MSR_UCLE) when '1',
gsrr1_q(MSR_UCLE) when others;
with (msrp_q(MSRP_DEP) and msr_q(MSR_GS)) select
ex6_rfgi_msr(MSR_DE) <= msr_q(MSR_DE) when '1',
gsrr1_q(MSR_DE) when others;
-- MSRP
msrp_act <= ex6_msrp_we;
msrp_d <= ex6_msrp_di;
-- SRR0
srr0_act <= ex6_srr0_we or (ex6_int_q and not ex6_force_gsrr_q);
-- Subtract one for enabled program interrupts
ex6_nia_srr0_dec <= (ex6_nia_q'left to 60=>'0') & ex6_srr0_dec_q;
ex6_nia_srr0 <= std_ulogic_vector(unsigned(ex6_nia_q) - unsigned(ex6_nia_srr0_dec));
with ex6_int_q select
srr0_d <= ex6_nia_srr0 when '1',
ex6_srr0_di when others;
-- SRR1
srr1_act <= ex6_srr1_we or (ex6_int_q and not ex6_force_gsrr_q);
srr1_gen_64 : if regsize = 64 generate
ex6_srr1_d <= ex6_srr1_di;
end generate;
srr1_gen_32 : if regsize = 32 generate
ex6_srr1_d(MSR_CM) <= '0';
ex6_srr1_d(MSR_GS to MSR_DS) <= ex6_srr1_di(MSR_GS to MSR_DS);
end generate;
with ex6_int_q select
srr1_d <= msr_q when '1',
ex6_srr1_d when others;
-- GSRR0
ex6_gint_nia_sel <= ex6_gint_q or (ex6_int_q and ex6_force_gsrr_q);
gsrr0_act <= ex6_gsrr0_we or ex6_gint_nia_sel;
with ex6_gint_nia_sel select
gsrr0_d <= ex6_nia_srr0 when '1',
ex6_gsrr0_di when others;
-- GSRR1
gsrr1_act <= ex6_gsrr1_we or ex6_gint_nia_sel;
gsrr1_gen_64 : if regsize = 64 generate
ex6_gsrr1_d <= ex6_gsrr1_di;
end generate;
gsrr1_gen_32 : if regsize = 32 generate
ex6_gsrr1_d(MSR_CM) <= '0';
ex6_gsrr1_d(MSR_GS to MSR_DS) <= ex6_gsrr1_di(MSR_GS to MSR_DS);
end generate;
with ex6_gint_nia_sel select
gsrr1_d <= msr_q when '1',
ex6_gsrr1_d when others;
-- TCR
tcr_act <= ex6_tcr_we;
tcr_d <= ex6_tcr_di;
-- TSR
tsr_wrs_act <= (reset_wd_complete and reset_complete_act) or ex6_tsr_we;
tsr_wrs_d <= reset_complete when (reset_wd_complete and reset_complete_act) ='1' else
(tsr_wrs_q and not ex6_spr_wd(34 to 35));
tsr_act <= cspr_xucr0_clkg_ctl(4) or ex6_tsr_we or or_reduce(ex6_set_tsr);
tsr_d <= ex6_set_tsr or (tsr_q and not (ex6_tsr_di and (tsr_q'range=>ex6_tsr_we)));
-- XUCR1
xucr1_act <= ex6_xucr1_we;
xucr1_d <= ex6_xucr1_di;
-- LiveLock Buster!
with spr_xucr1_ll_tb_sel select
lltbtap <= tb_tap_edge(8) when "000",
tb_tap_edge(5) when "001",
tb_tap_edge(4) when "010",
tb_tap_edge(3) when "011",
tb_tap_edge(7) when "100",
tb_tap_edge(2) when "101",
tb_tap_edge(6) when "110",
tb_tap_edge(1) when others;
hang_pulse_d <= an_ac_hang_pulse & hang_pulse_q(0 to 2);
hang_pulse <= hang_pulse_q(2) and not hang_pulse_q(3);
with spr_xucr1_ll_sel select
lltap_d <= hang_pulse when '1',
lltbtap when others;
llpulse <= not llcnt_q(0) and -- Stop if counter == "10"
cspr_tspr_llen and -- Don't pulse if stopped
spr_xucr1_ll_en and -- Gate off if disabled
lltap_q;
llreset <= (cpl_spr_ex5_instr_cpl and not ((inj_llbust_attempt_q and not llcnt_q(0)) or inj_llbust_failed_q)) or not cspr_tspr_llen;
with s2'(llpulse & llreset) select
llcnt_d <= "00" when "01",
"00" when "11",
std_ulogic_vector(signed(llcnt_q) + 1) when "10",
llcnt_q when others;
tspr_cspr_lldet <= llcnt_q(0) and spr_xucr1_ll_en;
tspr_cspr_llpulse <= llpulse;
llstate(0) <= llcnt_q(0);
llstate(1) <= llcnt_q(1) or (llcnt_q(0) and not cspr_tspr_llpri);
-- Raise the priority for threads that are in livelock
-- Raise the priroity for threads with EE=0
raise_iss_pri_d <= (not spr_msr_ee and spr_ccr3_en_eepri) or
(llcnt_q(0) and spr_xucr1_ll_en);
xu_iu_raise_iss_pri <= raise_iss_pri_2_q;
err_llbust_attempt_d <= llstate(0) and not llstate(1);
err_llbust_failed_d <= llstate(0) and cspr_tspr_llen and spr_xucr1_ll_en and lltap_q and cspr_tspr_llpri;
xu_spr_tspr_llbust_err_rpt : entity tri.tri_direct_err_rpt(tri_direct_err_rpt)
generic map(width => 2, expand_type => expand_type)
port map ( vd => vdd, gd => gnd,
err_in(0) => err_llbust_attempt_q,
err_in(1) => err_llbust_failed_q,
err_out(0) => xu_pc_err_llbust_attempt,
err_out(1) => xu_pc_err_llbust_failed);
-- Decrementer Logic
ex6_dec_upper_zero <= not or_reduce(dec_q(32 to 62));
ex6_set_tsr_dis <= dec_running and ex6_dec_upper_zero and dec_q(63);
ex6_dec_zero <= ex6_dec_upper_zero and not dec_q(63);
ex6_udec_upper_zero <= not or_reduce(udec_q(32 to 62));
ex6_set_tsr_udis <= udec_running and ex6_udec_upper_zero and udec_q(63);
ex6_udec_zero <= ex6_udec_upper_zero and not udec_q(63);
-- Fixed Interval Timer logic
with spr_tcr_fp select
fit_tb_tap_d <= tb_tap_edge(5) when "00",
tb_tap_edge(4) when "01",
tb_tap_edge(3) when "10",
tb_tap_edge(2) when others;
ex6_set_tsr_fis <= fit_tb_tap_q;
-- Watchdog Timer Logic
with spr_tcr_wp select
wdog_tb_tap_d <= tb_tap_edge(3) when "00",
tb_tap_edge(2) when "01",
tb_tap_edge(9) when "10",
tb_tap_edge(0) when others;
wdog_pulse <= wdog_tb_tap_q or pc_xu_inj_wdt_reset_q;
ex6_set_tsr_enw <= wdog_pulse and not spr_tsr_enw;
ex6_set_tsr_wis <= wdog_pulse and spr_tsr_enw and not spr_tsr_wis;
ex6_set_tsr <= ex6_set_tsr_enw &
ex6_set_tsr_wis &
ex6_set_tsr_dis &
ex6_set_tsr_fis &
ex6_set_tsr_udis;
-- Resets
reset_complete <= "11" when reset_3_complete='1' else
"10" when reset_2_complete='1' else
"01" when reset_1_complete='1' else
"00";
wdog_reset_1 <= spr_tsr_enw and spr_tsr_wis and (spr_tcr_wrc="01");
wdog_reset_2 <= spr_tsr_enw and spr_tsr_wis and (spr_tcr_wrc="10");
wdog_reset_3 <= spr_tsr_enw and spr_tsr_wis and (spr_tcr_wrc="11");
reset_wd_request <= spr_tsr_enw and spr_tsr_wis and not (spr_tcr_wrc="00");
reset_1_request <= wdog_reset_1 or (spr_dbcr0_rst="01");
reset_2_request <= wdog_reset_2 or (spr_dbcr0_rst="10");
reset_3_request <= wdog_reset_3 or (spr_dbcr0_rst="11");
err_wdt_reset_d <= spr_tsr_enw and spr_tsr_wis and or_reduce(spr_tcr_wrc);
xu_spr_tspr_wdt_err_rpt : entity tri.tri_direct_err_rpt(tri_direct_err_rpt)
generic map (width => 1, expand_type => expand_type)
port map (vd => vdd, gd => gnd,
err_in(0) => err_wdt_reset_q,
err_out(0) => xu_pc_err_wdt_reset);
-- DBCR0[FT] Freeze timers
dbcr0_freeze_timers <= spr_dbcr0_ft and (spr_dbsr_ide or dbsr_event);
tspr_cspr_freeze_timers <= dbcr0_freeze_timers;
-- ICSWX
ex2_icswx_gs <= epsc_egs_q when ex2_epid_instr_q='1' else spr_msr_gs;
ex2_icswx_pr <= epsc_epr_q when ex2_epid_instr_q='1' else spr_msr_pr;
-- Only Check ACOP in problem state (PR=1)
ex2_acop_ct <= gate_or(not ex2_icswx_pr,spr_acop_ct);
ex2_cop_ct <= spr_hacop_ct and ex2_acop_ct;
-- Only Check ACOP/HACOP if not in Hypervisor
ex3_ct_d(0) <= ex2_ct(0) or (not ex2_icswx_pr and not ex2_icswx_gs); -- Big Endian
ex3_ct_d(1) <= ex2_ct(1) or (not ex2_icswx_pr and not ex2_icswx_gs); -- Little Endian
with ex2_rs2_q(42 to 47) select -- Big Endian
ex2_ct(0)<= ex2_cop_ct(32) when "100000",
ex2_cop_ct(33) when "100001",
ex2_cop_ct(34) when "100010",
ex2_cop_ct(35) when "100011",
ex2_cop_ct(36) when "100100",
ex2_cop_ct(37) when "100101",
ex2_cop_ct(38) when "100110",
ex2_cop_ct(39) when "100111",
ex2_cop_ct(40) when "101000",
ex2_cop_ct(41) when "101001",
ex2_cop_ct(42) when "101010",
ex2_cop_ct(43) when "101011",
ex2_cop_ct(44) when "101100",
ex2_cop_ct(45) when "101101",
ex2_cop_ct(46) when "101110",
ex2_cop_ct(47) when "101111",
ex2_cop_ct(48) when "110000",
ex2_cop_ct(49) when "110001",
ex2_cop_ct(50) when "110010",
ex2_cop_ct(51) when "110011",
ex2_cop_ct(52) when "110100",
ex2_cop_ct(53) when "110101",
ex2_cop_ct(54) when "110110",
ex2_cop_ct(55) when "110111",
ex2_cop_ct(56) when "111000",
ex2_cop_ct(57) when "111001",
ex2_cop_ct(58) when "111010",
ex2_cop_ct(59) when "111011",
ex2_cop_ct(60) when "111100",
ex2_cop_ct(61) when "111101",
ex2_cop_ct(62) when "111110",
ex2_cop_ct(63) when "111111",
'0' when others;
with ex2_rs2_q(50 to 55) select -- Little Endian
ex2_ct(1)<= ex2_cop_ct(32) when "100000",
ex2_cop_ct(33) when "100001",
ex2_cop_ct(34) when "100010",
ex2_cop_ct(35) when "100011",
ex2_cop_ct(36) when "100100",
ex2_cop_ct(37) when "100101",
ex2_cop_ct(38) when "100110",
ex2_cop_ct(39) when "100111",
ex2_cop_ct(40) when "101000",
ex2_cop_ct(41) when "101001",
ex2_cop_ct(42) when "101010",
ex2_cop_ct(43) when "101011",
ex2_cop_ct(44) when "101100",
ex2_cop_ct(45) when "101101",
ex2_cop_ct(46) when "101110",
ex2_cop_ct(47) when "101111",
ex2_cop_ct(48) when "110000",
ex2_cop_ct(49) when "110001",
ex2_cop_ct(50) when "110010",
ex2_cop_ct(51) when "110011",
ex2_cop_ct(52) when "110100",
ex2_cop_ct(53) when "110101",
ex2_cop_ct(54) when "110110",
ex2_cop_ct(55) when "110111",
ex2_cop_ct(56) when "111000",
ex2_cop_ct(57) when "111001",
ex2_cop_ct(58) when "111010",
ex2_cop_ct(59) when "111011",
ex2_cop_ct(60) when "111100",
ex2_cop_ct(61) when "111101",
ex2_cop_ct(62) when "111110",
ex2_cop_ct(63) when "111111",
'0' when others;
spr_cpl_ex3_ct_be <= ex3_ct_q(0);
spr_cpl_ex3_ct_le <= ex3_ct_q(1);
-- Debug Enables
iac_us_en(1) <= (not spr_dbcr1_iac1us(0) and not spr_dbcr1_iac1us(1)) or
( spr_dbcr1_iac1us(0) and (spr_dbcr1_iac1us(1) xnor spr_msr_pr));
iac_us_en(2) <= (not spr_dbcr1_iac2us(0) and not spr_dbcr1_iac2us(1)) or
( spr_dbcr1_iac2us(0) and (spr_dbcr1_iac2us(1) xnor spr_msr_pr));
iac_us_en(3) <= (not spr_dbcr1_iac3us(0) and not spr_dbcr1_iac3us(1)) or
( spr_dbcr1_iac3us(0) and (spr_dbcr1_iac3us(1) xnor spr_msr_pr));
iac_us_en(4) <= (not spr_dbcr1_iac4us(0) and not spr_dbcr1_iac4us(1)) or
( spr_dbcr1_iac4us(0) and (spr_dbcr1_iac4us(1) xnor spr_msr_pr));
iac_er_en(1) <= (not spr_dbcr1_iac1er(0) and not spr_dbcr1_iac1er(1)) or
( spr_dbcr1_iac1er(0) and (spr_dbcr1_iac1er(1) xnor spr_msr_is));
iac_er_en(2) <= (not spr_dbcr1_iac2er(0) and not spr_dbcr1_iac2er(1)) or
( spr_dbcr1_iac2er(0) and (spr_dbcr1_iac2er(1) xnor spr_msr_is));
iac_er_en(3) <= (not spr_dbcr1_iac3er(0) and not spr_dbcr1_iac3er(1)) or
( spr_dbcr1_iac3er(0) and (spr_dbcr1_iac3er(1) xnor spr_msr_is));
iac_er_en(4) <= (not spr_dbcr1_iac4er(0) and not spr_dbcr1_iac4er(1)) or
( spr_dbcr1_iac4er(0) and (spr_dbcr1_iac4er(1) xnor spr_msr_is));
iac1_en_d <= spr_dbcr0_iac1 and iac_us_en(1) and iac_er_en(1);
iac2_en_d <= spr_dbcr0_iac2 and iac_us_en(2) and iac_er_en(2);
iac3_en_d <= spr_dbcr0_iac3 and iac_us_en(3) and iac_er_en(3);
iac4_en_d <= spr_dbcr0_iac4 and iac_us_en(4) and iac_er_en(4);
spr_cpl_iac1_en <= iac1_en_q;
spr_cpl_iac2_en <= iac2_en_q;
spr_cpl_iac3_en <= iac3_en_q;
spr_cpl_iac4_en <= iac4_en_q;
-- Async Interrupts
spr_cpl_crit_interrupt <= crit_interrupt_q;
spr_cpl_wdog_interrupt <= wdog_interrupt_q;
spr_cpl_dec_interrupt <= dec_interrupt_q;
spr_cpl_udec_interrupt <= udec_interrupt_q;
spr_cpl_perf_interrupt <= perf_interrupt_q;
spr_cpl_fit_interrupt <= fit_interrupt_q;
spr_cpl_ext_interrupt <= ext_interrupt_q;
spr_cpl_external_mchk <= mchk_interrupt_q;
-- Ungated version for CPL
-- Gating for gs|me done at ex5_ivo_sel, which also gates mcsr write.
mchk_int <= cspr_tspr_crit_mask and an_ac_external_mchk_q;
mchk_interrupt <= cspr_tspr_crit_mask and an_ac_external_mchk_q and (spr_msr_gs or spr_msr_me);
crit_interrupt <= cspr_tspr_crit_mask and an_ac_crit_interrupt_q and (spr_msr_gs or spr_msr_ce);
wdog_interrupt <= cspr_tspr_wdog_mask and spr_tsr_wis and (spr_msr_gs or spr_msr_ce) and spr_tcr_wie;
dec_interrupt <= cspr_tspr_dec_mask and spr_tsr_dis and (spr_msr_gs or spr_msr_ee) and spr_tcr_die;
udec_interrupt <= cspr_tspr_udec_mask and spr_tsr_udis and (spr_msr_gs or spr_msr_ee) and spr_tcr_udie;
perf_interrupt <= cspr_tspr_perf_mask and an_ac_perf_interrupt_q and (spr_msr_gs or spr_msr_ee);
fit_interrupt <= cspr_tspr_fit_mask and spr_tsr_fis and (spr_msr_gs or spr_msr_ee) and spr_tcr_fie;
ext_interrupt <= cspr_tspr_ext_mask and an_ac_ext_interrupt_q and (( spr_epcr_extgs and spr_msr_gs and spr_msr_ee) or
(not spr_epcr_extgs and (spr_msr_gs or spr_msr_ee)));
tspr_cspr_pm_wake_up <= ex6_any_int or
mchk_interrupt_q or
crit_interrupt_q or
wdog_interrupt_q or
dec_interrupt_q or
udec_interrupt_q or
perf_interrupt_q or
fit_interrupt_q or
ext_interrupt_q;
tspr_cspr_async_int <= an_ac_ext_interrupt_q & an_ac_crit_interrupt_q & an_ac_perf_interrupt_q;
tspr_cspr_gpir_match <= '1' when cspr_tspr_dbell_pirtag = gpir_do(51 to 64) else '0';
-- MSR Override
with cspr_tspr_msrovride_en select
mux_msr_pr <= msrovride_pr_q when '1',
spr_msr_pr when others;
with cspr_tspr_msrovride_en select
mux_msr_gs <= msrovride_gs_q when '1',
spr_msr_gs when others;
with cspr_tspr_msrovride_en select
mux_msr_de <= msrovride_de_q when '1',
spr_msr_de when others;
mux_msr_gs_d <= (others=>mux_msr_gs);
mux_msr_pr_d <= (others=>mux_msr_pr);
udec_en <= ram_mode_q or spr_tcr_ud;
-- FP Precise Mode
tspr_fp_precise <= fp_precise;
fp_precise <= (spr_msr_fe0 or spr_msr_fe1);
-- IO signal assignments
tspr_msr_de <= mux_msr_de;
tspr_msr_cm <= spr_msr_cm;
tspr_msr_is <= spr_msr_is;
tspr_msr_gs <= mux_msr_gs_q(3);
tspr_msr_pr <= mux_msr_pr_q(0);
tspr_msr_ee <= spr_msr_ee;
tspr_msr_ce <= spr_msr_ce;
tspr_msr_me <= spr_msr_me;
tspr_epcr_extgs <= spr_epcr_extgs;
dbsr_event <= or_reduce(dbsr_q(45 to 63));
spr_cpl_dbsr_ide <= spr_dbsr_ide and dbsr_event;
single_instr_mode_d <= spr_ccr3_si or (fp_precise and msr_q(MSR_FP)) or instr_trace_mode;
xu_iu_single_instr_mode <= single_instr_mode_2_q;
machine_check_d <= or_reduce(mcsr_q);
ac_tc_machine_check <= machine_check_q;
-- Debug
tspr_debug <= ex6_int_q &
ex6_gint_q &
ex6_cint_q &
ex6_mcint_q &
ex6_esr_update_q &
ex6_dbsr_update_q &
ex6_dear_update_q &
ex6_dear_save_q &
ex6_dear_update_saved_q &
an_ac_crit_interrupt_q &
an_ac_perf_interrupt_q &
an_ac_ext_interrupt_q;
spr_byp_ex4_is_mtxer <= ex4_is_mtxer_q;
spr_byp_ex4_is_mfxer <= ex4_is_mfxer_q;
ex3_is_mfxer_d <= ex2_is_mfspr and ex2_xer_rdec;
ex3_is_mtxer_d <= ex2_is_mtspr and ex2_xer_rdec;
ex2_srr0_re2 <= ex2_rfi_q;
ex2_gsrr0_re2 <= ex2_rfgi_q;
ex2_csrr0_re2 <= ex2_rfci_q;
ex2_mcsrr0_re2 <= ex2_rfmci_q;
readmux_00 : if a2mode = 0 and hvmode = 0 generate
ex3_tspr_rt_d <=
(ccr3_do(DO'range) and (DO'range => ex2_ccr3_re )) or
(dbcr0_do(DO'range) and (DO'range => ex2_dbcr0_re )) or
(dbcr1_do(DO'range) and (DO'range => ex2_dbcr1_re )) or
(dbsr_do(DO'range) and (DO'range => ex2_dbsr_re )) or
(dear_do(DO'range) and (DO'range => ex2_dear_re )) or
(dec_do(DO'range) and (DO'range => ex2_dec_re )) or
(esr_do(DO'range) and (DO'range => ex2_esr_re )) or
(msr_do(DO'range) and (DO'range => ex2_is_mfmsr )) or
(srr0_do(DO'range) and (DO'range => (ex2_srr0_re or ex2_srr0_re2))) or
(srr1_do(DO'range) and (DO'range => ex2_srr1_re )) or
(xucr1_do(DO'range) and (DO'range => ex2_xucr1_re ));
end generate;
readmux_01 : if a2mode = 0 and hvmode = 1 generate
ex3_tspr_rt_d <=
(ccr3_do(DO'range) and (DO'range => ex2_ccr3_re )) or
(dbcr0_do(DO'range) and (DO'range => ex2_dbcr0_re )) or
(dbcr1_do(DO'range) and (DO'range => ex2_dbcr1_re )) or
(dbsr_do(DO'range) and (DO'range => ex2_dbsr_re )) or
(dear_do(DO'range) and (DO'range => ex2_dear_re )) or
(dec_do(DO'range) and (DO'range => ex2_dec_re )) or
(epcr_do(DO'range) and (DO'range => ex2_epcr_re )) or
(esr_do(DO'range) and (DO'range => ex2_esr_re )) or
(gdear_do(DO'range) and (DO'range => ex2_gdear_re )) or
(gesr_do(DO'range) and (DO'range => ex2_gesr_re )) or
(gpir_do(DO'range) and (DO'range => ex2_gpir_re )) or
(gsrr0_do(DO'range) and (DO'range => (ex2_gsrr0_re or ex2_gsrr0_re2))) or
(gsrr1_do(DO'range) and (DO'range => ex2_gsrr1_re )) or
(hacop_do(DO'range) and (DO'range => ex2_hacop_re )) or
(msr_do(DO'range) and (DO'range => ex2_is_mfmsr )) or
(msrp_do(DO'range) and (DO'range => ex2_msrp_re )) or
(srr0_do(DO'range) and (DO'range => (ex2_srr0_re or ex2_srr0_re2))) or
(srr1_do(DO'range) and (DO'range => ex2_srr1_re )) or
(xucr1_do(DO'range) and (DO'range => ex2_xucr1_re ));
end generate;
readmux_10 : if a2mode = 1 and hvmode = 0 generate
ex3_tspr_rt_d <=
(acop_do(DO'range) and (DO'range => ex2_acop_re )) or
(ccr3_do(DO'range) and (DO'range => ex2_ccr3_re )) or
(csrr0_do(DO'range) and (DO'range => (ex2_csrr0_re or ex2_csrr0_re2))) or
(csrr1_do(DO'range) and (DO'range => ex2_csrr1_re )) or
(dbcr0_do(DO'range) and (DO'range => ex2_dbcr0_re )) or
(dbcr1_do(DO'range) and (DO'range => ex2_dbcr1_re )) or
(dbsr_do(DO'range) and (DO'range => ex2_dbsr_re )) or
(dear_do(DO'range) and (DO'range => ex2_dear_re )) or
(dec_do(DO'range) and (DO'range => ex2_dec_re )) or
(decar_do(DO'range) and (DO'range => ex2_decar_re )) or
(esr_do(DO'range) and (DO'range => ex2_esr_re )) or
(mcsr_do(DO'range) and (DO'range => ex2_mcsr_re )) or
(mcsrr0_do(DO'range) and (DO'range => (ex2_mcsrr0_re or ex2_mcsrr0_re2))) or
(mcsrr1_do(DO'range) and (DO'range => ex2_mcsrr1_re )) or
(msr_do(DO'range) and (DO'range => ex2_is_mfmsr )) or
(srr0_do(DO'range) and (DO'range => (ex2_srr0_re or ex2_srr0_re2))) or
(srr1_do(DO'range) and (DO'range => ex2_srr1_re )) or
(tcr_do(DO'range) and (DO'range => ex2_tcr_re )) or
(tsr_do(DO'range) and (DO'range => ex2_tsr_re )) or
(udec_do(DO'range) and (DO'range => ex2_udec_re )) or
(xucr1_do(DO'range) and (DO'range => ex2_xucr1_re ));
end generate;
readmux_11 : if a2mode = 1 and hvmode = 1 generate
ex3_tspr_rt_d <=
(acop_do(DO'range) and (DO'range => ex2_acop_re )) or
(ccr3_do(DO'range) and (DO'range => ex2_ccr3_re )) or
(csrr0_do(DO'range) and (DO'range => (ex2_csrr0_re or ex2_csrr0_re2))) or
(csrr1_do(DO'range) and (DO'range => ex2_csrr1_re )) or
(dbcr0_do(DO'range) and (DO'range => ex2_dbcr0_re )) or
(dbcr1_do(DO'range) and (DO'range => ex2_dbcr1_re )) or
(dbsr_do(DO'range) and (DO'range => ex2_dbsr_re )) or
(dear_do(DO'range) and (DO'range => ex2_dear_re )) or
(dec_do(DO'range) and (DO'range => ex2_dec_re )) or
(decar_do(DO'range) and (DO'range => ex2_decar_re )) or
(epcr_do(DO'range) and (DO'range => ex2_epcr_re )) or
(esr_do(DO'range) and (DO'range => ex2_esr_re )) or
(gdear_do(DO'range) and (DO'range => ex2_gdear_re )) or
(gesr_do(DO'range) and (DO'range => ex2_gesr_re )) or
(gpir_do(DO'range) and (DO'range => ex2_gpir_re )) or
(gsrr0_do(DO'range) and (DO'range => (ex2_gsrr0_re or ex2_gsrr0_re2))) or
(gsrr1_do(DO'range) and (DO'range => ex2_gsrr1_re )) or
(hacop_do(DO'range) and (DO'range => ex2_hacop_re )) or
(mcsr_do(DO'range) and (DO'range => ex2_mcsr_re )) or
(mcsrr0_do(DO'range) and (DO'range => (ex2_mcsrr0_re or ex2_mcsrr0_re2))) or
(mcsrr1_do(DO'range) and (DO'range => ex2_mcsrr1_re )) or
(msr_do(DO'range) and (DO'range => ex2_is_mfmsr )) or
(msrp_do(DO'range) and (DO'range => ex2_msrp_re )) or
(srr0_do(DO'range) and (DO'range => (ex2_srr0_re or ex2_srr0_re2))) or
(srr1_do(DO'range) and (DO'range => ex2_srr1_re )) or
(tcr_do(DO'range) and (DO'range => ex2_tcr_re )) or
(tsr_do(DO'range) and (DO'range => ex2_tsr_re )) or
(udec_do(DO'range) and (DO'range => ex2_udec_re )) or
(xucr1_do(DO'range) and (DO'range => ex2_xucr1_re ));
end generate;
tspr_cspr_ex3_tspr_rt <= ex3_tspr_rt_q and fanout(ex3_tid_rpwr_q,regsize);
ex2_pir_rdec <= (ex2_instr(11 to 20) = "1111001000"); -- 286
ex2_acop_rdec <= (ex2_instr(11 to 20) = "1111100000"); -- 31
ex2_ccr3_rdec <= (ex2_instr(11 to 20) = "1010111111"); -- 1013
ex2_csrr0_rdec <= (ex2_instr(11 to 20) = "1101000001"); -- 58
ex2_csrr1_rdec <= (ex2_instr(11 to 20) = "1101100001"); -- 59
ex2_ctr_rdec <= (ex2_instr(11 to 20) = "0100100000"); -- 9
ex2_dbcr0_rdec <= (ex2_instr(11 to 20) = "1010001001"); -- 308
ex2_dbcr1_rdec <= (ex2_instr(11 to 20) = "1010101001"); -- 309
ex2_dbcr2_rdec <= (ex2_instr(11 to 20) = "1011001001"); -- 310
ex2_dbcr3_rdec <= (ex2_instr(11 to 20) = "1000011010"); -- 848
ex2_dbsr_rdec <= (ex2_instr(11 to 20) = "1000001001"); -- 304
ex2_dear_rdec <= (ex2_instr(11 to 20) = "1110100001"); -- 61
ex2_dec_rdec <= (ex2_instr(11 to 20) = "1011000000"); -- 22
ex2_decar_rdec <= (ex2_instr(11 to 20) = "1011000001"); -- 54
ex2_epcr_rdec <= (ex2_instr(11 to 20) = "1001101001"); -- 307
ex2_esr_rdec <= (ex2_instr(11 to 20) = "1111000001"); -- 62
ex2_gdear_rdec <= (ex2_instr(11 to 20) = "1110101011"); -- 381
ex2_gesr_rdec <= (ex2_instr(11 to 20) = "1111101011"); -- 383
ex2_gpir_rdec <= (ex2_instr(11 to 20) = "1111001011"); -- 382
ex2_gsrr0_rdec <= (ex2_instr(11 to 20) = "1101001011"); -- 378
ex2_gsrr1_rdec <= (ex2_instr(11 to 20) = "1101101011"); -- 379
ex2_hacop_rdec <= (ex2_instr(11 to 20) = "1111101010"); -- 351
ex2_iar_rdec <= (ex2_instr(11 to 20) = "1001011011"); -- 882
ex2_lr_rdec <= (ex2_instr(11 to 20) = "0100000000"); -- 8
ex2_mcsr_rdec <= (ex2_instr(11 to 20) = "1110010001"); -- 572
ex2_mcsrr0_rdec <= (ex2_instr(11 to 20) = "1101010001"); -- 570
ex2_mcsrr1_rdec <= (ex2_instr(11 to 20) = "1101110001"); -- 571
ex2_msrp_rdec <= (ex2_instr(11 to 20) = "1011101001"); -- 311
ex2_srr0_rdec <= (ex2_instr(11 to 20) = "1101000000"); -- 26
ex2_srr1_rdec <= (ex2_instr(11 to 20) = "1101100000"); -- 27
ex2_tcr_rdec <= (ex2_instr(11 to 20) = "1010001010"); -- 340
ex2_tsr_rdec <= (ex2_instr(11 to 20) = "1000001010"); -- 336
ex2_udec_rdec <= udec_en and
(ex2_instr(11 to 20) = "0011010001"); -- 550
ex2_xer_rdec <= (ex2_instr(11 to 20) = "0000100000"); -- 1
ex2_xucr1_rdec <= (ex2_instr(11 to 20) = "1001111010"); -- 851
ex2_acop_re <= ex2_acop_rdec;
ex2_ccr3_re <= ex2_ccr3_rdec;
ex2_csrr0_re <= ex2_csrr0_rdec;
ex2_csrr1_re <= ex2_csrr1_rdec;
ex2_ctr_re <= ex2_ctr_rdec;
ex2_dbcr0_re <= ex2_dbcr0_rdec;
ex2_dbcr1_re <= ex2_dbcr1_rdec;
ex2_dbcr2_re <= ex2_dbcr2_rdec;
ex2_dbcr3_re <= ex2_dbcr3_rdec;
ex2_dbsr_re <= ex2_dbsr_rdec;
ex2_dear_re <= ex2_dear_rdec and not mux_msr_gs_q(0);
ex2_dec_re <= ex2_dec_rdec;
ex2_decar_re <= ex2_decar_rdec;
ex2_epcr_re <= ex2_epcr_rdec;
ex2_esr_re <= ex2_esr_rdec and not mux_msr_gs_q(0);
ex2_gdear_re <= (ex2_gdear_rdec or (ex2_dear_rdec and mux_msr_gs_q(0)));
ex2_gesr_re <= (ex2_gesr_rdec or (ex2_esr_rdec and mux_msr_gs_q(0)));
ex2_gpir_re <= (ex2_gpir_rdec or (ex2_pir_rdec and mux_msr_gs_q(0)));
ex2_gsrr0_re <= (ex2_gsrr0_rdec or (ex2_srr0_rdec and mux_msr_gs_q(0)));
ex2_gsrr1_re <= (ex2_gsrr1_rdec or (ex2_srr1_rdec and mux_msr_gs_q(0)));
ex2_hacop_re <= ex2_hacop_rdec;
ex2_iar_re <= ex2_iar_rdec;
ex2_lr_re <= ex2_lr_rdec;
ex2_mcsr_re <= ex2_mcsr_rdec;
ex2_mcsrr0_re <= ex2_mcsrr0_rdec;
ex2_mcsrr1_re <= ex2_mcsrr1_rdec;
ex2_msrp_re <= ex2_msrp_rdec;
ex2_srr0_re <= ex2_srr0_rdec and not mux_msr_gs_q(0);
ex2_srr1_re <= ex2_srr1_rdec and not mux_msr_gs_q(0);
ex2_tcr_re <= ex2_tcr_rdec;
ex2_tsr_re <= ex2_tsr_rdec;
ex2_udec_re <= ex2_udec_rdec;
ex2_xer_re <= ex2_xer_rdec;
ex2_xucr1_re <= ex2_xucr1_rdec;
ex2_acop_wdec <= ex2_acop_rdec;
ex2_ccr3_wdec <= ex2_ccr3_rdec;
ex2_csrr0_wdec <= ex2_csrr0_rdec;
ex2_csrr1_wdec <= ex2_csrr1_rdec;
ex2_ctr_wdec <= ex2_ctr_rdec;
ex2_dbcr0_wdec <= ex2_dbcr0_rdec;
ex2_dbcr1_wdec <= ex2_dbcr1_rdec;
ex2_dbcr2_wdec <= ex2_dbcr2_rdec;
ex2_dbcr3_wdec <= ex2_dbcr3_rdec;
ex2_dbsr_wdec <= ex2_dbsr_rdec;
ex2_dbsrwr_wdec <= (ex2_instr(11 to 20) = "1001001001"); -- 306
ex2_dear_wdec <= ex2_dear_rdec;
ex2_dec_wdec <= ex2_dec_rdec;
ex2_decar_wdec <= ex2_decar_rdec;
ex2_epcr_wdec <= ex2_epcr_rdec;
ex2_esr_wdec <= ex2_esr_rdec;
ex2_gdear_wdec <= ex2_gdear_rdec;
ex2_gesr_wdec <= ex2_gesr_rdec;
ex2_gpir_wdec <= (ex2_instr(11 to 20) = "1111001011"); -- 382
ex2_gsrr0_wdec <= ex2_gsrr0_rdec;
ex2_gsrr1_wdec <= ex2_gsrr1_rdec;
ex2_hacop_wdec <= (ex2_instr(11 to 20) = "1111101010"); -- 351
ex2_iar_wdec <= ex2_iar_rdec;
ex2_lr_wdec <= ex2_lr_rdec;
ex2_mcsr_wdec <= ex2_mcsr_rdec;
ex2_mcsrr0_wdec <= ex2_mcsrr0_rdec;
ex2_mcsrr1_wdec <= ex2_mcsrr1_rdec;
ex2_msrp_wdec <= ex2_msrp_rdec;
ex2_srr0_wdec <= ex2_srr0_rdec;
ex2_srr1_wdec <= ex2_srr1_rdec;
ex2_tcr_wdec <= ex2_tcr_rdec;
ex2_tsr_wdec <= ex2_tsr_rdec;
ex2_udec_wdec <= udec_en and
ex2_udec_rdec;
ex2_xer_wdec <= ex2_xer_rdec;
ex2_xucr1_wdec <= ex2_xucr1_rdec;
ex2_acop_we <= ex2_acop_wdec;
ex2_ccr3_we <= ex2_ccr3_wdec;
ex2_csrr0_we <= ex2_csrr0_wdec;
ex2_csrr1_we <= ex2_csrr1_wdec;
ex2_ctr_we <= ex2_ctr_wdec;
ex2_dbcr0_we <= ex2_dbcr0_wdec;
ex2_dbcr1_we <= ex2_dbcr1_wdec;
ex2_dbcr2_we <= ex2_dbcr2_wdec;
ex2_dbcr3_we <= ex2_dbcr3_wdec;
ex2_dbsr_we <= ex2_dbsr_wdec;
ex2_dbsrwr_we <= ex2_dbsrwr_wdec;
ex2_dear_we <= ex2_dear_wdec and not mux_msr_gs_q(1);
ex2_dec_we <= ex2_dec_wdec;
ex2_decar_we <= ex2_decar_wdec;
ex2_epcr_we <= ex2_epcr_wdec;
ex2_esr_we <= ex2_esr_wdec and not mux_msr_gs_q(1);
ex2_gdear_we <= (ex2_gdear_wdec or (ex2_dear_wdec and mux_msr_gs_q(1)));
ex2_gesr_we <= (ex2_gesr_wdec or (ex2_esr_wdec and mux_msr_gs_q(1)));
ex2_gpir_we <= ex2_gpir_wdec;
ex2_gsrr0_we <= (ex2_gsrr0_wdec or (ex2_srr0_wdec and mux_msr_gs_q(1)));
ex2_gsrr1_we <= (ex2_gsrr1_wdec or (ex2_srr1_wdec and mux_msr_gs_q(1)));
ex2_hacop_we <= ex2_hacop_wdec;
ex2_iar_we <= ex2_iar_wdec;
ex2_lr_we <= ex2_lr_wdec;
ex2_mcsr_we <= ex2_mcsr_wdec;
ex2_mcsrr0_we <= ex2_mcsrr0_wdec;
ex2_mcsrr1_we <= ex2_mcsrr1_wdec;
ex2_msrp_we <= ex2_msrp_wdec;
ex2_srr0_we <= ex2_srr0_wdec and not mux_msr_gs_q(1);
ex2_srr1_we <= ex2_srr1_wdec and not mux_msr_gs_q(1);
ex2_tcr_we <= ex2_tcr_wdec;
ex2_tsr_we <= ex2_tsr_wdec;
ex2_udec_we <= ex2_udec_wdec;
ex2_xer_we <= ex2_xer_wdec;
ex2_xucr1_we <= ex2_xucr1_wdec;
ex6_acop_wdec <= (ex6_instr(11 to 20) = "1111100000"); -- 31
ex6_ccr3_wdec <= (ex6_instr(11 to 20) = "1010111111"); -- 1013
ex6_csrr0_wdec <= (ex6_instr(11 to 20) = "1101000001"); -- 58
ex6_csrr1_wdec <= (ex6_instr(11 to 20) = "1101100001"); -- 59
ex6_dbcr0_wdec <= (ex6_instr(11 to 20) = "1010001001"); -- 308
ex6_dbcr1_wdec <= (ex6_instr(11 to 20) = "1010101001"); -- 309
ex6_dbsr_wdec <= (ex6_instr(11 to 20) = "1000001001"); -- 304
ex6_dbsrwr_wdec <= (ex6_instr(11 to 20) = "1001001001"); -- 306
ex6_dear_wdec <= (ex6_instr(11 to 20) = "1110100001"); -- 61
ex6_dec_wdec <= (ex6_instr(11 to 20) = "1011000000"); -- 22
ex6_decar_wdec <= (ex6_instr(11 to 20) = "1011000001"); -- 54
ex6_epcr_wdec <= (ex6_instr(11 to 20) = "1001101001"); -- 307
ex6_esr_wdec <= (ex6_instr(11 to 20) = "1111000001"); -- 62
ex6_gdear_wdec <= (ex6_instr(11 to 20) = "1110101011"); -- 381
ex6_gesr_wdec <= (ex6_instr(11 to 20) = "1111101011"); -- 383
ex6_gpir_wdec <= (ex6_instr(11 to 20) = "1111001011"); -- 382
ex6_gsrr0_wdec <= (ex6_instr(11 to 20) = "1101001011"); -- 378
ex6_gsrr1_wdec <= (ex6_instr(11 to 20) = "1101101011"); -- 379
ex6_hacop_wdec <= (ex6_instr(11 to 20) = "1111101010"); -- 351
ex6_mcsr_wdec <= (ex6_instr(11 to 20) = "1110010001"); -- 572
ex6_mcsrr0_wdec <= (ex6_instr(11 to 20) = "1101010001"); -- 570
ex6_mcsrr1_wdec <= (ex6_instr(11 to 20) = "1101110001"); -- 571
ex6_msr_wdec <= ex6_is_mtmsr;
ex6_msrp_wdec <= (ex6_instr(11 to 20) = "1011101001"); -- 311
ex6_srr0_wdec <= (ex6_instr(11 to 20) = "1101000000"); -- 26
ex6_srr1_wdec <= (ex6_instr(11 to 20) = "1101100000"); -- 27
ex6_tcr_wdec <= (ex6_instr(11 to 20) = "1010001010"); -- 340
ex6_tsr_wdec <= (ex6_instr(11 to 20) = "1000001010"); -- 336
ex6_udec_wdec <= udec_en and
(ex6_instr(11 to 20) = "0011010001"); -- 550
ex6_xucr1_wdec <= (ex6_instr(11 to 20) = "1001111010"); -- 851
ex6_acop_we <= ex6_val and ex6_is_mtspr and ex6_acop_wdec;
ex6_ccr3_we <= ex6_val and ex6_is_mtspr and ex6_ccr3_wdec;
ex6_csrr0_we <= ex6_val and ex6_is_mtspr and ex6_csrr0_wdec;
ex6_csrr1_we <= ex6_val and ex6_is_mtspr and ex6_csrr1_wdec;
ex6_dbcr0_we <= ex6_val and ex6_is_mtspr and ex6_dbcr0_wdec;
ex6_dbcr1_we <= ex6_val and ex6_is_mtspr and ex6_dbcr1_wdec;
ex6_dbsr_we <= ex6_val and ex6_is_mtspr and ex6_dbsr_wdec;
ex6_dbsrwr_we <= ex6_val and ex6_is_mtspr and ex6_dbsrwr_wdec;
ex6_dear_we <= ex6_val and ex6_is_mtspr and ex6_dear_wdec and not mux_msr_gs_q(2);
ex6_dec_we <= ex6_val and ex6_is_mtspr and ex6_dec_wdec;
ex6_decar_we <= ex6_val and ex6_is_mtspr and ex6_decar_wdec;
ex6_epcr_we <= ex6_val and ex6_is_mtspr and ex6_epcr_wdec;
ex6_esr_we <= ex6_val and ex6_is_mtspr and ex6_esr_wdec and not mux_msr_gs_q(2);
ex6_gdear_we <= ex6_val and ex6_is_mtspr and (ex6_gdear_wdec or (ex6_dear_wdec and mux_msr_gs_q(2)));
ex6_gesr_we <= ex6_val and ex6_is_mtspr and (ex6_gesr_wdec or (ex6_esr_wdec and mux_msr_gs_q(2)));
ex6_gpir_we <= ex6_val and ex6_is_mtspr and ex6_gpir_wdec;
ex6_gsrr0_we <= ex6_val and ex6_is_mtspr and (ex6_gsrr0_wdec or (ex6_srr0_wdec and mux_msr_gs_q(2)));
ex6_gsrr1_we <= ex6_val and ex6_is_mtspr and (ex6_gsrr1_wdec or (ex6_srr1_wdec and mux_msr_gs_q(2)));
ex6_hacop_we <= ex6_val and ex6_is_mtspr and ex6_hacop_wdec;
ex6_mcsr_we <= ex6_val and ex6_is_mtspr and ex6_mcsr_wdec;
ex6_mcsrr0_we <= ex6_val and ex6_is_mtspr and ex6_mcsrr0_wdec;
ex6_mcsrr1_we <= ex6_val and ex6_is_mtspr and ex6_mcsrr1_wdec;
ex6_msr_we <= ex6_val and ex6_msr_wdec;
ex6_msrp_we <= ex6_val and ex6_is_mtspr and ex6_msrp_wdec;
ex6_srr0_we <= ex6_val and ex6_is_mtspr and ex6_srr0_wdec and not mux_msr_gs_q(2);
ex6_srr1_we <= ex6_val and ex6_is_mtspr and ex6_srr1_wdec and not mux_msr_gs_q(2);
ex6_tcr_we <= ex6_val and ex6_is_mtspr and ex6_tcr_wdec;
ex6_tsr_we <= ex6_val and ex6_is_mtspr and ex6_tsr_wdec;
ex6_udec_we <= ex6_val and ex6_is_mtspr and ex6_udec_wdec;
ex6_xucr1_we <= ex6_val and ex6_is_mtspr and ex6_xucr1_wdec;
-- Illegal SPR checks
ill_spr_00 : if a2mode = 0 and hvmode = 0 generate
tspr_cspr_illeg_mtspr_b <=
ex2_ccr3_wdec or ex2_ctr_wdec or ex2_dbcr0_wdec
or ex2_dbcr1_wdec or ex2_dbcr3_wdec or ex2_dbsr_wdec
or ex2_dear_wdec or ex2_dec_wdec or ex2_esr_wdec
or ex2_iar_wdec or ex2_lr_wdec or ex2_srr0_wdec
or ex2_srr1_wdec or ex2_xer_wdec or ex2_xucr1_wdec ;
tspr_cspr_illeg_mfspr_b <=
ex2_ccr3_rdec or ex2_ctr_rdec or ex2_dbcr0_rdec
or ex2_dbcr1_rdec or ex2_dbcr3_rdec or ex2_dbsr_rdec
or ex2_dear_rdec or ex2_dec_rdec or ex2_esr_rdec
or ex2_iar_rdec or ex2_lr_rdec or ex2_srr0_rdec
or ex2_srr1_rdec or ex2_xer_rdec or ex2_xucr1_rdec ;
tspr_cspr_hypv_mtspr <=
ex2_ccr3_we or ex2_dbcr0_we or ex2_dbcr1_we
or ex2_dbcr3_we or ex2_dbsr_we or ex2_dec_we
or ex2_iar_we or ex2_xucr1_we ;
tspr_cspr_hypv_mfspr <=
ex2_ccr3_re or ex2_dbcr0_re or ex2_dbcr1_re
or ex2_dbcr3_re or ex2_dbsr_re or ex2_dec_re
or ex2_iar_re or ex2_xucr1_re ;
end generate;
ill_spr_01 : if a2mode = 0 and hvmode = 1 generate
tspr_cspr_illeg_mtspr_b <=
ex2_ccr3_wdec or ex2_ctr_wdec or ex2_dbcr0_wdec
or ex2_dbcr1_wdec or ex2_dbcr3_wdec or ex2_dbsr_wdec
or ex2_dbsrwr_wdec or ex2_dear_wdec or ex2_dec_wdec
or ex2_epcr_wdec or ex2_esr_wdec or ex2_gdear_wdec
or ex2_gesr_wdec or ex2_gpir_wdec or ex2_gsrr0_wdec
or ex2_gsrr1_wdec or ex2_hacop_wdec or ex2_iar_wdec
or ex2_lr_wdec or ex2_msrp_wdec or ex2_srr0_wdec
or ex2_srr1_wdec or ex2_xer_wdec or ex2_xucr1_wdec ;
tspr_cspr_illeg_mfspr_b <=
ex2_ccr3_rdec or ex2_ctr_rdec or ex2_dbcr0_rdec
or ex2_dbcr1_rdec or ex2_dbcr3_rdec or ex2_dbsr_rdec
or ex2_dear_rdec or ex2_dec_rdec or ex2_epcr_rdec
or ex2_esr_rdec or ex2_gdear_rdec or ex2_gesr_rdec
or ex2_gpir_rdec or ex2_gsrr0_rdec or ex2_gsrr1_rdec
or ex2_hacop_rdec or ex2_iar_rdec or ex2_lr_rdec
or ex2_msrp_rdec or ex2_srr0_rdec or ex2_srr1_rdec
or ex2_xer_rdec or ex2_xucr1_rdec ;
tspr_cspr_hypv_mtspr <=
ex2_ccr3_we or ex2_dbcr0_we or ex2_dbcr1_we
or ex2_dbcr3_we or ex2_dbsr_we or ex2_dbsrwr_we
or ex2_dec_we or ex2_epcr_we or ex2_gpir_we
or ex2_hacop_we or ex2_iar_we or ex2_msrp_we
or ex2_xucr1_we ;
tspr_cspr_hypv_mfspr <=
ex2_ccr3_re or ex2_dbcr0_re or ex2_dbcr1_re
or ex2_dbcr3_re or ex2_dbsr_re or ex2_dec_re
or ex2_epcr_re or ex2_iar_re or ex2_msrp_re
or ex2_xucr1_re ;
end generate;
ill_spr_10 : if a2mode = 1 and hvmode = 0 generate
tspr_cspr_illeg_mtspr_b <=
ex2_acop_wdec or ex2_ccr3_wdec or ex2_csrr0_wdec
or ex2_csrr1_wdec or ex2_ctr_wdec or ex2_dbcr0_wdec
or ex2_dbcr1_wdec or ex2_dbcr2_wdec or ex2_dbcr3_wdec
or ex2_dbsr_wdec or ex2_dear_wdec or ex2_dec_wdec
or ex2_decar_wdec or ex2_esr_wdec or ex2_iar_wdec
or ex2_lr_wdec or ex2_mcsr_wdec or ex2_mcsrr0_wdec
or ex2_mcsrr1_wdec or ex2_srr0_wdec or ex2_srr1_wdec
or ex2_tcr_wdec or ex2_tsr_wdec or ex2_udec_wdec
or ex2_xer_wdec or ex2_xucr1_wdec ;
tspr_cspr_illeg_mfspr_b <=
ex2_acop_rdec or ex2_ccr3_rdec or ex2_csrr0_rdec
or ex2_csrr1_rdec or ex2_ctr_rdec or ex2_dbcr0_rdec
or ex2_dbcr1_rdec or ex2_dbcr2_rdec or ex2_dbcr3_rdec
or ex2_dbsr_rdec or ex2_dear_rdec or ex2_dec_rdec
or ex2_decar_rdec or ex2_esr_rdec or ex2_iar_rdec
or ex2_lr_rdec or ex2_mcsr_rdec or ex2_mcsrr0_rdec
or ex2_mcsrr1_rdec or ex2_srr0_rdec or ex2_srr1_rdec
or ex2_tcr_rdec or ex2_tsr_rdec or ex2_udec_rdec
or ex2_xer_rdec or ex2_xucr1_rdec ;
tspr_cspr_hypv_mtspr <=
ex2_ccr3_we or ex2_csrr0_we or ex2_csrr1_we
or ex2_dbcr0_we or ex2_dbcr1_we or ex2_dbcr2_we
or ex2_dbcr3_we or ex2_dbsr_we or ex2_dec_we
or ex2_decar_we or ex2_iar_we or ex2_mcsr_we
or ex2_mcsrr0_we or ex2_mcsrr1_we or ex2_tcr_we
or ex2_tsr_we or ex2_xucr1_we ;
tspr_cspr_hypv_mfspr <=
ex2_ccr3_re or ex2_csrr0_re or ex2_csrr1_re
or ex2_dbcr0_re or ex2_dbcr1_re or ex2_dbcr2_re
or ex2_dbcr3_re or ex2_dbsr_re or ex2_dec_re
or ex2_decar_re or ex2_iar_re or ex2_mcsr_re
or ex2_mcsrr0_re or ex2_mcsrr1_re or ex2_tcr_re
or ex2_tsr_re or ex2_xucr1_re ;
end generate;
ill_spr_11 : if a2mode = 1 and hvmode = 1 generate
tspr_cspr_illeg_mtspr_b <=
ex2_acop_wdec or ex2_ccr3_wdec or ex2_csrr0_wdec
or ex2_csrr1_wdec or ex2_ctr_wdec or ex2_dbcr0_wdec
or ex2_dbcr1_wdec or ex2_dbcr2_wdec or ex2_dbcr3_wdec
or ex2_dbsr_wdec or ex2_dbsrwr_wdec or ex2_dear_wdec
or ex2_dec_wdec or ex2_decar_wdec or ex2_epcr_wdec
or ex2_esr_wdec or ex2_gdear_wdec or ex2_gesr_wdec
or ex2_gpir_wdec or ex2_gsrr0_wdec or ex2_gsrr1_wdec
or ex2_hacop_wdec or ex2_iar_wdec or ex2_lr_wdec
or ex2_mcsr_wdec or ex2_mcsrr0_wdec or ex2_mcsrr1_wdec
or ex2_msrp_wdec or ex2_srr0_wdec or ex2_srr1_wdec
or ex2_tcr_wdec or ex2_tsr_wdec or ex2_udec_wdec
or ex2_xer_wdec or ex2_xucr1_wdec ;
tspr_cspr_illeg_mfspr_b <=
ex2_acop_rdec or ex2_ccr3_rdec or ex2_csrr0_rdec
or ex2_csrr1_rdec or ex2_ctr_rdec or ex2_dbcr0_rdec
or ex2_dbcr1_rdec or ex2_dbcr2_rdec or ex2_dbcr3_rdec
or ex2_dbsr_rdec or ex2_dear_rdec or ex2_dec_rdec
or ex2_decar_rdec or ex2_epcr_rdec or ex2_esr_rdec
or ex2_gdear_rdec or ex2_gesr_rdec or ex2_gpir_rdec
or ex2_gsrr0_rdec or ex2_gsrr1_rdec or ex2_hacop_rdec
or ex2_iar_rdec or ex2_lr_rdec or ex2_mcsr_rdec
or ex2_mcsrr0_rdec or ex2_mcsrr1_rdec or ex2_msrp_rdec
or ex2_srr0_rdec or ex2_srr1_rdec or ex2_tcr_rdec
or ex2_tsr_rdec or ex2_udec_rdec or ex2_xer_rdec
or ex2_xucr1_rdec ;
tspr_cspr_hypv_mtspr <=
ex2_ccr3_we or ex2_csrr0_we or ex2_csrr1_we
or ex2_dbcr0_we or ex2_dbcr1_we or ex2_dbcr2_we
or ex2_dbcr3_we or ex2_dbsr_we or ex2_dbsrwr_we
or ex2_dec_we or ex2_decar_we or ex2_epcr_we
or ex2_gpir_we or ex2_hacop_we or ex2_iar_we
or ex2_mcsr_we or ex2_mcsrr0_we or ex2_mcsrr1_we
or ex2_msrp_we or ex2_tcr_we or ex2_tsr_we
or ex2_xucr1_we ;
tspr_cspr_hypv_mfspr <=
ex2_ccr3_re or ex2_csrr0_re or ex2_csrr1_re
or ex2_dbcr0_re or ex2_dbcr1_re or ex2_dbcr2_re
or ex2_dbcr3_re or ex2_dbsr_re or ex2_dec_re
or ex2_decar_re or ex2_epcr_re or ex2_iar_re
or ex2_mcsr_re or ex2_mcsrr0_re or ex2_mcsrr1_re
or ex2_msrp_re or ex2_tcr_re or ex2_tsr_re
or ex2_xucr1_re ;
end generate;
spr_acop_ct <= acop_q(32 to 63);
spr_ccr3_en_eepri <= ccr3_q(62);
spr_ccr3_si <= ccr3_q(63);
spr_dbcr0_idm <= dbcr0_q(43);
spr_dbcr0_rst <= dbcr0_q(44 to 45);
spr_dbcr0_icmp <= dbcr0_q(46);
spr_dbcr0_brt <= dbcr0_q(47);
spr_dbcr0_irpt <= dbcr0_q(48);
spr_dbcr0_trap <= dbcr0_q(49);
spr_dbcr0_iac1 <= dbcr0_q(50);
spr_dbcr0_iac2 <= dbcr0_q(51);
spr_dbcr0_iac3 <= dbcr0_q(52);
spr_dbcr0_iac4 <= dbcr0_q(53);
spr_dbcr0_dac1 <= dbcr0_q(54 to 55);
spr_dbcr0_dac2 <= dbcr0_q(56 to 57);
spr_dbcr0_ret <= dbcr0_q(58);
spr_dbcr0_dac3 <= dbcr0_q(59 to 60);
spr_dbcr0_dac4 <= dbcr0_q(61 to 62);
spr_dbcr0_ft <= dbcr0_q(63);
spr_dbcr1_iac1us <= dbcr1_q(46 to 47);
spr_dbcr1_iac1er <= dbcr1_q(48 to 49);
spr_dbcr1_iac2us <= dbcr1_q(50 to 51);
spr_dbcr1_iac2er <= dbcr1_q(52 to 53);
spr_dbcr1_iac12m <= dbcr1_q(54);
spr_dbcr1_iac3us <= dbcr1_q(55 to 56);
spr_dbcr1_iac3er <= dbcr1_q(57 to 58);
spr_dbcr1_iac4us <= dbcr1_q(59 to 60);
spr_dbcr1_iac4er <= dbcr1_q(61 to 62);
spr_dbcr1_iac34m <= dbcr1_q(63);
spr_dbsr_ide <= dbsr_q(44);
spr_epcr_extgs <= epcr_q(54);
spr_epcr_dtlbgs <= epcr_q(55);
spr_epcr_itlbgs <= epcr_q(56);
spr_epcr_dsigs <= epcr_q(57);
spr_epcr_isigs <= epcr_q(58);
spr_epcr_duvd <= epcr_q(59);
spr_epcr_icm <= epcr_q(60);
spr_epcr_gicm <= epcr_q(61);
spr_epcr_dgtmi <= epcr_q(62);
xu_mm_spr_epcr_dmiuh <= epcr_q(63);
spr_hacop_ct <= hacop_q(32 to 63);
spr_msr_cm <= msr_q(50);
spr_msr_gs <= msr_q(51);
spr_msr_ucle <= msr_q(52);
spr_msr_spv <= msr_q(53);
spr_msr_ce <= msr_q(54);
spr_msr_ee <= msr_q(55);
spr_msr_pr <= msr_q(56);
spr_msr_fp <= msr_q(57);
spr_msr_me <= msr_q(58);
spr_msr_fe0 <= msr_q(59);
spr_msr_de <= msr_q(60);
spr_msr_fe1 <= msr_q(61);
spr_msr_is <= msr_q(62);
spr_msr_ds <= msr_q(63);
spr_msrp_uclep <= msrp_q(62);
spr_tcr_wp <= tcr_q(52 to 53);
spr_tcr_wrc <= tcr_q(54 to 55);
spr_tcr_wie <= tcr_q(56);
spr_tcr_die <= tcr_q(57);
spr_tcr_fp <= tcr_q(58 to 59);
spr_tcr_fie <= tcr_q(60);
spr_tcr_are <= tcr_q(61);
spr_tcr_udie <= tcr_q(62);
spr_tcr_ud <= tcr_q(63);
spr_tsr_enw <= tsr_q(59);
spr_tsr_wis <= tsr_q(60);
spr_tsr_dis <= tsr_q(61);
spr_tsr_fis <= tsr_q(62);
spr_tsr_udis <= tsr_q(63);
spr_xucr1_ll_tb_sel <= xucr1_q(59 to 61);
spr_xucr1_ll_sel <= xucr1_q(62);
spr_xucr1_ll_en <= xucr1_q(63);
-- ACOP
ex6_acop_di <= ex6_spr_wd(32 to 63) ; --CT
acop_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
acop_q(32 to 63) ; --CT
-- CCR3
ex6_ccr3_di <= ex6_spr_wd(62 to 62) & --EN_EEPRI
ex6_spr_wd(63 to 63) ; --SI
ccr3_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
tidn(32 to 61) & --///
ccr3_q(62 to 62) & --EN_EEPRI
ccr3_q(63 to 63) ; --SI
-- CSRR0
ex6_csrr0_di <= ex6_spr_wd(62-(eff_ifar) to 61) ; --SRR0
csrr0_do <= tidn(0 to 62-(eff_ifar)) &
csrr0_q(64-(eff_ifar) to 63) & --SRR0
tidn(62 to 63) ; --///
-- CSRR1
ex6_csrr1_di <= ex6_spr_wd(32 to 32) & --CM
ex6_spr_wd(35 to 35) & --GS
ex6_spr_wd(37 to 37) & --UCLE
ex6_spr_wd(38 to 38) & --SPV
ex6_spr_wd(46 to 46) & --CE
ex6_spr_wd(48 to 48) & --EE
ex6_spr_wd(49 to 49) & --PR
ex6_spr_wd(50 to 50) & --FP
ex6_spr_wd(51 to 51) & --ME
ex6_spr_wd(52 to 52) & --FE0
ex6_spr_wd(54 to 54) & --DE
ex6_spr_wd(55 to 55) & --FE1
ex6_spr_wd(58 to 58) & --IS
ex6_spr_wd(59 to 59) ; --DS
csrr1_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
csrr1_q(50 to 50) & --CM
tidn(33 to 34) & --///
csrr1_q(51 to 51) & --GS
tidn(36 to 36) & --///
csrr1_q(52 to 52) & --UCLE
csrr1_q(53 to 53) & --SPV
tidn(39 to 45) & --///
csrr1_q(54 to 54) & --CE
tidn(47 to 47) & --///
csrr1_q(55 to 55) & --EE
csrr1_q(56 to 56) & --PR
csrr1_q(57 to 57) & --FP
csrr1_q(58 to 58) & --ME
csrr1_q(59 to 59) & --FE0
tidn(53 to 53) & --///
csrr1_q(60 to 60) & --DE
csrr1_q(61 to 61) & --FE1
tidn(56 to 57) & --///
csrr1_q(62 to 62) & --IS
csrr1_q(63 to 63) & --DS
tidn(60 to 63) ; --///
-- DBCR0
ex6_dbcr0_di <= ex6_spr_wd(33 to 33) & --IDM
ex6_spr_wd(34 to 35) & --RST
ex6_spr_wd(36 to 36) & --ICMP
ex6_spr_wd(37 to 37) & --BRT
ex6_spr_wd(38 to 38) & --IRPT
ex6_spr_wd(39 to 39) & --TRAP
ex6_spr_wd(40 to 40) & --IAC1
ex6_spr_wd(41 to 41) & --IAC2
ex6_spr_wd(42 to 42) & --IAC3
ex6_spr_wd(43 to 43) & --IAC4
ex6_spr_wd(44 to 45) & --DAC1
ex6_spr_wd(46 to 47) & --DAC2
ex6_spr_wd(48 to 48) & --RET
ex6_spr_wd(59 to 60) & --DAC3
ex6_spr_wd(61 to 62) & --DAC4
ex6_spr_wd(63 to 63) ; --FT
dbcr0_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
cpl_spr_dbcr0_edm & --EDM
dbcr0_q(43 to 43) & --IDM
dbcr0_q(44 to 45) & --RST
dbcr0_q(46 to 46) & --ICMP
dbcr0_q(47 to 47) & --BRT
dbcr0_q(48 to 48) & --IRPT
dbcr0_q(49 to 49) & --TRAP
dbcr0_q(50 to 50) & --IAC1
dbcr0_q(51 to 51) & --IAC2
dbcr0_q(52 to 52) & --IAC3
dbcr0_q(53 to 53) & --IAC4
dbcr0_q(54 to 55) & --DAC1
dbcr0_q(56 to 57) & --DAC2
dbcr0_q(58 to 58) & --RET
tidn(49 to 58) & --///
dbcr0_q(59 to 60) & --DAC3
dbcr0_q(61 to 62) & --DAC4
dbcr0_q(63 to 63) ; --FT
-- DBCR1
ex6_dbcr1_di <= ex6_spr_wd(32 to 33) & --IAC1US
ex6_spr_wd(34 to 35) & --IAC1ER
ex6_spr_wd(36 to 37) & --IAC2US
ex6_spr_wd(38 to 39) & --IAC2ER
ex6_spr_wd(41 to 41) & --IAC12M
ex6_spr_wd(48 to 49) & --IAC3US
ex6_spr_wd(50 to 51) & --IAC3ER
ex6_spr_wd(52 to 53) & --IAC4US
ex6_spr_wd(54 to 55) & --IAC4ER
ex6_spr_wd(57 to 57) ; --IAC34M
dbcr1_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
dbcr1_q(46 to 47) & --IAC1US
dbcr1_q(48 to 49) & --IAC1ER
dbcr1_q(50 to 51) & --IAC2US
dbcr1_q(52 to 53) & --IAC2ER
tidn(40 to 40) & --///
dbcr1_q(54 to 54) & --IAC12M
tidn(42 to 47) & --///
dbcr1_q(55 to 56) & --IAC3US
dbcr1_q(57 to 58) & --IAC3ER
dbcr1_q(59 to 60) & --IAC4US
dbcr1_q(61 to 62) & --IAC4ER
tidn(56 to 56) & --///
dbcr1_q(63 to 63) & --IAC34M
tidn(58 to 63) ; --///
-- DBSR
ex6_dbsr_di <= ex6_spr_wd(32 to 32) & --IDE
ex6_spr_wd(33 to 33) & --UDE
ex6_spr_wd(36 to 36) & --ICMP
ex6_spr_wd(37 to 37) & --BRT
ex6_spr_wd(38 to 38) & --IRPT
ex6_spr_wd(39 to 39) & --TRAP
ex6_spr_wd(40 to 40) & --IAC1
ex6_spr_wd(41 to 41) & --IAC2
ex6_spr_wd(42 to 42) & --IAC3
ex6_spr_wd(43 to 43) & --IAC4
ex6_spr_wd(44 to 44) & --DAC1R
ex6_spr_wd(45 to 45) & --DAC1W
ex6_spr_wd(46 to 46) & --DAC2R
ex6_spr_wd(47 to 47) & --DAC2W
ex6_spr_wd(48 to 48) & --RET
ex6_spr_wd(59 to 59) & --DAC3R
ex6_spr_wd(60 to 60) & --DAC3W
ex6_spr_wd(61 to 61) & --DAC4R
ex6_spr_wd(62 to 62) & --DAC4W
ex6_spr_wd(63 to 63) ; --IVC
dbsr_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
dbsr_q(44 to 44) & --IDE
dbsr_q(45 to 45) & --UDE
dbsr_mrr_q(0 to 1) & --MRR
dbsr_q(46 to 46) & --ICMP
dbsr_q(47 to 47) & --BRT
dbsr_q(48 to 48) & --IRPT
dbsr_q(49 to 49) & --TRAP
dbsr_q(50 to 50) & --IAC1
dbsr_q(51 to 51) & --IAC2
dbsr_q(52 to 52) & --IAC3
dbsr_q(53 to 53) & --IAC4
dbsr_q(54 to 54) & --DAC1R
dbsr_q(55 to 55) & --DAC1W
dbsr_q(56 to 56) & --DAC2R
dbsr_q(57 to 57) & --DAC2W
dbsr_q(58 to 58) & --RET
tidn(49 to 58) & --///
dbsr_q(59 to 59) & --DAC3R
dbsr_q(60 to 60) & --DAC3W
dbsr_q(61 to 61) & --DAC4R
dbsr_q(62 to 62) & --DAC4W
dbsr_q(63 to 63) ; --IVC
-- DEAR
ex6_dear_di <= ex6_spr_wd(64-(regsize) to 63) ; --DEAR
dear_do <= tidn(0 to 64-(regsize)) &
dear_q(64-(regsize) to 63) ; --DEAR
-- DEC
ex6_dec_di <= ex6_spr_wd(32 to 63) ; --DEC
dec_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
dec_q(32 to 63) ; --DEC
-- DECAR
ex6_decar_di <= ex6_spr_wd(32 to 63) ; --DECAR
decar_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
decar_q(32 to 63) ; --DECAR
-- EPCR
ex6_epcr_di <= ex6_spr_wd(32 to 32) & --EXTGS
ex6_spr_wd(33 to 33) & --DTLBGS
ex6_spr_wd(34 to 34) & --ITLBGS
ex6_spr_wd(35 to 35) & --DSIGS
ex6_spr_wd(36 to 36) & --ISIGS
ex6_spr_wd(37 to 37) & --DUVD
ex6_spr_wd(38 to 38) & --ICM
ex6_spr_wd(39 to 39) & --GICM
ex6_spr_wd(40 to 40) & --DGTMI
ex6_spr_wd(41 to 41) ; --DMIUH
epcr_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
epcr_q(54 to 54) & --EXTGS
epcr_q(55 to 55) & --DTLBGS
epcr_q(56 to 56) & --ITLBGS
epcr_q(57 to 57) & --DSIGS
epcr_q(58 to 58) & --ISIGS
epcr_q(59 to 59) & --DUVD
epcr_q(60 to 60) & --ICM
epcr_q(61 to 61) & --GICM
epcr_q(62 to 62) & --DGTMI
epcr_q(63 to 63) & --DMIUH
tidn(42 to 63) ; --///
-- ESR
ex6_esr_di <= ex6_spr_wd(36 to 36) & --PIL
ex6_spr_wd(37 to 37) & --PPR
ex6_spr_wd(38 to 38) & --PTR
ex6_spr_wd(39 to 39) & --FP
ex6_spr_wd(40 to 40) & --ST
ex6_spr_wd(42 to 42) & --DLK0
ex6_spr_wd(43 to 43) & --DLK1
ex6_spr_wd(44 to 44) & --AP
ex6_spr_wd(45 to 45) & --PUO
ex6_spr_wd(46 to 46) & --BO
ex6_spr_wd(47 to 47) & --PIE
ex6_spr_wd(49 to 49) & --UCT
ex6_spr_wd(53 to 53) & --DATA
ex6_spr_wd(54 to 54) & --TLBI
ex6_spr_wd(55 to 55) & --PT
ex6_spr_wd(56 to 56) & --SPV
ex6_spr_wd(57 to 57) ; --EPID
esr_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
tidn(32 to 35) & --///
esr_q(47 to 47) & --PIL
esr_q(48 to 48) & --PPR
esr_q(49 to 49) & --PTR
esr_q(50 to 50) & --FP
esr_q(51 to 51) & --ST
tidn(41 to 41) & --///
esr_q(52 to 52) & --DLK0
esr_q(53 to 53) & --DLK1
esr_q(54 to 54) & --AP
esr_q(55 to 55) & --PUO
esr_q(56 to 56) & --BO
esr_q(57 to 57) & --PIE
tidn(48 to 48) & --///
esr_q(58 to 58) & --UCT
tidn(50 to 52) & --///
esr_q(59 to 59) & --DATA
esr_q(60 to 60) & --TLBI
esr_q(61 to 61) & --PT
esr_q(62 to 62) & --SPV
esr_q(63 to 63) & --EPID
tidn(58 to 63) ; --///
-- GDEAR
ex6_gdear_di <= ex6_spr_wd(64-(regsize) to 63) ; --GDEAR
gdear_do <= tidn(0 to 64-(regsize)) &
gdear_q(64-(regsize) to 63) ; --GDEAR
-- GESR
ex6_gesr_di <= ex6_spr_wd(36 to 36) & --PIL
ex6_spr_wd(37 to 37) & --PPR
ex6_spr_wd(38 to 38) & --PTR
ex6_spr_wd(39 to 39) & --FP
ex6_spr_wd(40 to 40) & --ST
ex6_spr_wd(42 to 42) & --DLK0
ex6_spr_wd(43 to 43) & --DLK1
ex6_spr_wd(44 to 44) & --AP
ex6_spr_wd(45 to 45) & --PUO
ex6_spr_wd(46 to 46) & --BO
ex6_spr_wd(47 to 47) & --PIE
ex6_spr_wd(49 to 49) & --UCT
ex6_spr_wd(53 to 53) & --DATA
ex6_spr_wd(54 to 54) & --TLBI
ex6_spr_wd(55 to 55) & --PT
ex6_spr_wd(56 to 56) & --SPV
ex6_spr_wd(57 to 57) ; --EPID
gesr_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
tidn(32 to 35) & --///
gesr_q(47 to 47) & --PIL
gesr_q(48 to 48) & --PPR
gesr_q(49 to 49) & --PTR
gesr_q(50 to 50) & --FP
gesr_q(51 to 51) & --ST
tidn(41 to 41) & --///
gesr_q(52 to 52) & --DLK0
gesr_q(53 to 53) & --DLK1
gesr_q(54 to 54) & --AP
gesr_q(55 to 55) & --PUO
gesr_q(56 to 56) & --BO
gesr_q(57 to 57) & --PIE
tidn(48 to 48) & --///
gesr_q(58 to 58) & --UCT
tidn(50 to 52) & --///
gesr_q(59 to 59) & --DATA
gesr_q(60 to 60) & --TLBI
gesr_q(61 to 61) & --PT
gesr_q(62 to 62) & --SPV
gesr_q(63 to 63) & --EPID
tidn(58 to 63) ; --///
-- GPIR
ex6_gpir_di <= ex6_spr_wd(32 to 49) & --VPTAG
ex6_spr_wd(50 to 63) ; --DBTAG
gpir_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
gpir_q(32 to 49) & --VPTAG
gpir_q(50 to 63) ; --DBTAG
-- GSRR0
ex6_gsrr0_di <= ex6_spr_wd(62-(eff_ifar) to 61) ; --GSRR0
gsrr0_do <= tidn(0 to 62-(eff_ifar)) &
gsrr0_q(64-(eff_ifar) to 63) & --GSRR0
tidn(62 to 63) ; --///
-- GSRR1
ex6_gsrr1_di <= ex6_spr_wd(32 to 32) & --CM
ex6_spr_wd(35 to 35) & --GS
ex6_spr_wd(37 to 37) & --UCLE
ex6_spr_wd(38 to 38) & --SPV
ex6_spr_wd(46 to 46) & --CE
ex6_spr_wd(48 to 48) & --EE
ex6_spr_wd(49 to 49) & --PR
ex6_spr_wd(50 to 50) & --FP
ex6_spr_wd(51 to 51) & --ME
ex6_spr_wd(52 to 52) & --FE0
ex6_spr_wd(54 to 54) & --DE
ex6_spr_wd(55 to 55) & --FE1
ex6_spr_wd(58 to 58) & --IS
ex6_spr_wd(59 to 59) ; --DS
gsrr1_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
gsrr1_q(50 to 50) & --CM
tidn(33 to 34) & --///
gsrr1_q(51 to 51) & --GS
tidn(36 to 36) & --///
gsrr1_q(52 to 52) & --UCLE
gsrr1_q(53 to 53) & --SPV
tidn(39 to 45) & --///
gsrr1_q(54 to 54) & --CE
tidn(47 to 47) & --///
gsrr1_q(55 to 55) & --EE
gsrr1_q(56 to 56) & --PR
gsrr1_q(57 to 57) & --FP
gsrr1_q(58 to 58) & --ME
gsrr1_q(59 to 59) & --FE0
tidn(53 to 53) & --///
gsrr1_q(60 to 60) & --DE
gsrr1_q(61 to 61) & --FE1
tidn(56 to 57) & --///
gsrr1_q(62 to 62) & --IS
gsrr1_q(63 to 63) & --DS
tidn(60 to 63) ; --///
-- HACOP
ex6_hacop_di <= ex6_spr_wd(32 to 63) ; --CT
hacop_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
hacop_q(32 to 63) ; --CT
-- MCSR
ex6_mcsr_di <= ex6_spr_wd(48 to 48) & --DPOVR
ex6_spr_wd(49 to 49) & --DDMH
ex6_spr_wd(50 to 50) & --TLBIVAXSR
ex6_spr_wd(51 to 51) & --TLBLRUPE
ex6_spr_wd(52 to 52) & --IL2ECC
ex6_spr_wd(53 to 53) & --DL2ECC
ex6_spr_wd(54 to 54) & --DDPE
ex6_spr_wd(55 to 55) & --EXT
ex6_spr_wd(56 to 56) & --DCPE
ex6_spr_wd(57 to 57) & --IEMH
ex6_spr_wd(58 to 58) & --DEMH
ex6_spr_wd(59 to 59) & --TLBMH
ex6_spr_wd(60 to 60) & --IEPE
ex6_spr_wd(61 to 61) & --DEPE
ex6_spr_wd(62 to 62) ; --TLBPE
mcsr_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
tidn(32 to 47) & --///
mcsr_q(49 to 49) & --DPOVR
mcsr_q(50 to 50) & --DDMH
mcsr_q(51 to 51) & --TLBIVAXSR
mcsr_q(52 to 52) & --TLBLRUPE
mcsr_q(53 to 53) & --IL2ECC
mcsr_q(54 to 54) & --DL2ECC
mcsr_q(55 to 55) & --DDPE
mcsr_q(56 to 56) & --EXT
mcsr_q(57 to 57) & --DCPE
mcsr_q(58 to 58) & --IEMH
mcsr_q(59 to 59) & --DEMH
mcsr_q(60 to 60) & --TLBMH
mcsr_q(61 to 61) & --IEPE
mcsr_q(62 to 62) & --DEPE
mcsr_q(63 to 63) & --TLBPE
tidn(63 to 63) ; --///
-- MCSRR0
ex6_mcsrr0_di <= ex6_spr_wd(62-(eff_ifar) to 61) ; --SRR0
mcsrr0_do <= tidn(0 to 62-(eff_ifar)) &
mcsrr0_q(64-(eff_ifar) to 63) & --SRR0
tidn(62 to 63) ; --///
-- MCSRR1
ex6_mcsrr1_di <= ex6_spr_wd(32 to 32) & --CM
ex6_spr_wd(35 to 35) & --GS
ex6_spr_wd(37 to 37) & --UCLE
ex6_spr_wd(38 to 38) & --SPV
ex6_spr_wd(46 to 46) & --CE
ex6_spr_wd(48 to 48) & --EE
ex6_spr_wd(49 to 49) & --PR
ex6_spr_wd(50 to 50) & --FP
ex6_spr_wd(51 to 51) & --ME
ex6_spr_wd(52 to 52) & --FE0
ex6_spr_wd(54 to 54) & --DE
ex6_spr_wd(55 to 55) & --FE1
ex6_spr_wd(58 to 58) & --IS
ex6_spr_wd(59 to 59) ; --DS
mcsrr1_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
mcsrr1_q(50 to 50) & --CM
tidn(33 to 34) & --///
mcsrr1_q(51 to 51) & --GS
tidn(36 to 36) & --///
mcsrr1_q(52 to 52) & --UCLE
mcsrr1_q(53 to 53) & --SPV
tidn(39 to 45) & --///
mcsrr1_q(54 to 54) & --CE
tidn(47 to 47) & --///
mcsrr1_q(55 to 55) & --EE
mcsrr1_q(56 to 56) & --PR
mcsrr1_q(57 to 57) & --FP
mcsrr1_q(58 to 58) & --ME
mcsrr1_q(59 to 59) & --FE0
tidn(53 to 53) & --///
mcsrr1_q(60 to 60) & --DE
mcsrr1_q(61 to 61) & --FE1
tidn(56 to 57) & --///
mcsrr1_q(62 to 62) & --IS
mcsrr1_q(63 to 63) & --DS
tidn(60 to 63) ; --///
-- MSR
ex6_msr_di <= ex6_spr_wd(32 to 32) & --CM
ex6_spr_wd(35 to 35) & --GS
ex6_spr_wd(37 to 37) & --UCLE
ex6_spr_wd(38 to 38) & --SPV
ex6_spr_wd(46 to 46) & --CE
ex6_spr_wd(48 to 48) & --EE
ex6_spr_wd(49 to 49) & --PR
ex6_spr_wd(50 to 50) & --FP
ex6_spr_wd(51 to 51) & --ME
ex6_spr_wd(52 to 52) & --FE0
ex6_spr_wd(54 to 54) & --DE
ex6_spr_wd(55 to 55) & --FE1
ex6_spr_wd(58 to 58) & --IS
ex6_spr_wd(59 to 59) ; --DS
msr_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
msr_q(50 to 50) & --CM
tidn(33 to 34) & --///
msr_q(51 to 51) & --GS
tidn(36 to 36) & --///
msr_q(52 to 52) & --UCLE
msr_q(53 to 53) & --SPV
tidn(39 to 45) & --///
msr_q(54 to 54) & --CE
tidn(47 to 47) & --///
msr_q(55 to 55) & --EE
msr_q(56 to 56) & --PR
msr_q(57 to 57) & --FP
msr_q(58 to 58) & --ME
msr_q(59 to 59) & --FE0
tidn(53 to 53) & --///
msr_q(60 to 60) & --DE
msr_q(61 to 61) & --FE1
tidn(56 to 57) & --///
msr_q(62 to 62) & --IS
msr_q(63 to 63) & --DS
tidn(60 to 63) ; --///
-- MSRP
ex6_msrp_di <= ex6_spr_wd(37 to 37) & --UCLEP
ex6_spr_wd(54 to 54) ; --DEP
msrp_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
tidn(32 to 36) & --///
msrp_q(62 to 62) & --UCLEP
tidn(38 to 53) & --///
msrp_q(63 to 63) & --DEP
tidn(55 to 63) ; --///
-- SRR0
ex6_srr0_di <= ex6_spr_wd(62-(eff_ifar) to 61) ; --SRR0
srr0_do <= tidn(0 to 62-(eff_ifar)) &
srr0_q(64-(eff_ifar) to 63) & --SRR0
tidn(62 to 63) ; --///
-- SRR1
ex6_srr1_di <= ex6_spr_wd(32 to 32) & --CM
ex6_spr_wd(35 to 35) & --GS
ex6_spr_wd(37 to 37) & --UCLE
ex6_spr_wd(38 to 38) & --SPV
ex6_spr_wd(46 to 46) & --CE
ex6_spr_wd(48 to 48) & --EE
ex6_spr_wd(49 to 49) & --PR
ex6_spr_wd(50 to 50) & --FP
ex6_spr_wd(51 to 51) & --ME
ex6_spr_wd(52 to 52) & --FE0
ex6_spr_wd(54 to 54) & --DE
ex6_spr_wd(55 to 55) & --FE1
ex6_spr_wd(58 to 58) & --IS
ex6_spr_wd(59 to 59) ; --DS
srr1_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
srr1_q(50 to 50) & --CM
tidn(33 to 34) & --///
srr1_q(51 to 51) & --GS
tidn(36 to 36) & --///
srr1_q(52 to 52) & --UCLE
srr1_q(53 to 53) & --SPV
tidn(39 to 45) & --///
srr1_q(54 to 54) & --CE
tidn(47 to 47) & --///
srr1_q(55 to 55) & --EE
srr1_q(56 to 56) & --PR
srr1_q(57 to 57) & --FP
srr1_q(58 to 58) & --ME
srr1_q(59 to 59) & --FE0
tidn(53 to 53) & --///
srr1_q(60 to 60) & --DE
srr1_q(61 to 61) & --FE1
tidn(56 to 57) & --///
srr1_q(62 to 62) & --IS
srr1_q(63 to 63) & --DS
tidn(60 to 63) ; --///
-- TCR
ex6_tcr_di <= ex6_spr_wd(32 to 33) & --WP
ex6_spr_wd(34 to 35) & --WRC
ex6_spr_wd(36 to 36) & --WIE
ex6_spr_wd(37 to 37) & --DIE
ex6_spr_wd(38 to 39) & --FP
ex6_spr_wd(40 to 40) & --FIE
ex6_spr_wd(41 to 41) & --ARE
ex6_spr_wd(42 to 42) & --UDIE
ex6_spr_wd(51 to 51) ; --UD
tcr_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
tcr_q(52 to 53) & --WP
tcr_q(54 to 55) & --WRC
tcr_q(56 to 56) & --WIE
tcr_q(57 to 57) & --DIE
tcr_q(58 to 59) & --FP
tcr_q(60 to 60) & --FIE
tcr_q(61 to 61) & --ARE
tcr_q(62 to 62) & --UDIE
tidn(43 to 50) & --///
tcr_q(63 to 63) & --UD
tidn(52 to 63) ; --///
-- TSR
ex6_tsr_di <= ex6_spr_wd(32 to 32) & --ENW
ex6_spr_wd(33 to 33) & --WIS
ex6_spr_wd(36 to 36) & --DIS
ex6_spr_wd(37 to 37) & --FIS
ex6_spr_wd(38 to 38) ; --UDIS
tsr_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
tsr_q(59 to 59) & --ENW
tsr_q(60 to 60) & --WIS
tsr_wrs_q(0 to 1) & --WRS
tsr_q(61 to 61) & --DIS
tsr_q(62 to 62) & --FIS
tsr_q(63 to 63) & --UDIS
tidn(39 to 63) ; --///
-- UDEC
ex6_udec_di <= ex6_spr_wd(32 to 63) ; --UDEC
udec_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
udec_q(32 to 63) ; --UDEC
-- XUCR1
ex6_xucr1_di <= ex6_spr_wd(57 to 59) & --LL_TB_SEL
ex6_spr_wd(62 to 62) & --LL_SEL
ex6_spr_wd(63 to 63) ; --LL_EN
xucr1_do <= tidn(0 to 0) &
tidn(0 to 31) & --///
tidn(32 to 56) & --///
xucr1_q(59 to 61) & --LL_TB_SEL
llstate(0 to 1) & --LL_STATE
xucr1_q(62 to 62) & --LL_SEL
xucr1_q(63 to 63) ; --LL_EN
-- Unused Signals
mark_unused(acop_do(0 to 64-regsize));
mark_unused(ccr3_do(0 to 64-regsize));
mark_unused(csrr0_do(0 to 64-regsize));
mark_unused(csrr1_do(0 to 64-regsize));
mark_unused(dbcr0_do(0 to 64-regsize));
mark_unused(dbcr1_do(0 to 64-regsize));
mark_unused(dbsr_do(0 to 64-regsize));
mark_unused(dear_do(0 to 64-regsize));
mark_unused(dec_do(0 to 64-regsize));
mark_unused(decar_do(0 to 64-regsize));
mark_unused(epcr_do(0 to 64-regsize));
mark_unused(esr_do(0 to 64-regsize));
mark_unused(gdear_do(0 to 64-regsize));
mark_unused(gesr_do(0 to 64-regsize));
mark_unused(gpir_do(0 to 64-regsize));
mark_unused(gsrr0_do(0 to 64-regsize));
mark_unused(gsrr1_do(0 to 64-regsize));
mark_unused(hacop_do(0 to 64-regsize));
mark_unused(mcsr_do(0 to 64-regsize));
mark_unused(mcsrr0_do(0 to 64-regsize));
mark_unused(mcsrr1_do(0 to 64-regsize));
mark_unused(msr_do(0 to 64-regsize));
mark_unused(msrp_do(0 to 64-regsize));
mark_unused(srr0_do(0 to 64-regsize));
mark_unused(srr1_do(0 to 64-regsize));
mark_unused(tcr_do(0 to 64-regsize));
mark_unused(tsr_do(0 to 64-regsize));
mark_unused(udec_do(0 to 64-regsize));
mark_unused(xucr1_do(0 to 64-regsize));
mark_unused(ex2_ctr_re);
mark_unused(ex2_lr_re);
mark_unused(ex2_xer_re);
mark_unused(ex2_acop_we);
mark_unused(ex2_ctr_we);
mark_unused(ex2_dear_we);
mark_unused(ex2_dec_we);
mark_unused(ex2_esr_we);
mark_unused(ex2_gdear_we);
mark_unused(ex2_gesr_we);
mark_unused(ex2_gsrr0_we);
mark_unused(ex2_gsrr1_we);
mark_unused(ex2_lr_we);
mark_unused(ex2_srr0_we);
mark_unused(ex2_srr1_we);
mark_unused(ex2_udec_we);
mark_unused(ex2_xer_we);
mark_unused(ex2_rs2_q(48 to 49));
mark_unused(cspr_tspr_ex1_instr(6 to 10));
mark_unused(cspr_tspr_ex1_instr(31));
mark_unused(ex6_gdear_di);
mark_unused(exx_act_data(1));
mark_unused(exx_act_data(3 to 4));
mark_unused(mchk_int_q);
-- SPR Latch Instances
acop_latch_gen : if a2mode = 1 generate
acop_latch : tri_ser_rlmreg_p
generic map(width => acop_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => acop_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(acop_offset to acop_offset + acop_q'length-1),
scout => sov(acop_offset to acop_offset + acop_q'length-1),
din => acop_d,
dout => acop_q);
end generate;
acop_latch_tie : if a2mode = 0 generate
acop_q <= (others=>'0');
end generate;
ccr3_latch : tri_ser_rlmreg_p
generic map(width => ccr3_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => ccr3_act,
forcee => ccfg_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => ccfg_sl_thold_0_b,
sg => sg_0,
scin => siv_ccfg(ccr3_offset_ccfg to ccr3_offset_ccfg + ccr3_q'length-1),
scout => sov_ccfg(ccr3_offset_ccfg to ccr3_offset_ccfg + ccr3_q'length-1),
din => ccr3_d,
dout => ccr3_q);
csrr0_latch_gen : if a2mode = 1 generate
csrr0_latch : tri_ser_rlmreg_p
generic map(width => csrr0_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => csrr0_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(csrr0_offset to csrr0_offset + csrr0_q'length-1),
scout => sov(csrr0_offset to csrr0_offset + csrr0_q'length-1),
din => csrr0_d,
dout => csrr0_q);
end generate;
csrr0_latch_tie : if a2mode = 0 generate
csrr0_q <= (others=>'0');
end generate;
csrr1_latch_gen : if a2mode = 1 generate
csrr1_latch : tri_ser_rlmreg_p
generic map(width => csrr1_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => csrr1_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(csrr1_offset to csrr1_offset + csrr1_q'length-1),
scout => sov(csrr1_offset to csrr1_offset + csrr1_q'length-1),
din => csrr1_d,
dout => csrr1_q);
end generate;
csrr1_latch_tie : if a2mode = 0 generate
csrr1_q <= (others=>'0');
end generate;
dbcr0_latch : tri_ser_rlmreg_p
generic map(width => dbcr0_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => dbcr0_act,
forcee => dcfg_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => dcfg_sl_thold_0_b,
sg => sg_0,
scin => siv_dcfg(dbcr0_offset_dcfg to dbcr0_offset_dcfg + dbcr0_q'length-1),
scout => sov_dcfg(dbcr0_offset_dcfg to dbcr0_offset_dcfg + dbcr0_q'length-1),
din => dbcr0_d,
dout => dbcr0_q);
dbcr1_latch : tri_ser_rlmreg_p
generic map(width => dbcr1_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => dbcr1_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(dbcr1_offset to dbcr1_offset + dbcr1_q'length-1),
scout => sov(dbcr1_offset to dbcr1_offset + dbcr1_q'length-1),
din => dbcr1_d,
dout => dbcr1_q);
dbsr_latch : tri_ser_rlmreg_p
generic map(width => dbsr_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => dbsr_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(dbsr_offset to dbsr_offset + dbsr_q'length-1),
scout => sov(dbsr_offset to dbsr_offset + dbsr_q'length-1),
din => dbsr_d,
dout => dbsr_q);
dear_latch : tri_ser_rlmreg_p
generic map(width => dear_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => dear_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(dear_offset to dear_offset + dear_q'length-1),
scout => sov(dear_offset to dear_offset + dear_q'length-1),
din => dear_d,
dout => dear_q);
dec_latch : tri_ser_rlmreg_p
generic map(width => dec_q'length, init => 2147483647, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => dec_act,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(dec_offset to dec_offset + dec_q'length-1),
scout => sov(dec_offset to dec_offset + dec_q'length-1),
din => dec_d,
dout => dec_q);
decar_latch_gen : if a2mode = 1 generate
decar_latch : tri_ser_rlmreg_p
generic map(width => decar_q'length, init => 2147483647, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => decar_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(decar_offset to decar_offset + decar_q'length-1),
scout => sov(decar_offset to decar_offset + decar_q'length-1),
din => decar_d,
dout => decar_q);
end generate;
decar_latch_tie : if a2mode = 0 generate
decar_q <= (others=>'0');
end generate;
epcr_latch_gen : if hvmode = 1 generate
epcr_latch : tri_ser_rlmreg_p
generic map(width => epcr_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => epcr_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(epcr_offset to epcr_offset + epcr_q'length-1),
scout => sov(epcr_offset to epcr_offset + epcr_q'length-1),
din => epcr_d,
dout => epcr_q);
end generate;
epcr_latch_tie : if hvmode = 0 generate
epcr_q <= (others=>'0');
end generate;
esr_latch : tri_ser_rlmreg_p
generic map(width => esr_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => esr_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(esr_offset to esr_offset + esr_q'length-1),
scout => sov(esr_offset to esr_offset + esr_q'length-1),
din => esr_d,
dout => esr_q);
gdear_latch_gen : if hvmode = 1 generate
gdear_latch : tri_ser_rlmreg_p
generic map(width => gdear_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => gdear_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(gdear_offset to gdear_offset + gdear_q'length-1),
scout => sov(gdear_offset to gdear_offset + gdear_q'length-1),
din => gdear_d,
dout => gdear_q);
end generate;
gdear_latch_tie : if hvmode = 0 generate
gdear_q <= (others=>'0');
end generate;
gesr_latch_gen : if hvmode = 1 generate
gesr_latch : tri_ser_rlmreg_p
generic map(width => gesr_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => gesr_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(gesr_offset to gesr_offset + gesr_q'length-1),
scout => sov(gesr_offset to gesr_offset + gesr_q'length-1),
din => gesr_d,
dout => gesr_q);
end generate;
gesr_latch_tie : if hvmode = 0 generate
gesr_q <= (others=>'0');
end generate;
gpir_latch_gen : if hvmode = 1 generate
gpir_latch : tri_ser_rlmreg_p
generic map(width => gpir_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => gpir_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(gpir_offset to gpir_offset + gpir_q'length-1),
scout => sov(gpir_offset to gpir_offset + gpir_q'length-1),
din => gpir_d,
dout => gpir_q);
end generate;
gpir_latch_tie : if hvmode = 0 generate
gpir_q <= (others=>'0');
end generate;
gsrr0_latch_gen : if hvmode = 1 generate
gsrr0_latch : tri_ser_rlmreg_p
generic map(width => gsrr0_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => gsrr0_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(gsrr0_offset to gsrr0_offset + gsrr0_q'length-1),
scout => sov(gsrr0_offset to gsrr0_offset + gsrr0_q'length-1),
din => gsrr0_d,
dout => gsrr0_q);
end generate;
gsrr0_latch_tie : if hvmode = 0 generate
gsrr0_q <= (others=>'0');
end generate;
gsrr1_latch_gen : if hvmode = 1 generate
gsrr1_latch : tri_ser_rlmreg_p
generic map(width => gsrr1_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => gsrr1_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(gsrr1_offset to gsrr1_offset + gsrr1_q'length-1),
scout => sov(gsrr1_offset to gsrr1_offset + gsrr1_q'length-1),
din => gsrr1_d,
dout => gsrr1_q);
end generate;
gsrr1_latch_tie : if hvmode = 0 generate
gsrr1_q <= (others=>'0');
end generate;
hacop_latch_gen : if hvmode = 1 generate
hacop_latch : tri_ser_rlmreg_p
generic map(width => hacop_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => hacop_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(hacop_offset to hacop_offset + hacop_q'length-1),
scout => sov(hacop_offset to hacop_offset + hacop_q'length-1),
din => hacop_d,
dout => hacop_q);
end generate;
hacop_latch_tie : if hvmode = 0 generate
hacop_q <= (others=>'0');
end generate;
mcsr_latch_gen : if a2mode = 1 generate
mcsr_latch : tri_ser_rlmreg_p
generic map(width => mcsr_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => mcsr_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(mcsr_offset to mcsr_offset + mcsr_q'length-1),
scout => sov(mcsr_offset to mcsr_offset + mcsr_q'length-1),
din => mcsr_d,
dout => mcsr_q);
end generate;
mcsr_latch_tie : if a2mode = 0 generate
mcsr_q <= (others=>'0');
end generate;
mcsrr0_latch_gen : if a2mode = 1 generate
mcsrr0_latch : tri_ser_rlmreg_p
generic map(width => mcsrr0_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => mcsrr0_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(mcsrr0_offset to mcsrr0_offset + mcsrr0_q'length-1),
scout => sov(mcsrr0_offset to mcsrr0_offset + mcsrr0_q'length-1),
din => mcsrr0_d,
dout => mcsrr0_q);
end generate;
mcsrr0_latch_tie : if a2mode = 0 generate
mcsrr0_q <= (others=>'0');
end generate;
mcsrr1_latch_gen : if a2mode = 1 generate
mcsrr1_latch : tri_ser_rlmreg_p
generic map(width => mcsrr1_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => mcsrr1_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(mcsrr1_offset to mcsrr1_offset + mcsrr1_q'length-1),
scout => sov(mcsrr1_offset to mcsrr1_offset + mcsrr1_q'length-1),
din => mcsrr1_d,
dout => mcsrr1_q);
end generate;
mcsrr1_latch_tie : if a2mode = 0 generate
mcsrr1_q <= (others=>'0');
end generate;
msr_latch : tri_ser_rlmreg_p
generic map(width => msr_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => msr_act,
forcee => ccfg_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => ccfg_sl_thold_0_b,
sg => sg_0,
scin => siv_ccfg(msr_offset_ccfg to msr_offset_ccfg + msr_q'length-1),
scout => sov_ccfg(msr_offset_ccfg to msr_offset_ccfg + msr_q'length-1),
din => msr_d,
dout => msr_q);
msrp_latch_gen : if hvmode = 1 generate
msrp_latch : tri_ser_rlmreg_p
generic map(width => msrp_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => msrp_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(msrp_offset to msrp_offset + msrp_q'length-1),
scout => sov(msrp_offset to msrp_offset + msrp_q'length-1),
din => msrp_d,
dout => msrp_q);
end generate;
msrp_latch_tie : if hvmode = 0 generate
msrp_q <= (others=>'0');
end generate;
srr0_latch : tri_ser_rlmreg_p
generic map(width => srr0_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => srr0_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(srr0_offset to srr0_offset + srr0_q'length-1),
scout => sov(srr0_offset to srr0_offset + srr0_q'length-1),
din => srr0_d,
dout => srr0_q);
srr1_latch : tri_ser_rlmreg_p
generic map(width => srr1_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => srr1_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(srr1_offset to srr1_offset + srr1_q'length-1),
scout => sov(srr1_offset to srr1_offset + srr1_q'length-1),
din => srr1_d,
dout => srr1_q);
tcr_latch_gen : if a2mode = 1 generate
tcr_latch : tri_ser_rlmreg_p
generic map(width => tcr_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => tcr_act,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(tcr_offset to tcr_offset + tcr_q'length-1),
scout => sov(tcr_offset to tcr_offset + tcr_q'length-1),
din => tcr_d,
dout => tcr_q);
end generate;
tcr_latch_tie : if a2mode = 0 generate
tcr_q <= (others=>'0');
end generate;
tsr_latch_gen : if a2mode = 1 generate
tsr_latch : tri_ser_rlmreg_p
generic map(width => tsr_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => tsr_act,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(tsr_offset to tsr_offset + tsr_q'length-1),
scout => sov(tsr_offset to tsr_offset + tsr_q'length-1),
din => tsr_d,
dout => tsr_q);
end generate;
tsr_latch_tie : if a2mode = 0 generate
tsr_q <= (others=>'0');
end generate;
udec_latch_gen : if a2mode = 1 generate
udec_latch : tri_ser_rlmreg_p
generic map(width => udec_q'length, init => 2147483647, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => udec_act,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(udec_offset to udec_offset + udec_q'length-1),
scout => sov(udec_offset to udec_offset + udec_q'length-1),
din => udec_d,
dout => udec_q);
end generate;
udec_latch_tie : if a2mode = 0 generate
udec_q <= (others=>'0');
end generate;
xucr1_latch : tri_ser_rlmreg_p
generic map(width => xucr1_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map(nclk => nclk, vd => vdd, gd => gnd,
act => xucr1_act,
forcee => ccfg_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DWR),
mpw1_b => mpw1_dc_b(DWR), mpw2_b => mpw2_dc_b,
thold_b => ccfg_sl_thold_0_b,
sg => sg_0,
scin => siv_ccfg(xucr1_offset_ccfg to xucr1_offset_ccfg + xucr1_q'length-1),
scout => sov_ccfg(xucr1_offset_ccfg to xucr1_offset_ccfg + xucr1_q'length-1),
din => xucr1_d,
dout => xucr1_q);
-- Latch Instances
exx_act_latch : tri_rlmreg_p
generic map (width => exx_act_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(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(exx_act_offset to exx_act_offset + exx_act_q'length-1),
scout => sov(exx_act_offset to exx_act_offset + exx_act_q'length-1),
din => exx_act_d,
dout => exx_act_q);
ex2_is_mfspr_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(1) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX2),
mpw1_b => mpw1_dc_b(DEX2), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => ex1_is_mfspr,
dout(0) => ex2_is_mfspr_q);
ex2_is_mtspr_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(1) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX2),
mpw1_b => mpw1_dc_b(DEX2), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => ex1_is_mtspr,
dout(0) => ex2_is_mtspr_q);
ex2_is_mfmsr_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(1) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX2),
mpw1_b => mpw1_dc_b(DEX2), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => ex1_is_mfmsr,
dout(0) => ex2_is_mfmsr_q);
ex2_instr_latch : tri_regk
generic map (width => ex2_instr_q'length, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(1) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX2),
mpw1_b => mpw1_dc_b(DEX2), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din => ex2_instr_d,
dout => ex2_instr_q);
ex3_is_mtxer_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 0)
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(DEX3),
mpw1_b => mpw1_dc_b(DEX3), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(ex3_is_mtxer_offset),
scout => sov(ex3_is_mtxer_offset),
din => ex3_is_mtxer_d,
dout => ex3_is_mtxer_q);
ex3_is_mfxer_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 0)
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(DEX3),
mpw1_b => mpw1_dc_b(DEX3), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(ex3_is_mfxer_offset),
scout => sov(ex3_is_mfxer_offset),
din => ex3_is_mfxer_d,
dout => ex3_is_mfxer_q);
ex2_rfi_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(1) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX2),
mpw1_b => mpw1_dc_b(DEX2), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => ex2_rfi_d,
dout(0) => ex2_rfi_q);
ex2_rfgi_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(1) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX2),
mpw1_b => mpw1_dc_b(DEX2), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => ex2_rfgi_d,
dout(0) => ex2_rfgi_q);
ex2_rfci_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(1) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX2),
mpw1_b => mpw1_dc_b(DEX2), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => ex1_is_rfci,
dout(0) => ex2_rfci_q);
ex2_rfmci_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(1) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX2),
mpw1_b => mpw1_dc_b(DEX2), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => ex1_is_rfmci,
dout(0) => ex2_rfmci_q);
ex3_rfi_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 0)
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(DEX3),
mpw1_b => mpw1_dc_b(DEX3), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(ex3_rfi_offset),
scout => sov(ex3_rfi_offset),
din => ex2_rfi_q ,
dout => ex3_rfi_q);
ex3_rfgi_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 0)
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(DEX3),
mpw1_b => mpw1_dc_b(DEX3), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(ex3_rfgi_offset),
scout => sov(ex3_rfgi_offset),
din => ex2_rfgi_q ,
dout => ex3_rfgi_q);
ex3_rfci_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 0)
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(DEX3),
mpw1_b => mpw1_dc_b(DEX3), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(ex3_rfci_offset),
scout => sov(ex3_rfci_offset),
din => ex2_rfci_q ,
dout => ex3_rfci_q);
ex3_rfmci_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 0)
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(DEX3),
mpw1_b => mpw1_dc_b(DEX3), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(ex3_rfmci_offset),
scout => sov(ex3_rfmci_offset),
din => ex2_rfmci_q ,
dout => ex3_rfmci_q);
ex4_is_mfxer_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(3) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX4),
mpw1_b => mpw1_dc_b(DEX4), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => ex3_is_mfxer_q ,
dout(0) => ex4_is_mfxer_q);
ex4_is_mtxer_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(3) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX4),
mpw1_b => mpw1_dc_b(DEX4), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => ex3_is_mtxer_q ,
dout(0) => ex4_is_mtxer_q);
ex4_rfi_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(3) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX4),
mpw1_b => mpw1_dc_b(DEX4), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => ex3_rfi_q ,
dout(0) => ex4_rfi_q);
ex4_rfgi_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(3) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX4),
mpw1_b => mpw1_dc_b(DEX4), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => ex3_rfgi_q ,
dout(0) => ex4_rfgi_q);
ex4_rfci_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(3) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX4),
mpw1_b => mpw1_dc_b(DEX4), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => ex3_rfci_q ,
dout(0) => ex4_rfci_q);
ex4_rfmci_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(3) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX4),
mpw1_b => mpw1_dc_b(DEX4), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => ex3_rfmci_q ,
dout(0) => ex4_rfmci_q);
ex5_val_latch : tri_rlmlatch_p
generic map (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(DEX5),
mpw1_b => mpw1_dc_b(DEX5), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(ex5_val_offset),
scout => sov(ex5_val_offset),
din => ex4_val,
dout => ex5_val_q);
ex5_rfi_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 0)
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(DEX5),
mpw1_b => mpw1_dc_b(DEX5), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(ex5_rfi_offset),
scout => sov(ex5_rfi_offset),
din => ex4_rfi_q ,
dout => ex5_rfi_q);
ex5_rfgi_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 0)
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(DEX5),
mpw1_b => mpw1_dc_b(DEX5), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(ex5_rfgi_offset),
scout => sov(ex5_rfgi_offset),
din => ex4_rfgi_q ,
dout => ex5_rfgi_q);
ex5_rfci_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 0)
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(DEX5),
mpw1_b => mpw1_dc_b(DEX5), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(ex5_rfci_offset),
scout => sov(ex5_rfci_offset),
din => ex4_rfci_q ,
dout => ex5_rfci_q);
ex5_rfmci_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 0)
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(DEX5),
mpw1_b => mpw1_dc_b(DEX5), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(ex5_rfmci_offset),
scout => sov(ex5_rfmci_offset),
din => ex4_rfmci_q ,
dout => ex5_rfmci_q);
ex6_val_latch : tri_rlmlatch_p
generic map (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(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(ex6_val_offset),
scout => sov(ex6_val_offset),
din => ex5_val,
dout => ex6_val_q);
ex6_rfi_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(5) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => ex5_rfi_q ,
dout(0) => ex6_rfi_q);
ex6_rfgi_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(5) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => ex5_rfgi_q ,
dout(0) => ex6_rfgi_q);
ex6_rfci_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(5) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => ex5_rfci_q ,
dout(0) => ex6_rfci_q);
ex6_rfmci_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(5) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => ex5_rfmci_q ,
dout(0) => ex6_rfmci_q);
ex6_wrtee_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(5) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => cspr_tspr_ex5_is_wrtee ,
dout(0) => ex6_wrtee_q);
ex6_wrteei_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(5) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => cspr_tspr_ex5_is_wrteei ,
dout(0) => ex6_wrteei_q);
ex6_is_mtmsr_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(5) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => cspr_tspr_ex5_is_mtmsr ,
dout(0) => ex6_is_mtmsr_q);
ex6_is_mtspr_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(5) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => cspr_tspr_ex5_is_mtspr ,
dout(0) => ex6_is_mtspr_q);
ex6_instr_latch : tri_regk
generic map (width => ex6_instr_q'length, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(5) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din => cspr_tspr_ex5_instr ,
dout => ex6_instr_q);
ex6_int_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => ex5_int_act ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => cpl_spr_ex5_int ,
dout(0) => ex6_int_q);
ex6_gint_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => ex5_int_act ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => cpl_spr_ex5_gint ,
dout(0) => ex6_gint_q);
ex6_cint_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => ex5_int_act ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => cpl_spr_ex5_cint ,
dout(0) => ex6_cint_q);
ex6_mcint_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => ex5_int_act ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => cpl_spr_ex5_mcint ,
dout(0) => ex6_mcint_q);
ex6_nia_latch : tri_regk
generic map (width => ex6_nia_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => ex5_int_act ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din => cpl_spr_ex5_nia ,
dout => ex6_nia_q);
ex6_esr_latch : tri_regk
generic map (width => ex6_esr_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => cpl_spr_ex5_esr_update ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din => cpl_spr_ex5_esr ,
dout => ex6_esr_q);
ex6_mcsr_latch : tri_regk
generic map (width => ex6_mcsr_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => ex5_int_act ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din => cpl_spr_ex5_mcsr ,
dout => ex6_mcsr_q);
ex6_dbsr_latch : tri_regk
generic map (width => ex6_dbsr_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => cpl_spr_ex5_dbsr_update ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din => cpl_spr_ex5_dbsr ,
dout => ex6_dbsr_q);
ex6_dear_save_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => cpl_spr_ex5_dear_save ,
dout(0) => ex6_dear_save_q);
ex6_dear_update_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => cpl_spr_ex5_dear_update ,
dout(0) => ex6_dear_update_q);
ex6_dear_update_saved_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => cpl_spr_ex5_dear_update_saved,
dout(0) => ex6_dear_update_saved_q);
ex6_dbsr_update_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => cpl_spr_ex5_dbsr_update ,
dout(0) => ex6_dbsr_update_q);
ex6_esr_update_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => cpl_spr_ex5_esr_update ,
dout(0) => ex6_esr_update_q);
ex6_srr0_dec_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => cpl_spr_ex5_srr0_dec ,
dout(0) => ex6_srr0_dec_q);
ex6_force_gsrr_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => ex5_int_act ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => cpl_spr_ex5_force_gsrr ,
dout(0) => ex6_force_gsrr_q);
ex6_dbsr_ide_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => ex5_int_act,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => cpl_spr_ex5_dbsr_ide,
dout(0) => ex6_dbsr_ide_q);
ex6_spr_wd_latch : tri_regk
generic map (width => ex6_spr_wd_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act_data(5),
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX6),
mpw1_b => mpw1_dc_b(DEX6), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din => ex5_spr_wd ,
dout => ex6_spr_wd_q);
fit_tb_tap_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(fit_tb_tap_offset),
scout => sov(fit_tb_tap_offset),
din => fit_tb_tap_d,
dout => fit_tb_tap_q);
wdog_tb_tap_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(wdog_tb_tap_offset),
scout => sov(wdog_tb_tap_offset),
din => wdog_tb_tap_d,
dout => wdog_tb_tap_q);
hang_pulse_latch : tri_rlmreg_p
generic map (width => hang_pulse_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(hang_pulse_offset to hang_pulse_offset + hang_pulse_q'length-1),
scout => sov(hang_pulse_offset to hang_pulse_offset + hang_pulse_q'length-1),
din => hang_pulse_d,
dout => hang_pulse_q);
lltap_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(lltap_offset),
scout => sov(lltap_offset),
din => lltap_d,
dout => lltap_q);
llcnt_latch : tri_rlmreg_p
generic map (width => llcnt_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(llcnt_offset to llcnt_offset + llcnt_q'length-1),
scout => sov(llcnt_offset to llcnt_offset + llcnt_q'length-1),
din => llcnt_d,
dout => llcnt_q);
msrovride_pr_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(msrovride_pr_offset),
scout => sov(msrovride_pr_offset),
din => pc_xu_msrovride_pr ,
dout => msrovride_pr_q);
msrovride_gs_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(msrovride_gs_offset),
scout => sov(msrovride_gs_offset),
din => pc_xu_msrovride_gs ,
dout => msrovride_gs_q);
msrovride_de_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(msrovride_de_offset),
scout => sov(msrovride_de_offset),
din => pc_xu_msrovride_de,
dout => msrovride_de_q);
an_ac_ext_interrupt_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(an_ac_ext_interrupt_offset),
scout => sov(an_ac_ext_interrupt_offset),
din => an_ac_ext_interrupt ,
dout => an_ac_ext_interrupt_q);
an_ac_crit_interrupt_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(an_ac_crit_interrupt_offset),
scout => sov(an_ac_crit_interrupt_offset),
din => an_ac_crit_interrupt ,
dout => an_ac_crit_interrupt_q);
an_ac_perf_interrupt_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(an_ac_perf_interrupt_offset),
scout => sov(an_ac_perf_interrupt_offset),
din => an_ac_perf_interrupt ,
dout => an_ac_perf_interrupt_q);
dear_tmp_latch : tri_rlmreg_p
generic map (width => dear_tmp_q'length, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => ex6_dear_save_q,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(dear_tmp_offset to dear_tmp_offset + dear_tmp_q'length-1),
scout => sov(dear_tmp_offset to dear_tmp_offset + dear_tmp_q'length-1),
din => dear_tmp_d,
dout => dear_tmp_q);
mux_msr_gs_latch : tri_rlmreg_p
generic map (width => mux_msr_gs_q'length, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(mux_msr_gs_offset to mux_msr_gs_offset + mux_msr_gs_q'length-1),
scout => sov(mux_msr_gs_offset to mux_msr_gs_offset + mux_msr_gs_q'length-1),
din => mux_msr_gs_d,
dout => mux_msr_gs_q);
mux_msr_pr_latch : tri_rlmreg_p
generic map (width => mux_msr_pr_q'length, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(mux_msr_pr_offset to mux_msr_pr_offset + mux_msr_pr_q'length-1),
scout => sov(mux_msr_pr_offset to mux_msr_pr_offset + mux_msr_pr_q'length-1),
din => mux_msr_pr_d,
dout => mux_msr_pr_q);
ex3_tspr_rt_latch : tri_rlmreg_p
generic map (width => ex3_tspr_rt_q'length, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act_data(2),
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX3),
mpw1_b => mpw1_dc_b(DEX3), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(ex3_tspr_rt_offset to ex3_tspr_rt_offset + ex3_tspr_rt_q'length-1),
scout => sov(ex3_tspr_rt_offset to ex3_tspr_rt_offset + ex3_tspr_rt_q'length-1),
din => ex3_tspr_rt_d,
dout => ex3_tspr_rt_q);
err_llbust_attempt_latch : tri_rlmlatch_p
generic map (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(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(err_llbust_attempt_offset),
scout => sov(err_llbust_attempt_offset),
din => err_llbust_attempt_d,
dout => err_llbust_attempt_q);
err_llbust_failed_latch : tri_rlmlatch_p
generic map (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(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(err_llbust_failed_offset),
scout => sov(err_llbust_failed_offset),
din => err_llbust_failed_d,
dout => err_llbust_failed_q);
inj_llbust_attempt_latch : tri_rlmlatch_p
generic map (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(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(inj_llbust_attempt_offset),
scout => sov(inj_llbust_attempt_offset),
din => pc_xu_inj_llbust_attempt ,
dout => inj_llbust_attempt_q);
inj_llbust_failed_latch : tri_rlmlatch_p
generic map (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(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(inj_llbust_failed_offset),
scout => sov(inj_llbust_failed_offset),
din => pc_xu_inj_llbust_failed ,
dout => inj_llbust_failed_q);
ex2_rs2_latch : tri_regk
generic map (width => ex2_rs2_q'length, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(1) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX2),
mpw1_b => mpw1_dc_b(DEX2), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din => fxu_spr_ex1_rs2 ,
dout => ex2_rs2_q);
ex3_ct_latch : tri_rlmreg_p
generic map (width => ex3_ct_q'length, init => 0, expand_type => expand_type, needs_sreset => 0)
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(DEX3),
mpw1_b => mpw1_dc_b(DEX3), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(ex3_ct_offset to ex3_ct_offset + ex3_ct_q'length-1),
scout => sov(ex3_ct_offset to ex3_ct_offset + ex3_ct_q'length-1),
din => ex3_ct_d,
dout => ex3_ct_q);
an_ac_external_mchk_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(an_ac_external_mchk_offset),
scout => sov(an_ac_external_mchk_offset),
din => an_ac_external_mchk ,
dout => an_ac_external_mchk_q);
mchk_int_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(mchk_int_offset),
scout => sov(mchk_int_offset),
din => mchk_int,
dout => mchk_int_q);
mchk_interrupt_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(mchk_interrupt_offset),
scout => sov(mchk_interrupt_offset),
din => mchk_interrupt,
dout => mchk_interrupt_q);
crit_interrupt_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(crit_interrupt_offset),
scout => sov(crit_interrupt_offset),
din => crit_interrupt,
dout => crit_interrupt_q);
wdog_interrupt_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(wdog_interrupt_offset),
scout => sov(wdog_interrupt_offset),
din => wdog_interrupt,
dout => wdog_interrupt_q);
dec_interrupt_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(dec_interrupt_offset),
scout => sov(dec_interrupt_offset),
din => dec_interrupt,
dout => dec_interrupt_q);
udec_interrupt_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(udec_interrupt_offset),
scout => sov(udec_interrupt_offset),
din => udec_interrupt,
dout => udec_interrupt_q);
perf_interrupt_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(perf_interrupt_offset),
scout => sov(perf_interrupt_offset),
din => perf_interrupt,
dout => perf_interrupt_q);
fit_interrupt_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(fit_interrupt_offset),
scout => sov(fit_interrupt_offset),
din => fit_interrupt,
dout => fit_interrupt_q);
ext_interrupt_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(ext_interrupt_offset),
scout => sov(ext_interrupt_offset),
din => ext_interrupt,
dout => ext_interrupt_q);
single_instr_mode_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(single_instr_mode_offset),
scout => sov(single_instr_mode_offset),
din => single_instr_mode_d,
dout => single_instr_mode_q);
single_instr_mode_2_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(single_instr_mode_2_offset),
scout => sov(single_instr_mode_2_offset),
din => single_instr_mode_q ,
dout => single_instr_mode_2_q);
machine_check_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(machine_check_offset),
scout => sov(machine_check_offset),
din => machine_check_d,
dout => machine_check_q);
raise_iss_pri_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(raise_iss_pri_offset),
scout => sov(raise_iss_pri_offset),
din => raise_iss_pri_d,
dout => raise_iss_pri_q);
raise_iss_pri_2_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(raise_iss_pri_2_offset),
scout => sov(raise_iss_pri_2_offset),
din => raise_iss_pri_q ,
dout => raise_iss_pri_2_q);
epsc_egs_latch : tri_rlmlatch_p
generic map (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(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(epsc_egs_offset),
scout => sov(epsc_egs_offset),
din => lsu_xu_spr_epsc_egs ,
dout => epsc_egs_q);
epsc_epr_latch : tri_rlmlatch_p
generic map (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(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(epsc_epr_offset),
scout => sov(epsc_epr_offset),
din => lsu_xu_spr_epsc_epr ,
dout => epsc_epr_q);
ex2_epid_instr_latch : tri_regk
generic map (width => 1, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => exx_act(1) ,
forcee => func_nsl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DEX2),
mpw1_b => mpw1_dc_b(DEX2), mpw2_b => mpw2_dc_b,
thold_b => func_nsl_thold_0_b,
din(0) => dec_spr_ex1_epid_instr ,
dout(0) => ex2_epid_instr_q);
pc_xu_inj_wdt_reset_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(pc_xu_inj_wdt_reset_offset),
scout => sov(pc_xu_inj_wdt_reset_offset),
din => pc_xu_inj_wdt_reset ,
dout => pc_xu_inj_wdt_reset_q);
err_wdt_reset_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(err_wdt_reset_offset),
scout => sov(err_wdt_reset_offset),
din => err_wdt_reset_d,
dout => err_wdt_reset_q);
ex3_tid_rpwr_latch : tri_rlmreg_p
generic map (width => ex3_tid_rpwr_q'length, init => 0, expand_type => expand_type, needs_sreset => 0)
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(DEX3),
mpw1_b => mpw1_dc_b(DEX3), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(ex3_tid_rpwr_offset to ex3_tid_rpwr_offset + ex3_tid_rpwr_q'length-1),
scout => sov(ex3_tid_rpwr_offset to ex3_tid_rpwr_offset + ex3_tid_rpwr_q'length-1),
din => ex3_tid_rpwr_d,
dout => ex3_tid_rpwr_q);
ram_mode_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(ram_mode_offset),
scout => sov(ram_mode_offset),
din => cspr_tspr_ram_mode ,
dout => ram_mode_q);
timebase_taps_latch : tri_rlmreg_p
generic map (width => timebase_taps_q'length, init => 0, expand_type => expand_type, needs_sreset => 0)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_slp_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_slp_sl_thold_0_b,
sg => sg_0,
scin => siv(timebase_taps_offset to timebase_taps_offset + timebase_taps_q'length-1),
scout => sov(timebase_taps_offset to timebase_taps_offset + timebase_taps_q'length-1),
din => cspr_tspr_timebase_taps ,
dout => timebase_taps_q);
dbsr_mrr_latch : tri_rlmreg_p
generic map (width => dbsr_mrr_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => dbsr_mrr_act ,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(dbsr_mrr_offset to dbsr_mrr_offset + dbsr_mrr_q'length-1),
scout => sov(dbsr_mrr_offset to dbsr_mrr_offset + dbsr_mrr_q'length-1),
din => dbsr_mrr_d,
dout => dbsr_mrr_q);
tsr_wrs_latch : tri_rlmreg_p
generic map (width => tsr_wrs_q'length, init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tsr_wrs_act ,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(tsr_wrs_offset to tsr_wrs_offset + tsr_wrs_q'length-1),
scout => sov(tsr_wrs_offset to tsr_wrs_offset + tsr_wrs_q'length-1),
din => tsr_wrs_d,
dout => tsr_wrs_q);
iac1_en_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(iac1_en_offset),
scout => sov(iac1_en_offset),
din => iac1_en_d,
dout => iac1_en_q);
iac2_en_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(iac2_en_offset),
scout => sov(iac2_en_offset),
din => iac2_en_d,
dout => iac2_en_q);
iac3_en_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(iac3_en_offset),
scout => sov(iac3_en_offset),
din => iac3_en_d,
dout => iac3_en_q);
iac4_en_latch : tri_rlmlatch_p
generic map (init => 0, expand_type => expand_type, needs_sreset => 1)
port map (nclk => nclk, vd => vdd, gd => gnd,
act => tiup ,
forcee => func_sl_force,
d_mode => d_mode_dc, delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX), mpw2_b => mpw2_dc_b,
thold_b => func_sl_thold_0_b,
sg => sg_0,
scin => siv(iac4_en_offset),
scout => sov(iac4_en_offset),
din => iac4_en_d,
dout => iac4_en_q);
spare_0_lcb: entity tri.tri_lcbnd(tri_lcbnd)
port map(vd => vdd,
gd => gnd,
act => tidn(0),
nclk => nclk,
forcee => func_sl_force,
thold_b => func_sl_thold_0_b,
delay_lclkr => delay_lclkr_dc(DX),
mpw1_b => mpw1_dc_b(DX),
mpw2_b => mpw2_dc_b,
sg => sg_0,
lclk => spare_0_lclk,
d1clk => spare_0_d1clk,
d2clk => spare_0_d2clk);
spare_0_latch : entity tri.tri_inv_nlats(tri_inv_nlats)
generic map (width => spare_0_q'length, expand_type => expand_type, btr => "NLI0001_X2_A12TH", init=>(spare_0_q'range=>'0'))
port map (vd => vdd, gd => gnd,
LCLK => spare_0_lclk,
D1CLK => spare_0_d1clk,
D2CLK => spare_0_d2clk,
SCANIN => siv(spare_0_offset to spare_0_offset + spare_0_q'length-1),
SCANOUT => sov(spare_0_offset to spare_0_offset + spare_0_q'length-1),
D => spare_0_d,
QB => spare_0_q);
spare_0_d <= not spare_0_q;
mark_unused(spare_0_q);
siv(0 to scan_right-1) <= sov(1 to scan_right-1) & scan_in;
scan_out <= sov(0);
ccfg_l : if sov_ccfg'length > 1 generate
siv_ccfg(0 to scan_right_ccfg-1) <= sov_ccfg(1 to scan_right_ccfg-1) & ccfg_scan_in;
ccfg_scan_out <= sov_ccfg(0);
end generate;
ccfg_s : if sov_ccfg'length <= 1 generate
ccfg_scan_out <= ccfg_scan_in;
sov_ccfg <= (others=>'0');
siv_ccfg <= (others=>'0');
end generate;
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_spr_tspr;