forked from cores/a2i
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.
804 lines
39 KiB
VHDL
804 lines
39 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.
|
|
|
|
library ieee;
|
|
use ieee.std_logic_1164.all;
|
|
library ibm,clib;
|
|
use ibm.std_ulogic_function_support.all;
|
|
library support;
|
|
use support.power_logic_pkg.all;
|
|
library tri;
|
|
use tri.tri_latches_pkg.all;
|
|
|
|
entity pcq_dbg is
|
|
generic(expand_type : integer := 2
|
|
);
|
|
port(
|
|
vdd : inout power_logic;
|
|
gnd : inout power_logic;
|
|
nclk : in clk_logic;
|
|
scan_dis_dc_b : in std_ulogic;
|
|
lcb_clkoff_dc_b : in std_ulogic;
|
|
lcb_mpw1_dc_b : in std_ulogic;
|
|
lcb_mpw2_dc_b : in std_ulogic;
|
|
lcb_delay_lclkr_dc : in std_ulogic;
|
|
lcb_act_dis_dc : in std_ulogic;
|
|
pc_pc_func_slp_sl_thold_0 : in std_ulogic;
|
|
pc_pc_sg_0 : in std_ulogic;
|
|
func_scan_in : in std_ulogic;
|
|
func_scan_out : out std_ulogic;
|
|
debug_bus_out : out std_ulogic_vector(0 to 87);
|
|
trace_triggers_out : out std_ulogic_vector(0 to 11);
|
|
debug_bus_in : in std_ulogic_vector(0 to 87);
|
|
trace_triggers_in : in std_ulogic_vector(0 to 11);
|
|
rg_db_trace_bus_enable : in std_ulogic;
|
|
rg_db_debug_mux_ctrls : in std_ulogic_vector(0 to 15);
|
|
ck_db_dbg_clks_ctrls : in std_ulogic_vector(0 to 13);
|
|
rg_db_dbg_scom_rdata : in std_ulogic_vector(0 to 63);
|
|
rg_db_dbg_scom_wdata : in std_ulogic_vector(0 to 63);
|
|
rg_db_dbg_scom_decaddr : in std_ulogic_vector(0 to 63);
|
|
rg_db_dbg_scom_misc : in std_ulogic_vector(0 to 8);
|
|
rg_db_dbg_ram_thrctl : in std_ulogic_vector(0 to 20);
|
|
rg_db_dbg_fir0_err : in std_ulogic_vector(0 to 31);
|
|
rg_db_dbg_fir1_err : in std_ulogic_vector(0 to 30);
|
|
rg_db_dbg_fir2_err : in std_ulogic_vector(0 to 21);
|
|
rg_db_dbg_fir_misc : in std_ulogic_vector(0 to 35);
|
|
ct_db_dbg_ctrls : in std_ulogic_vector(0 to 36);
|
|
rg_db_dbg_spr : in std_ulogic_vector(0 to 46);
|
|
ac_an_event_bus : out std_ulogic_vector(0 to 7);
|
|
ac_an_fu_bypass_events : out std_ulogic_vector(0 to 7);
|
|
ac_an_iu_bypass_events : out std_ulogic_vector(0 to 7);
|
|
ac_an_mm_bypass_events : out std_ulogic_vector(0 to 7);
|
|
ac_an_lsu_bypass_events : out std_ulogic_vector(0 to 7);
|
|
rg_db_event_bus_enable : in std_ulogic;
|
|
rg_db_event_mux_ctrls : in std_ulogic_vector(0 to 23);
|
|
fu_pc_event_data : in std_ulogic_vector(0 to 7);
|
|
iu_pc_event_data : in std_ulogic_vector(0 to 7);
|
|
mm_pc_event_data : in std_ulogic_vector(0 to 7);
|
|
xu_pc_event_data : in std_ulogic_vector(0 to 7);
|
|
lsu_pc_event_data : in std_ulogic_vector(0 to 7);
|
|
ac_pc_trace_to_perfcntr : in std_ulogic_vector(0 to 7)
|
|
);
|
|
-- synopsys translate_off
|
|
|
|
|
|
-- synopsys translate_on
|
|
end pcq_dbg;
|
|
|
|
architecture pcq_dbg of pcq_dbg is
|
|
constant fuevents_size : positive := 8;
|
|
constant iuevents_size : positive := 8;
|
|
constant mmevents_size : positive := 8;
|
|
constant xuevents_size : positive := 8;
|
|
constant lsuevents_size : positive := 8;
|
|
constant trcevents_size : positive := 8;
|
|
constant eventbus_size : positive := 8;
|
|
constant scrdata_size : positive := 64;
|
|
constant scwdata_size : positive := 64;
|
|
constant scmisc_size : positive := 3;
|
|
constant ramthrctl_size : positive := 4;
|
|
constant traceout_size : positive := 88;
|
|
constant triggout_size : positive := 12;
|
|
|
|
constant fuevents_offset : natural := 0;
|
|
constant fubypass_offset : natural := fuevents_offset + fuevents_size;
|
|
constant iuevents_offset : natural := fubypass_offset + fuevents_size;
|
|
constant iubypass_offset : natural := iuevents_offset + iuevents_size;
|
|
constant mmevents_offset : natural := iubypass_offset + iuevents_size;
|
|
constant mmbypass_offset : natural := mmevents_offset + mmevents_size;
|
|
constant xuevents_offset : natural := mmbypass_offset + mmevents_size;
|
|
constant lsuevents_offset : natural := xuevents_offset + xuevents_size;
|
|
constant lsubypass_offset : natural := lsuevents_offset + lsuevents_size;
|
|
constant trcevents_offset : natural := lsubypass_offset + lsuevents_size;
|
|
constant eventbus_offset : natural := trcevents_offset + trcevents_size;
|
|
constant scrdata_offset : natural := eventbus_offset + eventbus_size;
|
|
constant scwdata_offset : natural := scrdata_offset + scrdata_size;
|
|
constant scmisc_offset : natural := scwdata_offset + scwdata_size;
|
|
constant ramthrctl_offset : natural := scmisc_offset + scmisc_size;
|
|
constant traceout_offset : natural := ramthrctl_offset + ramthrctl_size;
|
|
constant triggout_offset : natural := traceout_offset + traceout_size;
|
|
constant func_right : natural := triggout_offset + triggout_size - 1;
|
|
|
|
signal func_siv, func_sov : std_ulogic_vector(0 to func_right);
|
|
signal pc_pc_func_slp_sl_thold_0_b : std_ulogic;
|
|
signal force_func : std_ulogic;
|
|
signal debug_group_0 : std_ulogic_vector(0 to traceout_size-1);
|
|
signal debug_group_1 : std_ulogic_vector(0 to traceout_size-1);
|
|
signal debug_group_2 : std_ulogic_vector(0 to traceout_size-1);
|
|
signal debug_group_3 : std_ulogic_vector(0 to traceout_size-1);
|
|
signal debug_group_4 : std_ulogic_vector(0 to traceout_size-1);
|
|
signal debug_group_5 : std_ulogic_vector(0 to traceout_size-1);
|
|
signal debug_group_6 : std_ulogic_vector(0 to traceout_size-1);
|
|
signal debug_group_7 : std_ulogic_vector(0 to traceout_size-1);
|
|
signal trigg_group_0 : std_ulogic_vector(0 to triggout_size-1);
|
|
signal trigg_group_1 : std_ulogic_vector(0 to triggout_size-1);
|
|
signal trigg_group_2 : std_ulogic_vector(0 to triggout_size-1);
|
|
signal trigg_group_3 : std_ulogic_vector(0 to triggout_size-1);
|
|
signal fir_icache_parity_q : std_ulogic;
|
|
signal fir_icachedir_parity_q : std_ulogic;
|
|
signal fir_dcache_parity_q : std_ulogic;
|
|
signal fir_dcachedir_parity_q : std_ulogic;
|
|
signal fir_sprg_ecc_q : std_ulogic_vector(0 to 3);
|
|
signal fir_xu_regf_parity_q : std_ulogic_vector(0 to 3);
|
|
signal fir_fu_regf_parity_q : std_ulogic_vector(0 to 3);
|
|
signal fir_mcsr_summary_q : std_ulogic_vector(0 to 3);
|
|
signal fir_ierat_parity_q : std_ulogic;
|
|
signal fir_derat_parity_q : std_ulogic;
|
|
signal fir_tlb_parity_q : std_ulogic;
|
|
signal fir_tlb_lru_parity_q : std_ulogic;
|
|
signal fir_ierat_multihit_q : std_ulogic;
|
|
signal fir_derat_multihit_q : std_ulogic;
|
|
signal fir_tlb_multihit_q : std_ulogic;
|
|
signal fir_external_mchk_q : std_ulogic;
|
|
signal fir_ditc_overrun_q : std_ulogic;
|
|
signal fir_local_snoop_rej_q : std_ulogic;
|
|
signal fir_inbox_ecc_q : std_ulogic;
|
|
signal fir_outbox_ecc_q : std_ulogic;
|
|
signal fir_scom_reg_parity_q : std_ulogic;
|
|
signal fir_scom_ack_err_q : std_ulogic;
|
|
signal fir_icachedir_multi_q : std_ulogic;
|
|
signal fir_dcachedir_multi_q : std_ulogic;
|
|
signal fir_wdt_reset_q : std_ulogic_vector(0 to 3);
|
|
signal fir_llbust_attempt_q : std_ulogic_vector(0 to 3);
|
|
signal fir_llbust_failed_q : std_ulogic_vector(0 to 3);
|
|
signal fir_max_recov_cntr_q : std_ulogic;
|
|
signal fir_l2intrf_ecc_q : std_ulogic;
|
|
signal fir_l2intrf_ue_q : std_ulogic;
|
|
signal fir_l2credit_overrun_q : std_ulogic;
|
|
signal fir_sprg_ue_q : std_ulogic;
|
|
signal fir_xu_regf_ue_q : std_ulogic;
|
|
signal fir_fu_regf_ue_q : std_ulogic;
|
|
signal fir_nia_miscmpr_q : std_ulogic;
|
|
signal fir_debug_event_q : std_ulogic_vector(0 to 3);
|
|
signal fir_inbox_ue_q : std_ulogic;
|
|
signal fir_outbox_ue_q : std_ulogic;
|
|
signal fir_invld_reld_q : std_ulogic;
|
|
signal fir_ucode_illegal_q : std_ulogic;
|
|
signal fir_attention_instr_q : std_ulogic_vector(0 to 3);
|
|
signal fir_xstop_err_q : std_ulogic_vector(0 to 2);
|
|
signal fir_recov_err_q : std_ulogic_vector(0 to 2);
|
|
signal fir_scom_err_report_q : std_ulogic_vector(0 to 17);
|
|
signal fir_xstop_per_thread_d : std_ulogic_vector(0 to 3);
|
|
signal fir_xstop_per_thread_q : std_ulogic_vector(0 to 3);
|
|
signal fir_block_ram_mode_q : std_ulogic;
|
|
signal fir0_recov_err_pulse_q : std_ulogic;
|
|
signal fir1_recov_err_pulse_q : std_ulogic;
|
|
signal fir2_recov_err_pulse_q : std_ulogic;
|
|
signal scom_rdata_d, scom_rdata_q : std_ulogic_vector(0 to 63);
|
|
signal scom_wdata_d, scom_wdata_q : std_ulogic_vector(0 to 63);
|
|
signal scom_decaddr_q : std_ulogic_vector(0 to 63);
|
|
signal scom_misc_sc_act_d : std_ulogic;
|
|
signal scom_misc_sc_act_q : std_ulogic;
|
|
signal scom_misc_sc_req_q : std_ulogic;
|
|
signal scom_misc_sc_wr_q : std_ulogic;
|
|
signal scom_misc_sc_nvld_q : std_ulogic_vector(0 to 2);
|
|
signal scom_misc_scaddr_fir_d : std_ulogic;
|
|
signal scom_misc_scaddr_fir_q : std_ulogic;
|
|
signal scom_misc_sc_par_inj_q : std_ulogic;
|
|
signal scom_misc_sc_wparity_d : std_ulogic;
|
|
signal scom_misc_sc_wparity_q : std_ulogic;
|
|
signal ram_execute_q : std_ulogic;
|
|
signal ram_interrupt_q : std_ulogic;
|
|
signal ram_error_q : std_ulogic;
|
|
signal ram_done_q : std_ulogic;
|
|
signal ram_thread_q : std_ulogic_vector(0 to 1);
|
|
signal ram_mode_q : std_ulogic;
|
|
signal ram_xu_done_in_q : std_ulogic;
|
|
signal ram_fu_done_in_q : std_ulogic;
|
|
signal thrctl_stop_out_q : std_ulogic_vector(0 to 3);
|
|
signal thrctl_step_out_q : std_ulogic_vector(0 to 3);
|
|
signal thrctl_run_in_q : std_ulogic_vector(0 to 3);
|
|
signal ctrls_init_active_q : std_ulogic;
|
|
signal ctrls_resetsm_q : std_ulogic_vector(0 to 4);
|
|
signal ctrls_initerat_q : std_ulogic;
|
|
signal ctrls_reset_cmplt_q : std_ulogic_vector(0 to 3);
|
|
signal ctrls_pm_stop_q : std_ulogic_vector(0 to 3);
|
|
signal ctrls_pm_state_q : std_ulogic_vector(0 to 3);
|
|
signal ctrls_pm_rvwinkled_q : std_ulogic;
|
|
signal ctrls_ccr0_pme_q : std_ulogic_vector(0 to 1);
|
|
signal ctrls_ccr0_we_q : std_ulogic_vector(0 to 3);
|
|
signal ctrls_pmclkctrl_dly_q : std_ulogic_vector(0 to 7);
|
|
signal ctrls_dis_pwr_sav_q : std_ulogic;
|
|
signal ctrls_ccflush_dis_q : std_ulogic;
|
|
signal ctrls_raise_tholds_q : std_ulogic;
|
|
signal clks_ccenable_dc : std_ulogic;
|
|
signal clks_fast_xstop : std_ulogic;
|
|
signal clks_scan_type_dc : std_ulogic_vector(0 to 7);
|
|
signal clks_gsd_tst_en_dc : std_ulogic;
|
|
signal clks_gsd_tst_ac_dc : std_ulogic;
|
|
signal clks_lbist_en_dc : std_ulogic;
|
|
signal clks_lbist_ip_dc : std_ulogic;
|
|
signal spr_slowspr_val_l2 : std_ulogic;
|
|
signal spr_slowspr_rw_l2 : std_ulogic;
|
|
signal spr_slowspr_etid_l2 : std_ulogic_vector(0 to 1);
|
|
signal spr_slowspr_addr_l2 : std_ulogic_vector(0 to 9);
|
|
signal spr_slowspr_data_l2 : std_ulogic_vector(0 to 31);
|
|
signal spr_pc_done_l2 : std_ulogic;
|
|
|
|
signal fu_events_d, fu_events_q : std_ulogic_vector(0 to fuevents_size-1);
|
|
signal fu_bypass_q : std_ulogic_vector(0 to fuevents_size-1);
|
|
signal iu_events_d, iu_events_q : std_ulogic_vector(0 to iuevents_size-1);
|
|
signal iu_bypass_q : std_ulogic_vector(0 to iuevents_size-1);
|
|
signal mm_events_d, mm_events_q : std_ulogic_vector(0 to mmevents_size-1);
|
|
signal mm_bypass_q : std_ulogic_vector(0 to mmevents_size-1);
|
|
signal xu_events_d, xu_events_q : std_ulogic_vector(0 to xuevents_size-1);
|
|
signal lsu_events_d, lsu_events_q : std_ulogic_vector(0 to lsuevents_size-1);
|
|
signal lsu_bypass_q : std_ulogic_vector(0 to lsuevents_size-1);
|
|
signal trc_events_d, trc_events_q : std_ulogic_vector(0 to trcevents_size-1);
|
|
signal event_bus_d, event_bus_q : std_ulogic_vector(0 to eventbus_size-1);
|
|
signal trace_data_out_d : std_ulogic_vector(0 to traceout_size-1);
|
|
signal trace_data_out_q : std_ulogic_vector(0 to traceout_size-1);
|
|
signal trigg_data_out_d : std_ulogic_vector(0 to triggout_size-1);
|
|
signal trigg_data_out_q : std_ulogic_vector(0 to triggout_size-1);
|
|
signal unused_signals : std_ulogic;
|
|
|
|
|
|
begin
|
|
|
|
unused_signals <= or_reduce(rg_db_dbg_fir2_err(14 to 19) );
|
|
|
|
|
|
fu_events_d <= fu_pc_event_data;
|
|
iu_events_d <= iu_pc_event_data;
|
|
mm_events_d <= mm_pc_event_data;
|
|
xu_events_d <= xu_pc_event_data;
|
|
lsu_events_d <= lsu_pc_event_data;
|
|
trc_events_d <= ac_pc_trace_to_perfcntr;
|
|
|
|
|
|
event_mux: entity work.pcq_dbg_event
|
|
generic map( expand_type => expand_type )
|
|
port map
|
|
( vd => vdd
|
|
, gd => gnd
|
|
, event_mux_ctrls => rg_db_event_mux_ctrls
|
|
, fu_event_data => fu_events_q
|
|
, iu_event_data => iu_events_q
|
|
, mm_event_data => mm_events_q
|
|
, xu_event_data => xu_events_q
|
|
, lsu_event_data => lsu_events_q
|
|
, trace_bus_data => trc_events_q
|
|
, event_bus => event_bus_d
|
|
);
|
|
|
|
|
|
fir_icache_parity_q <= rg_db_dbg_fir0_err(0);
|
|
fir_icachedir_parity_q <= rg_db_dbg_fir0_err(1);
|
|
fir_dcache_parity_q <= rg_db_dbg_fir0_err(2);
|
|
fir_dcachedir_parity_q <= rg_db_dbg_fir0_err(3);
|
|
fir_sprg_ecc_q <= rg_db_dbg_fir0_err(4 to 7);
|
|
fir_xu_regf_parity_q <= rg_db_dbg_fir0_err(8 to 11);
|
|
fir_fu_regf_parity_q <= rg_db_dbg_fir0_err(12 to 15);
|
|
fir_inbox_ecc_q <= rg_db_dbg_fir0_err(16);
|
|
fir_outbox_ecc_q <= rg_db_dbg_fir0_err(17);
|
|
fir_scom_reg_parity_q <= rg_db_dbg_fir0_err(18);
|
|
fir_scom_ack_err_q <= rg_db_dbg_fir0_err(19);
|
|
fir_wdt_reset_q <= rg_db_dbg_fir0_err(20 to 23);
|
|
fir_llbust_attempt_q <= rg_db_dbg_fir0_err(24 to 27);
|
|
fir_llbust_failed_q <= rg_db_dbg_fir0_err(28 to 31);
|
|
fir_max_recov_cntr_q <= rg_db_dbg_fir1_err(0);
|
|
fir_l2intrf_ecc_q <= rg_db_dbg_fir1_err(1);
|
|
fir_l2intrf_ue_q <= rg_db_dbg_fir1_err(2);
|
|
fir_l2credit_overrun_q <= rg_db_dbg_fir1_err(3);
|
|
fir_sprg_ue_q <= or_reduce(rg_db_dbg_fir1_err(4 to 7));
|
|
fir_xu_regf_ue_q <= or_reduce(rg_db_dbg_fir1_err(8 to 11));
|
|
fir_fu_regf_ue_q <= or_reduce(rg_db_dbg_fir1_err(12 to 15));
|
|
fir_nia_miscmpr_q <= or_reduce(rg_db_dbg_fir1_err(16 to 19));
|
|
fir_debug_event_q <= rg_db_dbg_fir1_err(20 to 23);
|
|
fir_ucode_illegal_q <= or_reduce(rg_db_dbg_fir1_err(24 to 27));
|
|
fir_inbox_ue_q <= rg_db_dbg_fir1_err(28);
|
|
fir_outbox_ue_q <= rg_db_dbg_fir1_err(29);
|
|
fir_invld_reld_q <= rg_db_dbg_fir1_err(30);
|
|
fir_mcsr_summary_q <= rg_db_dbg_fir2_err(0 to 3);
|
|
fir_ierat_parity_q <= rg_db_dbg_fir2_err(4);
|
|
fir_derat_parity_q <= rg_db_dbg_fir2_err(5);
|
|
fir_tlb_parity_q <= rg_db_dbg_fir2_err(6);
|
|
fir_tlb_lru_parity_q <= rg_db_dbg_fir2_err(7);
|
|
fir_ierat_multihit_q <= rg_db_dbg_fir2_err(8);
|
|
fir_derat_multihit_q <= rg_db_dbg_fir2_err(9);
|
|
fir_tlb_multihit_q <= rg_db_dbg_fir2_err(10);
|
|
fir_external_mchk_q <= rg_db_dbg_fir2_err(11);
|
|
fir_local_snoop_rej_q <= rg_db_dbg_fir2_err(12);
|
|
fir_ditc_overrun_q <= rg_db_dbg_fir2_err(13);
|
|
fir_icachedir_multi_q <= rg_db_dbg_fir2_err(20);
|
|
fir_dcachedir_multi_q <= rg_db_dbg_fir2_err(21);
|
|
fir_attention_instr_q <= rg_db_dbg_fir_misc(0 to 3);
|
|
fir_xstop_err_q <= rg_db_dbg_fir_misc(4 to 6);
|
|
fir_recov_err_q <= rg_db_dbg_fir_misc(7 to 9);
|
|
fir_scom_err_report_q <= rg_db_dbg_fir_misc(10 to 27);
|
|
fir_xstop_per_thread_d <= rg_db_dbg_fir_misc(28 to 31);
|
|
fir_block_ram_mode_q <= rg_db_dbg_fir_misc(32);
|
|
fir0_recov_err_pulse_q <= rg_db_dbg_fir_misc(33);
|
|
fir1_recov_err_pulse_q <= rg_db_dbg_fir_misc(34);
|
|
fir2_recov_err_pulse_q <= rg_db_dbg_fir_misc(35);
|
|
scom_rdata_d <= rg_db_dbg_scom_rdata(0 to 63);
|
|
scom_wdata_d <= rg_db_dbg_scom_wdata(0 to 63);
|
|
scom_decaddr_q <= rg_db_dbg_scom_decaddr(0 to 63);
|
|
scom_misc_sc_act_d <= rg_db_dbg_scom_misc(0);
|
|
scom_misc_sc_req_q <= rg_db_dbg_scom_misc(1);
|
|
scom_misc_sc_wr_q <= rg_db_dbg_scom_misc(2);
|
|
scom_misc_sc_nvld_q <= rg_db_dbg_scom_misc(3 to 5);
|
|
scom_misc_scaddr_fir_d <= rg_db_dbg_scom_misc(6);
|
|
scom_misc_sc_par_inj_q <= rg_db_dbg_scom_misc(7);
|
|
scom_misc_sc_wparity_d <= rg_db_dbg_scom_misc(8);
|
|
ram_execute_q <= rg_db_dbg_ram_thrctl(0);
|
|
ram_interrupt_q <= rg_db_dbg_ram_thrctl(1);
|
|
ram_error_q <= rg_db_dbg_ram_thrctl(2);
|
|
ram_done_q <= rg_db_dbg_ram_thrctl(3);
|
|
ram_thread_q <= rg_db_dbg_ram_thrctl(4 to 5);
|
|
ram_mode_q <= rg_db_dbg_ram_thrctl(6);
|
|
ram_xu_done_in_q <= rg_db_dbg_ram_thrctl(7);
|
|
ram_fu_done_in_q <= rg_db_dbg_ram_thrctl(8);
|
|
thrctl_stop_out_q <= rg_db_dbg_ram_thrctl(9 to 12);
|
|
thrctl_step_out_q <= rg_db_dbg_ram_thrctl(13 to 16);
|
|
thrctl_run_in_q <= rg_db_dbg_ram_thrctl(17 to 20);
|
|
ctrls_init_active_q <= ct_db_dbg_ctrls(0);
|
|
ctrls_resetsm_q <= ct_db_dbg_ctrls(1 to 5);
|
|
ctrls_initerat_q <= ct_db_dbg_ctrls(6);
|
|
ctrls_reset_cmplt_q <= ct_db_dbg_ctrls(7 to 10);
|
|
ctrls_pm_stop_q <= ct_db_dbg_ctrls(11 to 14);
|
|
ctrls_pm_state_q <= ct_db_dbg_ctrls(15 to 18);
|
|
ctrls_pm_rvwinkled_q <= ct_db_dbg_ctrls(19);
|
|
ctrls_ccr0_pme_q <= ct_db_dbg_ctrls(20 to 21);
|
|
ctrls_ccr0_we_q <= ct_db_dbg_ctrls(22 to 25);
|
|
ctrls_pmclkctrl_dly_q <= ct_db_dbg_ctrls(26 to 33);
|
|
ctrls_dis_pwr_sav_q <= ct_db_dbg_ctrls(34);
|
|
ctrls_ccflush_dis_q <= ct_db_dbg_ctrls(35);
|
|
ctrls_raise_tholds_q <= ct_db_dbg_ctrls(36);
|
|
clks_ccenable_dc <= ck_db_dbg_clks_ctrls(0);
|
|
clks_gsd_tst_en_dc <= ck_db_dbg_clks_ctrls(1);
|
|
clks_gsd_tst_ac_dc <= ck_db_dbg_clks_ctrls(2);
|
|
clks_lbist_en_dc <= ck_db_dbg_clks_ctrls(3);
|
|
clks_lbist_ip_dc <= ck_db_dbg_clks_ctrls(4);
|
|
clks_scan_type_dc <= ck_db_dbg_clks_ctrls(5 to 12);
|
|
clks_fast_xstop <= ck_db_dbg_clks_ctrls(13);
|
|
spr_slowspr_val_l2 <= rg_db_dbg_spr(0);
|
|
spr_slowspr_rw_l2 <= rg_db_dbg_spr(1);
|
|
spr_slowspr_etid_l2 <= rg_db_dbg_spr(2 to 3);
|
|
spr_slowspr_addr_l2 <= rg_db_dbg_spr(4 to 13);
|
|
spr_slowspr_data_l2 <= rg_db_dbg_spr(14 to 45);
|
|
spr_pc_done_l2 <= rg_db_dbg_spr(46);
|
|
|
|
|
|
debug_group_0 <= fir_icache_parity_q & fir_icachedir_parity_q & fir_dcache_parity_q &
|
|
fir_dcachedir_parity_q & fir_sprg_ecc_q(0 to 3) & fir_nia_miscmpr_q &
|
|
fir_l2intrf_ue_q & fir_sprg_ue_q & fir_invld_reld_q & fir_xu_regf_ue_q &
|
|
fir_fu_regf_ue_q & fir_inbox_ue_q & fir_outbox_ue_q & fir_l2credit_overrun_q &
|
|
fir_ucode_illegal_q & scom_wdata_q(0 to 63) & "000000";
|
|
|
|
debug_group_1 <= scom_misc_sc_act_q & scom_misc_sc_req_q & scom_misc_sc_wr_q &
|
|
scom_misc_sc_nvld_q(0 to 2) & scom_misc_scaddr_fir_q & scom_misc_sc_wparity_q &
|
|
scom_misc_sc_par_inj_q & fir_block_ram_mode_q & ram_mode_q & ram_thread_q(0 to 1) &
|
|
ram_execute_q & ram_interrupt_q & ram_error_q & ram_done_q & ram_xu_done_in_q &
|
|
ram_fu_done_in_q & scom_rdata_q(0 to 63) & "00000";
|
|
|
|
debug_group_2 <= fir_fu_regf_parity_q(0 to 3) & fir_xu_regf_parity_q(0 to 3) & ctrls_init_active_q &
|
|
ctrls_resetsm_q(0 to 4) & ctrls_initerat_q & ctrls_reset_cmplt_q(0 to 3) &
|
|
scom_decaddr_q(0 to 63) & "00000";
|
|
|
|
debug_group_3 <= fir_mcsr_summary_q(0 to 3) & fir_ierat_parity_q & fir_derat_parity_q &
|
|
fir_tlb_parity_q & fir_tlb_lru_parity_q & fir_scom_err_report_q(0 to 17) &
|
|
thrctl_run_in_q(0 to 3) & thrctl_stop_out_q(0 to 3) &
|
|
thrctl_step_out_q(0 to 3) & fir_attention_instr_q(0 to 3) &
|
|
fir_scom_reg_parity_q & fir_scom_ack_err_q & fir_recov_err_q(0 to 2) &
|
|
fir_xstop_err_q(0 to 2) & fir_xstop_per_thread_q(0 to 3) & x"00000000" & "00";
|
|
|
|
debug_group_4 <= fir_ierat_multihit_q & fir_derat_multihit_q & fir_tlb_multihit_q &
|
|
fir_external_mchk_q & fir_local_snoop_rej_q & fir_ditc_overrun_q &
|
|
ctrls_pm_stop_q(0 to 3) & ctrls_pm_state_q(0 to 3) & ctrls_ccr0_pme_q(0 to 1) &
|
|
ctrls_ccr0_we_q(0 to 3) & ctrls_pm_rvwinkled_q & clks_ccenable_dc &
|
|
clks_scan_type_dc(0 to 7) & clks_gsd_tst_en_dc & clks_gsd_tst_ac_dc &
|
|
clks_lbist_en_dc & clks_lbist_ip_dc & clks_fast_xstop &
|
|
ctrls_pmclkctrl_dly_q(0 to 7) & ctrls_ccflush_dis_q & ctrls_dis_pwr_sav_q &
|
|
ctrls_raise_tholds_q & x"0000000000" & "00";
|
|
|
|
debug_group_5 <= fir_icachedir_multi_q & fir_dcachedir_multi_q & fir_inbox_ecc_q &
|
|
fir_outbox_ecc_q & fir_l2intrf_ecc_q & fir0_recov_err_pulse_q &
|
|
fir1_recov_err_pulse_q & fir2_recov_err_pulse_q & fir_max_recov_cntr_q &
|
|
x"0000000000000000000" & "000";
|
|
|
|
debug_group_6 <= fir_llbust_attempt_q(0 to 3) & fir_llbust_failed_q(0 to 3) &
|
|
x"00000000000000000000";
|
|
|
|
debug_group_7 <= fir_wdt_reset_q(0 to 3) & fir_debug_event_q(0 to 3) &
|
|
spr_slowspr_val_l2 & spr_slowspr_rw_l2 & spr_pc_done_l2 &
|
|
spr_slowspr_etid_l2(0 to 1) & spr_slowspr_addr_l2(0 to 9) &
|
|
spr_slowspr_data_l2(0 to 31) & x"00000000" & "0";
|
|
|
|
|
|
trigg_group_0 <= scom_misc_sc_act_q & scom_misc_sc_req_q & scom_misc_sc_wr_q &
|
|
scom_misc_sc_nvld_q(0 to 2) & scom_misc_scaddr_fir_q &
|
|
thrctl_stop_out_q(0 to 3) & ctrls_initerat_q;
|
|
|
|
trigg_group_1 <= ram_mode_q & ram_execute_q & ram_interrupt_q & ram_error_q &
|
|
ram_done_q & ctrls_pm_stop_q(0 to 3) & ctrls_ccr0_pme_q(0 to 1) &
|
|
ctrls_ccflush_dis_q;
|
|
|
|
trigg_group_2 <= fir_xstop_err_q(0 to 2) & fir_recov_err_q(0 to 2) &
|
|
fir_mcsr_summary_q(0 to 3) & fir_external_mchk_q &
|
|
fir_l2intrf_ecc_q;
|
|
|
|
trigg_group_3 <= fir_wdt_reset_q(0 to 3) & fir_llbust_attempt_q(0 to 3) &
|
|
thrctl_run_in_q(0 to 3);
|
|
|
|
|
|
|
|
|
|
debug_mux: entity clib.c_debug_mux8
|
|
port map
|
|
( vd => vdd
|
|
,gd => gnd
|
|
|
|
,select_bits => rg_db_debug_mux_ctrls
|
|
,trace_data_in => debug_bus_in
|
|
,trigger_data_in => trace_triggers_in
|
|
|
|
,dbg_group0 => debug_group_0
|
|
,dbg_group1 => debug_group_1
|
|
,dbg_group2 => debug_group_2
|
|
,dbg_group3 => debug_group_3
|
|
,dbg_group4 => debug_group_4
|
|
,dbg_group5 => debug_group_5
|
|
,dbg_group6 => debug_group_6
|
|
,dbg_group7 => debug_group_7
|
|
|
|
,trg_group0 => trigg_group_0
|
|
,trg_group1 => trigg_group_1
|
|
,trg_group2 => trigg_group_2
|
|
,trg_group3 => trigg_group_3
|
|
|
|
,trace_data_out => trace_data_out_d
|
|
,trigger_data_out => trigg_data_out_d
|
|
);
|
|
|
|
|
|
ac_an_event_bus <= event_bus_q;
|
|
ac_an_fu_bypass_events <= fu_bypass_q;
|
|
ac_an_iu_bypass_events <= iu_bypass_q;
|
|
ac_an_mm_bypass_events <= mm_bypass_q;
|
|
ac_an_lsu_bypass_events <= lsu_bypass_q;
|
|
|
|
|
|
debug_bus_out <= trace_data_out_q;
|
|
|
|
trace_triggers_out <= trigg_data_out_q;
|
|
|
|
|
|
fuevents: tri_rlmreg_p
|
|
generic map (width => fuevents_size, init => 0, expand_type => expand_type)
|
|
port map (vd => vdd,
|
|
gd => gnd,
|
|
nclk => nclk,
|
|
act => rg_db_event_bus_enable,
|
|
thold_b => pc_pc_func_slp_sl_thold_0_b,
|
|
sg => pc_pc_sg_0,
|
|
forcee => force_func,
|
|
delay_lclkr => lcb_delay_lclkr_dc,
|
|
mpw1_b => lcb_mpw1_dc_b,
|
|
mpw2_b => lcb_mpw2_dc_b,
|
|
scin => func_siv(fuevents_offset to fuevents_offset + fuevents_size-1),
|
|
scout => func_sov(fuevents_offset to fuevents_offset + fuevents_size-1),
|
|
din => fu_events_d,
|
|
dout => fu_events_q );
|
|
|
|
fubypass: tri_rlmreg_p
|
|
generic map (width => fuevents_size, init => 0, expand_type => expand_type)
|
|
port map (vd => vdd,
|
|
gd => gnd,
|
|
nclk => nclk,
|
|
act => rg_db_event_bus_enable,
|
|
thold_b => pc_pc_func_slp_sl_thold_0_b,
|
|
sg => pc_pc_sg_0,
|
|
forcee => force_func,
|
|
delay_lclkr => lcb_delay_lclkr_dc,
|
|
mpw1_b => lcb_mpw1_dc_b,
|
|
mpw2_b => lcb_mpw2_dc_b,
|
|
scin => func_siv(fubypass_offset to fubypass_offset + fuevents_size-1),
|
|
scout => func_sov(fubypass_offset to fubypass_offset + fuevents_size-1),
|
|
din => fu_events_q,
|
|
dout => fu_bypass_q );
|
|
|
|
iuevents: tri_rlmreg_p
|
|
generic map (width => iuevents_size, init => 0, expand_type => expand_type)
|
|
port map (vd => vdd,
|
|
gd => gnd,
|
|
nclk => nclk,
|
|
act => rg_db_event_bus_enable,
|
|
thold_b => pc_pc_func_slp_sl_thold_0_b,
|
|
sg => pc_pc_sg_0,
|
|
forcee => force_func,
|
|
delay_lclkr => lcb_delay_lclkr_dc,
|
|
mpw1_b => lcb_mpw1_dc_b,
|
|
mpw2_b => lcb_mpw2_dc_b,
|
|
scin => func_siv(iuevents_offset to iuevents_offset + iuevents_size-1),
|
|
scout => func_sov(iuevents_offset to iuevents_offset + iuevents_size-1),
|
|
din => iu_events_d,
|
|
dout => iu_events_q );
|
|
|
|
iubypass: tri_rlmreg_p
|
|
generic map (width => iuevents_size, init => 0, expand_type => expand_type)
|
|
port map (vd => vdd,
|
|
gd => gnd,
|
|
nclk => nclk,
|
|
act => rg_db_event_bus_enable,
|
|
thold_b => pc_pc_func_slp_sl_thold_0_b,
|
|
sg => pc_pc_sg_0,
|
|
forcee => force_func,
|
|
delay_lclkr => lcb_delay_lclkr_dc,
|
|
mpw1_b => lcb_mpw1_dc_b,
|
|
mpw2_b => lcb_mpw2_dc_b,
|
|
scin => func_siv(iubypass_offset to iubypass_offset + iuevents_size-1),
|
|
scout => func_sov(iubypass_offset to iubypass_offset + iuevents_size-1),
|
|
din => iu_events_q,
|
|
dout => iu_bypass_q );
|
|
|
|
mmevents: tri_rlmreg_p
|
|
generic map (width => mmevents_size, init => 0, expand_type => expand_type)
|
|
port map (vd => vdd,
|
|
gd => gnd,
|
|
nclk => nclk,
|
|
act => rg_db_event_bus_enable,
|
|
thold_b => pc_pc_func_slp_sl_thold_0_b,
|
|
sg => pc_pc_sg_0,
|
|
forcee => force_func,
|
|
delay_lclkr => lcb_delay_lclkr_dc,
|
|
mpw1_b => lcb_mpw1_dc_b,
|
|
mpw2_b => lcb_mpw2_dc_b,
|
|
scin => func_siv(mmevents_offset to mmevents_offset + mmevents_size-1),
|
|
scout => func_sov(mmevents_offset to mmevents_offset + mmevents_size-1),
|
|
din => mm_events_d,
|
|
dout => mm_events_q );
|
|
|
|
mmbypass: tri_rlmreg_p
|
|
generic map (width => mmevents_size, init => 0, expand_type => expand_type)
|
|
port map (vd => vdd,
|
|
gd => gnd,
|
|
nclk => nclk,
|
|
act => rg_db_event_bus_enable,
|
|
thold_b => pc_pc_func_slp_sl_thold_0_b,
|
|
sg => pc_pc_sg_0,
|
|
forcee => force_func,
|
|
delay_lclkr => lcb_delay_lclkr_dc,
|
|
mpw1_b => lcb_mpw1_dc_b,
|
|
mpw2_b => lcb_mpw2_dc_b,
|
|
scin => func_siv(mmbypass_offset to mmbypass_offset + mmevents_size-1),
|
|
scout => func_sov(mmbypass_offset to mmbypass_offset + mmevents_size-1),
|
|
din => mm_events_q,
|
|
dout => mm_bypass_q );
|
|
|
|
xuevents: tri_rlmreg_p
|
|
generic map (width => xuevents_size, init => 0, expand_type => expand_type)
|
|
port map (vd => vdd,
|
|
gd => gnd,
|
|
nclk => nclk,
|
|
act => rg_db_event_bus_enable,
|
|
thold_b => pc_pc_func_slp_sl_thold_0_b,
|
|
sg => pc_pc_sg_0,
|
|
forcee => force_func,
|
|
delay_lclkr => lcb_delay_lclkr_dc,
|
|
mpw1_b => lcb_mpw1_dc_b,
|
|
mpw2_b => lcb_mpw2_dc_b,
|
|
scin => func_siv(xuevents_offset to xuevents_offset + xuevents_size-1),
|
|
scout => func_sov(xuevents_offset to xuevents_offset + xuevents_size-1),
|
|
din => xu_events_d,
|
|
dout => xu_events_q );
|
|
|
|
lsuevents: tri_rlmreg_p
|
|
generic map (width => lsuevents_size, init => 0, expand_type => expand_type)
|
|
port map (vd => vdd,
|
|
gd => gnd,
|
|
nclk => nclk,
|
|
act => rg_db_event_bus_enable,
|
|
thold_b => pc_pc_func_slp_sl_thold_0_b,
|
|
sg => pc_pc_sg_0,
|
|
forcee => force_func,
|
|
delay_lclkr => lcb_delay_lclkr_dc,
|
|
mpw1_b => lcb_mpw1_dc_b,
|
|
mpw2_b => lcb_mpw2_dc_b,
|
|
scin => func_siv(lsuevents_offset to lsuevents_offset + lsuevents_size-1),
|
|
scout => func_sov(lsuevents_offset to lsuevents_offset + lsuevents_size-1),
|
|
din => lsu_events_d,
|
|
dout => lsu_events_q );
|
|
|
|
lsubypass: tri_rlmreg_p
|
|
generic map (width => lsuevents_size, init => 0, expand_type => expand_type)
|
|
port map (vd => vdd,
|
|
gd => gnd,
|
|
nclk => nclk,
|
|
act => rg_db_event_bus_enable,
|
|
thold_b => pc_pc_func_slp_sl_thold_0_b,
|
|
sg => pc_pc_sg_0,
|
|
forcee => force_func,
|
|
delay_lclkr => lcb_delay_lclkr_dc,
|
|
mpw1_b => lcb_mpw1_dc_b,
|
|
mpw2_b => lcb_mpw2_dc_b,
|
|
scin => func_siv(lsubypass_offset to lsubypass_offset + lsuevents_size-1),
|
|
scout => func_sov(lsubypass_offset to lsubypass_offset + lsuevents_size-1),
|
|
din => lsu_events_q,
|
|
dout => lsu_bypass_q );
|
|
|
|
trcevents: tri_rlmreg_p
|
|
generic map (width => trcevents_size, init => 0, expand_type => expand_type)
|
|
port map (vd => vdd,
|
|
gd => gnd,
|
|
nclk => nclk,
|
|
act => rg_db_event_bus_enable,
|
|
thold_b => pc_pc_func_slp_sl_thold_0_b,
|
|
sg => pc_pc_sg_0,
|
|
forcee => force_func,
|
|
delay_lclkr => lcb_delay_lclkr_dc,
|
|
mpw1_b => lcb_mpw1_dc_b,
|
|
mpw2_b => lcb_mpw2_dc_b,
|
|
scin => func_siv(trcevents_offset to trcevents_offset + trcevents_size-1),
|
|
scout => func_sov(trcevents_offset to trcevents_offset + trcevents_size-1),
|
|
din => trc_events_d,
|
|
dout => trc_events_q );
|
|
|
|
eventbus: tri_rlmreg_p
|
|
generic map (width => eventbus_size, init => 0, expand_type => expand_type)
|
|
port map (vd => vdd,
|
|
gd => gnd,
|
|
nclk => nclk,
|
|
act => rg_db_event_bus_enable,
|
|
thold_b => pc_pc_func_slp_sl_thold_0_b,
|
|
sg => pc_pc_sg_0,
|
|
forcee => force_func,
|
|
delay_lclkr => lcb_delay_lclkr_dc,
|
|
mpw1_b => lcb_mpw1_dc_b,
|
|
mpw2_b => lcb_mpw2_dc_b,
|
|
scin => func_siv(eventbus_offset to eventbus_offset + eventbus_size-1),
|
|
scout => func_sov(eventbus_offset to eventbus_offset + eventbus_size-1),
|
|
din => event_bus_d,
|
|
dout => event_bus_q );
|
|
|
|
scrdata: tri_rlmreg_p
|
|
generic map (width => scrdata_size, init => 0, expand_type => expand_type)
|
|
port map (vd => vdd,
|
|
gd => gnd,
|
|
nclk => nclk,
|
|
act => rg_db_trace_bus_enable,
|
|
thold_b => pc_pc_func_slp_sl_thold_0_b,
|
|
sg => pc_pc_sg_0,
|
|
forcee => force_func,
|
|
delay_lclkr => lcb_delay_lclkr_dc,
|
|
mpw1_b => lcb_mpw1_dc_b,
|
|
mpw2_b => lcb_mpw2_dc_b,
|
|
scin => func_siv(scrdata_offset to scrdata_offset + scrdata_size-1),
|
|
scout => func_sov(scrdata_offset to scrdata_offset + scrdata_size-1),
|
|
din => scom_rdata_d,
|
|
dout => scom_rdata_q );
|
|
|
|
scwdata: tri_rlmreg_p
|
|
generic map (width => scwdata_size, init => 0, expand_type => expand_type)
|
|
port map (vd => vdd,
|
|
gd => gnd,
|
|
nclk => nclk,
|
|
act => rg_db_trace_bus_enable,
|
|
thold_b => pc_pc_func_slp_sl_thold_0_b,
|
|
sg => pc_pc_sg_0,
|
|
forcee => force_func,
|
|
delay_lclkr => lcb_delay_lclkr_dc,
|
|
mpw1_b => lcb_mpw1_dc_b,
|
|
mpw2_b => lcb_mpw2_dc_b,
|
|
scin => func_siv(scwdata_offset to scwdata_offset + scwdata_size-1),
|
|
scout => func_sov(scwdata_offset to scwdata_offset + scwdata_size-1),
|
|
din => scom_wdata_d,
|
|
dout => scom_wdata_q );
|
|
|
|
scmisc: tri_rlmreg_p
|
|
generic map (width => scmisc_size, init => 0, expand_type => expand_type)
|
|
port map (vd => vdd,
|
|
gd => gnd,
|
|
nclk => nclk,
|
|
act => rg_db_trace_bus_enable,
|
|
thold_b => pc_pc_func_slp_sl_thold_0_b,
|
|
sg => pc_pc_sg_0,
|
|
forcee => force_func,
|
|
delay_lclkr => lcb_delay_lclkr_dc,
|
|
mpw1_b => lcb_mpw1_dc_b,
|
|
mpw2_b => lcb_mpw2_dc_b,
|
|
scin => func_siv(scmisc_offset to scmisc_offset + scmisc_size-1),
|
|
scout => func_sov(scmisc_offset to scmisc_offset + scmisc_size-1),
|
|
din(0) => scom_misc_sc_act_d,
|
|
din(1) => scom_misc_scaddr_fir_d,
|
|
din(2) => scom_misc_sc_wparity_d,
|
|
dout(0) => scom_misc_sc_act_q,
|
|
dout(1) => scom_misc_scaddr_fir_q,
|
|
dout(2) => scom_misc_sc_wparity_q );
|
|
|
|
ramthrctl: tri_rlmreg_p
|
|
generic map (width => ramthrctl_size, init => 0, expand_type => expand_type)
|
|
port map (vd => vdd,
|
|
gd => gnd,
|
|
nclk => nclk,
|
|
act => rg_db_trace_bus_enable,
|
|
thold_b => pc_pc_func_slp_sl_thold_0_b,
|
|
sg => pc_pc_sg_0,
|
|
forcee => force_func,
|
|
delay_lclkr => lcb_delay_lclkr_dc,
|
|
mpw1_b => lcb_mpw1_dc_b,
|
|
mpw2_b => lcb_mpw2_dc_b,
|
|
scin => func_siv(ramthrctl_offset to ramthrctl_offset + ramthrctl_size-1),
|
|
scout => func_sov(ramthrctl_offset to ramthrctl_offset + ramthrctl_size-1),
|
|
din(0 to 3) => fir_xstop_per_thread_d,
|
|
dout(0 to 3) => fir_xstop_per_thread_q );
|
|
|
|
|
|
traceout: tri_rlmreg_p
|
|
generic map (width => traceout_size, init => 0, expand_type => expand_type)
|
|
port map (vd => vdd,
|
|
gd => gnd,
|
|
nclk => nclk,
|
|
act => rg_db_trace_bus_enable,
|
|
thold_b => pc_pc_func_slp_sl_thold_0_b,
|
|
sg => pc_pc_sg_0,
|
|
forcee => force_func,
|
|
delay_lclkr => lcb_delay_lclkr_dc,
|
|
mpw1_b => lcb_mpw1_dc_b,
|
|
mpw2_b => lcb_mpw2_dc_b,
|
|
scin => func_siv(traceout_offset to traceout_offset + traceout_size-1),
|
|
scout => func_sov(traceout_offset to traceout_offset + traceout_size-1),
|
|
din => trace_data_out_d,
|
|
dout => trace_data_out_q );
|
|
|
|
triggout: tri_rlmreg_p
|
|
generic map (width => triggout_size, init => 0, expand_type => expand_type)
|
|
port map (vd => vdd,
|
|
gd => gnd,
|
|
nclk => nclk,
|
|
act => rg_db_trace_bus_enable,
|
|
thold_b => pc_pc_func_slp_sl_thold_0_b,
|
|
sg => pc_pc_sg_0,
|
|
forcee => force_func,
|
|
delay_lclkr => lcb_delay_lclkr_dc,
|
|
mpw1_b => lcb_mpw1_dc_b,
|
|
mpw2_b => lcb_mpw2_dc_b,
|
|
scin => func_siv(triggout_offset to triggout_offset + triggout_size-1),
|
|
scout => func_sov(triggout_offset to triggout_offset + triggout_size-1),
|
|
din => trigg_data_out_d,
|
|
dout => trigg_data_out_q );
|
|
|
|
|
|
lcbor_func0: tri_lcbor
|
|
generic map (expand_type => expand_type )
|
|
port map (
|
|
clkoff_b => lcb_clkoff_dc_b,
|
|
thold => pc_pc_func_slp_sl_thold_0,
|
|
sg => pc_pc_sg_0,
|
|
act_dis => lcb_act_dis_dc,
|
|
forcee => force_func,
|
|
thold_b => pc_pc_func_slp_sl_thold_0_b );
|
|
|
|
|
|
func_siv(0 TO func_right) <= func_scan_in & func_sov(0 to func_right-1);
|
|
func_scan_out <= func_sov(func_right) and scan_dis_dc_b;
|
|
|
|
|
|
end pcq_dbg;
|
|
|