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.
2637 lines
132 KiB
VHDL
2637 lines
132 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,ibm,clib;
|
|
use IEEE.STD_LOGIC_1164.all;
|
|
|
|
use ibm.std_ulogic_function_support.all;
|
|
use ibm.std_ulogic_support.all;
|
|
library support;
|
|
use support.power_logic_pkg.all;
|
|
|
|
|
|
library tri; use tri.tri_latches_pkg.all;
|
|
|
|
entity fuq_dcd is
|
|
generic(
|
|
expand_type : integer := 2 ;
|
|
eff_ifar : integer := 62;
|
|
regmode : integer := 6);
|
|
port(
|
|
nclk : in clk_logic;
|
|
clkoff_b : in std_ulogic;
|
|
act_dis : in std_ulogic;
|
|
flush : in std_ulogic;
|
|
delay_lclkr : in std_ulogic_vector(0 to 9);
|
|
mpw1_b : in std_ulogic_vector(0 to 9);
|
|
mpw2_b : in std_ulogic_vector(0 to 1);
|
|
thold_1 : in std_ulogic;
|
|
cfg_sl_thold_1 : in std_ulogic;
|
|
func_slp_sl_thold_1 : in std_ulogic;
|
|
|
|
sg_1 : in std_ulogic;
|
|
f_dcd_si : in std_ulogic;
|
|
f_dcd_so : out std_ulogic;
|
|
dcfg_scan_in : in std_ulogic;
|
|
dcfg_scan_out : out std_ulogic;
|
|
bcfg_scan_in : in std_ulogic;
|
|
bcfg_scan_out : out std_ulogic;
|
|
ccfg_scan_in : in std_ulogic;
|
|
ccfg_scan_out : out std_ulogic;
|
|
vdd : inout power_logic;
|
|
gnd : inout power_logic;
|
|
f_dcd_msr_fp_act : out std_ulogic;
|
|
fu_xu_rf1_act : out std_ulogic_vector(0 to 3);
|
|
|
|
iu_fu_rf0_instr_v : in std_ulogic;
|
|
iu_fu_rf0_instr : in std_ulogic_vector(0 to 31);
|
|
iu_fu_rf0_fra_v : in std_ulogic;
|
|
iu_fu_rf0_frb_v : in std_ulogic;
|
|
iu_fu_rf0_frc_v : in std_ulogic;
|
|
iu_fu_rf0_tid : in std_ulogic_vector(0 to 1);
|
|
iu_fu_rf0_fra : in std_ulogic_vector(0 to 6);
|
|
iu_fu_rf0_frb : in std_ulogic_vector(0 to 6);
|
|
iu_fu_rf0_frc : in std_ulogic_vector(0 to 6);
|
|
iu_fu_rf0_frt : in std_ulogic_vector(0 to 6);
|
|
iu_fu_rf0_ifar : in std_ulogic_vector(62-eff_ifar to 61);
|
|
iu_fu_rf0_str_val : in std_ulogic;
|
|
iu_fu_rf0_ldst_val : in std_ulogic;
|
|
iu_fu_rf0_ldst_tid : in std_ulogic_vector(0 to 1);
|
|
iu_fu_rf0_ldst_tag : in std_ulogic_vector(0 to 8);
|
|
iu_fu_rf0_bypsel : in std_ulogic_vector(0 to 5);
|
|
iu_fu_rf0_instr_match : in std_ulogic;
|
|
iu_fu_rf0_is_ucode : in std_ulogic;
|
|
iu_fu_rf0_ucfmul : in std_ulogic;
|
|
iu_fu_is2_tid_decode : in std_ulogic_vector(0 to 3);
|
|
iu_fu_ex2_n_flush : in std_ulogic_vector(0 to 3);
|
|
|
|
f_fpr_ex7_load_addr : in std_ulogic_vector(0 to 7);
|
|
f_fpr_ex7_load_v : in std_ulogic;
|
|
xu_is2_flush : in std_ulogic_vector(0 to 3);
|
|
xu_rf0_flush : in std_ulogic_vector(0 to 3);
|
|
xu_rf1_flush : in std_ulogic_vector(0 to 3);
|
|
xu_ex1_flush : in std_ulogic_vector(0 to 3);
|
|
xu_ex2_flush : in std_ulogic_vector(0 to 3);
|
|
xu_ex3_flush : in std_ulogic_vector(0 to 3);
|
|
xu_ex4_flush : in std_ulogic_vector(0 to 3);
|
|
xu_ex5_flush : in std_ulogic_vector(0 to 3);
|
|
f_dcd_ex5_flush_int : out std_ulogic_vector(0 to 3);
|
|
xu_fu_ex5_reload_val : in std_ulogic;
|
|
xu_fu_ex5_load_val : in std_ulogic_vector(0 to 3);
|
|
|
|
f_dcd_perr_sm_running : out std_ulogic;
|
|
|
|
f_scr_ex7_cr_fld : in std_ulogic_vector (0 to 3) ;
|
|
f_add_ex4_fpcc_iu : in std_ulogic_vector (0 to 3) ;
|
|
f_pic_ex5_fpr_wr_dis_b : in std_ulogic ;
|
|
f_dcd_rf1_aop_valid : out std_ulogic;
|
|
f_dcd_rf1_cop_valid : out std_ulogic;
|
|
f_dcd_rf1_bop_valid : out std_ulogic;
|
|
f_dcd_rf1_sp : out std_ulogic;
|
|
f_dcd_rf1_emin_dp : out std_ulogic;
|
|
f_dcd_rf1_emin_sp : out std_ulogic;
|
|
f_dcd_rf1_force_pass_b : out std_ulogic;
|
|
|
|
f_dcd_rf1_fsel_b : out std_ulogic;
|
|
f_dcd_rf1_from_integer_b : out std_ulogic;
|
|
f_dcd_rf1_to_integer_b : out std_ulogic;
|
|
f_dcd_rf1_rnd_to_int_b : out std_ulogic;
|
|
f_dcd_rf1_math_b : out std_ulogic;
|
|
f_dcd_rf1_est_recip_b : out std_ulogic;
|
|
f_dcd_rf1_est_rsqrt_b : out std_ulogic;
|
|
f_dcd_rf1_move_b : out std_ulogic;
|
|
f_dcd_rf1_prenorm_b : out std_ulogic;
|
|
f_dcd_rf1_frsp_b : out std_ulogic;
|
|
f_dcd_rf1_compare_b : out std_ulogic;
|
|
f_dcd_rf1_ordered_b : out std_ulogic;
|
|
|
|
f_dcd_rf1_force_excp_dis : out std_ulogic;
|
|
f_dcd_rf1_nj_deni : out std_ulogic;
|
|
f_dcd_rf1_nj_deno : out std_ulogic;
|
|
f_dcd_rf1_sp_conv_b : out std_ulogic;
|
|
f_dcd_rf1_uns_b : out std_ulogic;
|
|
|
|
f_dcd_rf1_word_b : out std_ulogic;
|
|
f_dcd_rf1_sub_op_b : out std_ulogic;
|
|
f_dcd_rf1_op_rnd_v_b : out std_ulogic;
|
|
f_dcd_rf1_op_rnd_b : out std_ulogic_vector(0 to 1);
|
|
f_dcd_rf1_inv_sign_b : out std_ulogic;
|
|
f_dcd_rf1_sign_ctl_b : out std_ulogic_vector(0 to 1);
|
|
f_dcd_rf1_sgncpy_b : out std_ulogic;
|
|
|
|
f_dcd_rf1_fpscr_bit_data_b : out std_ulogic_vector(0 to 3);
|
|
f_dcd_rf1_fpscr_bit_mask_b : out std_ulogic_vector(0 to 3);
|
|
f_dcd_rf1_fpscr_nib_mask_b : out std_ulogic_vector(0 to 8);
|
|
f_dcd_rf1_mv_to_scr_b : out std_ulogic;
|
|
f_dcd_rf1_mv_from_scr_b : out std_ulogic;
|
|
f_dcd_rf1_mtfsbx_b : out std_ulogic;
|
|
f_dcd_rf1_mcrfs_b : out std_ulogic;
|
|
f_dcd_rf1_mtfsf_b : out std_ulogic;
|
|
f_dcd_rf1_mtfsfi_b : out std_ulogic;
|
|
f_dcd_rf1_thread_b : out std_ulogic_vector(0 to 3);
|
|
f_dcd_rf1_sto_dp : out std_ulogic ;
|
|
f_dcd_rf1_sto_sp : out std_ulogic ;
|
|
f_dcd_rf1_sto_wd : out std_ulogic ;
|
|
f_dcd_rf1_log2e_b : out std_ulogic ;
|
|
f_dcd_rf1_pow2e_b : out std_ulogic ;
|
|
f_dcd_rf1_ftdiv : out std_ulogic ;
|
|
f_dcd_rf1_ftsqrt : out std_ulogic ;
|
|
f_dcd_rf1_mad_act : out std_ulogic ;
|
|
f_dcd_rf1_sto_act : out std_ulogic ;
|
|
f_dcd_ex6_cancel : out std_ulogic ;
|
|
f_dcd_rf1_bypsel_a_res0 : out std_ulogic;
|
|
f_dcd_rf1_bypsel_a_load0 : out std_ulogic;
|
|
f_dcd_rf1_bypsel_b_res0 : out std_ulogic;
|
|
f_dcd_rf1_bypsel_b_load0 : out std_ulogic;
|
|
f_dcd_rf1_bypsel_c_res0 : out std_ulogic;
|
|
f_dcd_rf1_bypsel_c_load0 : out std_ulogic;
|
|
f_dcd_rf0_bypsel_a_res1 : out std_ulogic;
|
|
f_dcd_rf0_bypsel_b_res1 : out std_ulogic;
|
|
f_dcd_rf0_bypsel_c_res1 : out std_ulogic;
|
|
f_dcd_rf0_bypsel_s_res1 : out std_ulogic;
|
|
f_dcd_rf0_bypsel_a_load1 : out std_ulogic;
|
|
f_dcd_rf0_bypsel_b_load1 : out std_ulogic;
|
|
f_dcd_rf0_bypsel_c_load1 : out std_ulogic;
|
|
f_dcd_rf0_bypsel_s_load1 : out std_ulogic;
|
|
f_dcd_ex1_perr_force_c : out std_ulogic;
|
|
f_dcd_ex1_perr_fsel_ovrd : out std_ulogic;
|
|
|
|
slowspr_val_in : in std_ulogic;
|
|
slowspr_rw_in : in std_ulogic;
|
|
slowspr_etid_in : in std_ulogic_vector(0 to 1);
|
|
slowspr_addr_in : in std_ulogic_vector(0 to 9);
|
|
slowspr_data_in : in std_ulogic_vector(64-(2**regmode) to 63);
|
|
slowspr_done_in : in std_ulogic;
|
|
slowspr_val_out : out std_ulogic;
|
|
slowspr_rw_out : out std_ulogic;
|
|
slowspr_etid_out : out std_ulogic_vector(0 to 1);
|
|
slowspr_addr_out : out std_ulogic_vector(0 to 9);
|
|
slowspr_data_out : out std_ulogic_vector(64-(2**regmode) to 63);
|
|
slowspr_done_out : out std_ulogic;
|
|
pc_fu_trace_bus_enable : in std_ulogic;
|
|
pc_fu_event_bus_enable : in std_ulogic;
|
|
pc_fu_debug_mux_ctrls : in std_ulogic_vector(0 to 15);
|
|
pc_fu_event_count_mode : in std_ulogic_vector(0 to 2);
|
|
pc_fu_event_mux_ctrls : in std_ulogic_vector(0 to 31);
|
|
debug_data_in : in std_ulogic_vector(0 to 87);
|
|
debug_data_out : out std_ulogic_vector(0 to 87);
|
|
trace_triggers_in : in std_ulogic_vector(0 to 11);
|
|
trace_triggers_out : out std_ulogic_vector(0 to 11);
|
|
fu_pc_event_data : out std_ulogic_vector(0 to 7);
|
|
f_rnd_ex6_res_expo : in std_ulogic_vector (1 to 13);
|
|
f_rnd_ex6_res_frac : in std_ulogic_vector (0 to 52);
|
|
f_rnd_ex6_res_sign : in std_ulogic ;
|
|
pc_fu_ram_mode : in std_ulogic;
|
|
pc_fu_ram_thread : in std_ulogic_vector(0 to 1);
|
|
fu_pc_ram_done : out std_ulogic;
|
|
fu_pc_ram_data : out std_ulogic_vector(0 to 63);
|
|
f_sto_ex2_s_parity_check : in std_ulogic;
|
|
f_mad_ex2_a_parity_check : in std_ulogic;
|
|
f_mad_ex2_b_parity_check : in std_ulogic;
|
|
f_mad_ex2_c_parity_check : in std_ulogic;
|
|
fu_pc_err_regfile_parity : out std_ulogic_vector(0 to 3);
|
|
fu_pc_err_regfile_ue : out std_ulogic_vector(0 to 3);
|
|
fu_xu_ex3_regfile_err_det : out std_ulogic_vector(0 to 3);
|
|
xu_fu_regfile_seq_beg : in std_ulogic;
|
|
fu_xu_regfile_seq_end : out std_ulogic;
|
|
fu_xu_ex2_async_block : out std_ulogic_vector(0 to 3);
|
|
|
|
xu_fu_msr_fp : in std_ulogic_vector(0 to 3);
|
|
xu_fu_msr_pr : in std_ulogic_vector(0 to 3);
|
|
xu_fu_msr_gs : in std_ulogic_vector(0 to 3);
|
|
pc_fu_instr_trace_mode : in std_ulogic;
|
|
pc_fu_instr_trace_tid : in std_ulogic_vector(0 to 1);
|
|
|
|
f_dcd_ex6_frt_addr : out std_ulogic_vector(0 to 5);
|
|
f_dcd_ex6_frt_tid : out std_ulogic_vector(0 to 1);
|
|
f_dcd_ex5_frt_tid : out std_ulogic_vector(0 to 1);
|
|
f_dcd_ex6_frt_wen : out std_ulogic;
|
|
fu_xu_ex2_store_data_val : out std_ulogic;
|
|
fu_xu_ex4_cr : out std_ulogic_vector(0 to 3);
|
|
fu_xu_ex4_cr_val : out std_ulogic_vector(0 to 3);
|
|
fu_xu_ex4_cr_bf : out std_ulogic_vector(0 to 2);
|
|
fu_xu_ex4_cr_noflush : out std_ulogic_vector(0 to 3);
|
|
f_scr_ex7_fx_thread0 : in std_ulogic_vector(0 to 3);
|
|
f_scr_ex7_fx_thread1 : in std_ulogic_vector(0 to 3);
|
|
f_scr_ex7_fx_thread2 : in std_ulogic_vector(0 to 3);
|
|
f_scr_ex7_fx_thread3 : in std_ulogic_vector(0 to 3);
|
|
f_dcd_rf0_tid : out std_ulogic_vector(0 to 1);
|
|
f_dcd_rf0_fra : out std_ulogic_vector(0 to 5);
|
|
f_dcd_rf0_frb : out std_ulogic_vector(0 to 5);
|
|
f_dcd_rf0_frc : out std_ulogic_vector(0 to 5);
|
|
f_dcd_rf1_div_beg : out std_ulogic;
|
|
f_dcd_rf1_sqrt_beg : out std_ulogic;
|
|
f_dcd_rf1_uc_ft_pos : out std_ulogic;
|
|
f_dcd_rf1_uc_ft_neg : out std_ulogic;
|
|
f_dcd_rf1_uc_fa_pos : out std_ulogic;
|
|
f_dcd_rf1_uc_fc_pos : out std_ulogic;
|
|
f_dcd_rf1_uc_fb_pos : out std_ulogic;
|
|
f_dcd_rf1_uc_fc_hulp : out std_ulogic;
|
|
f_dcd_rf1_uc_fc_0_5 : out std_ulogic;
|
|
f_dcd_rf1_uc_fc_1_0 : out std_ulogic;
|
|
f_dcd_rf1_uc_fc_1_minus : out std_ulogic;
|
|
f_dcd_rf1_uc_fb_1_0 : out std_ulogic;
|
|
f_dcd_rf1_uc_fb_0_75 : out std_ulogic;
|
|
f_dcd_rf1_uc_fb_0_5 : out std_ulogic;
|
|
f_dcd_ex2_uc_inc_lsb : out std_ulogic;
|
|
f_dcd_rf1_uc_mid : out std_ulogic;
|
|
f_dcd_rf1_uc_end : out std_ulogic;
|
|
fu_iu_uc_special : out std_ulogic_vector(0 to 3);
|
|
f_dcd_rf1_uc_special : out std_ulogic;
|
|
f_dcd_ex2_uc_gs_v : out std_ulogic;
|
|
f_dcd_ex2_uc_gs : out std_ulogic_vector(0 to 1);
|
|
f_dcd_ex2_uc_vxsnan : out std_ulogic;
|
|
f_dcd_ex2_uc_zx : out std_ulogic;
|
|
f_dcd_ex2_uc_vxidi : out std_ulogic;
|
|
f_dcd_ex2_uc_vxzdz : out std_ulogic;
|
|
f_dcd_ex2_uc_vxsqrt : out std_ulogic;
|
|
f_mad_ex6_uc_sign : in std_ulogic;
|
|
f_mad_ex6_uc_zero : in std_ulogic;
|
|
f_mad_ex3_uc_special : in std_ulogic;
|
|
f_mad_ex3_uc_vxsnan : in std_ulogic;
|
|
f_mad_ex3_uc_zx : in std_ulogic;
|
|
f_mad_ex3_uc_vxidi : in std_ulogic;
|
|
f_mad_ex3_uc_vxzdz : in std_ulogic;
|
|
f_mad_ex3_uc_vxsqrt : in std_ulogic;
|
|
f_mad_ex3_uc_res_sign : in std_ulogic;
|
|
f_mad_ex3_uc_round_mode : in std_ulogic_vector(0 to 1);
|
|
|
|
f_ex2_b_den_flush : in std_ulogic;
|
|
xu_fu_ex3_eff_addr : in std_ulogic_vector(59 to 63);
|
|
fu_xu_ex3_n_flush : out std_ulogic_vector(0 to 3);
|
|
fu_xu_ex3_np1_flush : out std_ulogic_vector(0 to 3);
|
|
fu_xu_ex3_ap_int_req : out std_ulogic_vector(0 to 3);
|
|
fu_xu_ex3_flush2ucode : out std_ulogic_vector(0 to 3);
|
|
fu_xu_ex2_instr_type : out std_ulogic_vector(0 to 11);
|
|
fu_xu_ex2_instr_match : out std_ulogic_vector(0 to 3);
|
|
fu_xu_ex2_is_ucode : out std_ulogic_vector(0 to 3);
|
|
fu_xu_ex3_trap : out std_ulogic_vector(0 to 3);
|
|
fu_xu_ex2_ifar_val : out std_ulogic_vector(0 to 3);
|
|
fu_xu_ex2_ifar_issued : out std_ulogic_vector(0 to 3);
|
|
fu_xu_ex1_ifar : out std_ulogic_vector(62-eff_ifar to 61)
|
|
);
|
|
-- synopsys translate_off
|
|
|
|
-- synopsys translate_on
|
|
|
|
end fuq_dcd;
|
|
|
|
architecture fuq_dcd of fuq_dcd is
|
|
|
|
|
|
|
|
|
|
signal tilo : std_ulogic;
|
|
signal tihi : std_ulogic;
|
|
signal tilo_out : std_ulogic;
|
|
signal tihi_out : std_ulogic;
|
|
|
|
signal thold_0 : std_ulogic;
|
|
signal thold_0_b : std_ulogic;
|
|
signal sg_0 : std_ulogic;
|
|
signal forcee : std_ulogic;
|
|
signal cfg_sl_thold_0 : std_ulogic;
|
|
signal cfg_sl_thold_0_b : std_ulogic;
|
|
signal cfg_sl_force : std_ulogic;
|
|
signal func_slp_sl_thold_0 : std_ulogic;
|
|
signal func_slp_sl_force : std_ulogic;
|
|
signal func_slp_sl_thold_0_b : std_ulogic;
|
|
|
|
signal rf0_str_v : std_ulogic;
|
|
signal rf0_ldst_valid : std_ulogic_vector(0 to 3);
|
|
signal rf0_str_tag : std_ulogic_vector(0 to 1);
|
|
signal rf0_instr_valid : std_ulogic_vector(0 to 3);
|
|
signal rf0_instr_fra : std_ulogic_vector(0 to 5);
|
|
signal rf0_instr_frb : std_ulogic_vector(0 to 5);
|
|
signal rf0_instr_frc : std_ulogic_vector(0 to 5);
|
|
signal rf0_instr_frs : std_ulogic_vector(0 to 5);
|
|
signal rf0_instr_frt : std_ulogic_vector(0 to 5);
|
|
signal rf0_instr_tid_1hot : std_ulogic_vector(0 to 3);
|
|
signal thread_id_rf0 : std_ulogic_vector(0 to 3);
|
|
signal rf0_thread_so, rf0_thread_si :std_ulogic_vector(0 to 3);
|
|
signal rf0_tid : std_ulogic_vector(0 to 1);
|
|
signal rf0_bypsel : std_ulogic_vector(0 to 5);
|
|
signal rf0_bypsel_a_res0 : std_ulogic;
|
|
signal rf0_bypsel_b_res0 : std_ulogic;
|
|
signal rf0_bypsel_c_res0 : std_ulogic;
|
|
signal rf0_bypsel_a_load0 : std_ulogic;
|
|
signal rf0_bypsel_b_load0 : std_ulogic;
|
|
signal rf0_bypsel_c_load0 : std_ulogic;
|
|
signal rf0_bypsel_a_res1 : std_ulogic;
|
|
signal rf0_bypsel_b_res1 : std_ulogic;
|
|
signal rf0_bypsel_s_res1 : std_ulogic;
|
|
signal rf0_bypsel_c_res1 : std_ulogic;
|
|
signal rf0_bypsel_a_load1 : std_ulogic;
|
|
signal rf0_bypsel_b_load1 : std_ulogic;
|
|
signal rf0_bypsel_c_load1 : std_ulogic;
|
|
signal rf0_bypsel_s_load1 : std_ulogic;
|
|
signal rf0_instr_match : std_ulogic;
|
|
signal rf0_is_ucode : std_ulogic;
|
|
signal rf0_frs_byp : std_ulogic;
|
|
|
|
signal xu_ex5_flush_int : std_ulogic_vector(0 to 3);
|
|
|
|
signal ex5_reload_val_b : std_ulogic_vector(0 to 3);
|
|
|
|
signal rf1_v : std_ulogic;
|
|
signal rf1_axu_v : std_ulogic;
|
|
signal rf1_instr_v : std_ulogic_vector(0 to 3);
|
|
signal rf1_tid : std_ulogic_vector(0 to 1);
|
|
signal rf1_instr_valid : std_ulogic_vector(0 to 3);
|
|
signal rf1_instr : std_ulogic_vector(0 to 31);
|
|
signal rf1_instr_fra_v : std_ulogic;
|
|
signal rf1_instr_frb_v : std_ulogic;
|
|
signal rf1_instr_frc_v : std_ulogic;
|
|
signal rf1_instr_frt : std_ulogic_vector(0 to 5);
|
|
signal rf1_instr_fra : std_ulogic_vector(0 to 5);
|
|
signal rf1_instr_frb : std_ulogic_vector(0 to 5);
|
|
signal rf1_instr_frc : std_ulogic_vector(0 to 5);
|
|
signal rf1_instr_frs : std_ulogic_vector(0 to 5);
|
|
signal rf1_instr_ifar : std_ulogic_vector(62-eff_ifar to 61);
|
|
signal rf1_str_v : std_ulogic;
|
|
signal rf1_ldst_v : std_ulogic_vector(0 to 3);
|
|
signal rf1_ldst_valid : std_ulogic_vector(0 to 3);
|
|
signal rf1_str_tag : std_ulogic_vector(0 to 1);
|
|
signal rf1_bypsel_a_res0 : std_ulogic;
|
|
signal rf1_bypsel_b_res0 : std_ulogic;
|
|
signal rf1_bypsel_c_res0 : std_ulogic;
|
|
signal rf1_bypsel_a_load0 : std_ulogic;
|
|
signal rf1_bypsel_b_load0 : std_ulogic;
|
|
signal rf1_bypsel_c_load0 : std_ulogic;
|
|
signal rf1_bypsel_a_res1 : std_ulogic;
|
|
signal rf1_bypsel_b_res1 : std_ulogic;
|
|
signal rf1_bypsel_c_res1 : std_ulogic;
|
|
signal rf1_bypsel_a_load1 : std_ulogic;
|
|
signal rf1_bypsel_b_load1 : std_ulogic;
|
|
signal rf1_bypsel_c_load1 : std_ulogic;
|
|
signal rf1_frs_byp : std_ulogic;
|
|
|
|
signal rf1_primary : std_ulogic_vector(0 to 5);
|
|
signal rf1_sec_xform : std_ulogic_vector(0 to 9);
|
|
signal rf1_sec_aform : std_ulogic_vector(0 to 4);
|
|
signal rf1_dp : std_ulogic;
|
|
signal rf1_sp : std_ulogic;
|
|
signal rf1_dporsp : std_ulogic;
|
|
signal rf1_fcfid : std_ulogic;
|
|
signal rf1_fcfidu : std_ulogic;
|
|
signal rf1_fcfids : std_ulogic;
|
|
signal rf1_fcfidus : std_ulogic;
|
|
signal rf1_fcfiwu : std_ulogic;
|
|
signal rf1_fcfiwus : std_ulogic;
|
|
signal rf1_fctid : std_ulogic;
|
|
signal rf1_fctidu : std_ulogic;
|
|
signal rf1_fctidz : std_ulogic;
|
|
signal rf1_fctiduz : std_ulogic;
|
|
signal rf1_frim : std_ulogic;
|
|
signal rf1_frin : std_ulogic;
|
|
signal rf1_frip : std_ulogic;
|
|
signal rf1_friz : std_ulogic;
|
|
signal rf1_frsp : std_ulogic;
|
|
signal rf1_fmr : std_ulogic;
|
|
signal rf1_fneg : std_ulogic;
|
|
signal rf1_fabs : std_ulogic;
|
|
signal rf1_fnabs : std_ulogic;
|
|
signal rf1_fsel : std_ulogic;
|
|
signal rf1_frsqrte : std_ulogic;
|
|
signal rf1_fres : std_ulogic;
|
|
signal rf1_fctiw : std_ulogic;
|
|
signal rf1_fctiwu : std_ulogic;
|
|
signal rf1_fctiwz : std_ulogic;
|
|
signal rf1_fctiwuz : std_ulogic;
|
|
signal rf1_fcmpu : std_ulogic;
|
|
signal rf1_fcmpo : std_ulogic;
|
|
signal rf1_fcpsgn : std_ulogic;
|
|
signal rf1_fadd : std_ulogic;
|
|
signal rf1_fsub : std_ulogic;
|
|
signal rf1_fmul : std_ulogic;
|
|
signal rf1_fmadd : std_ulogic;
|
|
signal rf1_fmsub : std_ulogic;
|
|
signal rf1_fnmadd : std_ulogic;
|
|
signal rf1_fnmsub : std_ulogic;
|
|
signal rf1_mffs : std_ulogic;
|
|
signal rf1_mcrfs : std_ulogic;
|
|
signal rf1_mtfsfi : std_ulogic;
|
|
signal rf1_mtfsf : std_ulogic;
|
|
signal rf1_mtfsb0 : std_ulogic;
|
|
signal rf1_mtfsb1 : std_ulogic;
|
|
signal rf1_cr_val : std_ulogic;
|
|
signal ex1_cr_val_din : std_ulogic;
|
|
signal rf1_record : std_ulogic;
|
|
signal rf1_moves : std_ulogic;
|
|
signal rf1_to_ints : std_ulogic;
|
|
signal rf1_from_ints : std_ulogic;
|
|
signal rf1_fpscr_moves : std_ulogic;
|
|
signal rf1_mtfsb_bt : std_ulogic_vector(0 to 3);
|
|
signal rf1_mtfs_bf : std_ulogic_vector(0 to 7);
|
|
signal rf1_mcrfs_bfa : std_ulogic_vector(0 to 7);
|
|
signal rf1_mtfsf_nib : std_ulogic_vector(0 to 7);
|
|
signal rf1_mtfsf_l : std_ulogic;
|
|
signal rf1_mtfsf_w : std_ulogic;
|
|
signal rf1_fpscr_bit_data : std_ulogic_vector(0 to 3);
|
|
signal rf1_fpscr_bit_mask : std_ulogic_vector(0 to 3);
|
|
signal rf1_fpscr_nib_mask : std_ulogic_vector(0 to 8);
|
|
signal rf1_loge : std_ulogic;
|
|
signal rf1_expte : std_ulogic;
|
|
signal rf1_ftdiv : std_ulogic;
|
|
signal rf1_ftsqrt : std_ulogic;
|
|
signal rf1_rnd0 : std_ulogic;
|
|
signal rf1_rnd1 : std_ulogic;
|
|
signal rf1_kill_wen : std_ulogic;
|
|
signal rf1_instr_match : std_ulogic;
|
|
signal rf1_is_ucode : std_ulogic;
|
|
signal rf1_prenorm : std_ulogic;
|
|
signal rf1_div_beg : std_ulogic;
|
|
signal rf1_sqrt_beg : std_ulogic;
|
|
signal rf1_divsqrt_beg : std_ulogic;
|
|
signal rf1_fra_v : std_ulogic;
|
|
signal rf1_frb_v : std_ulogic;
|
|
signal rf1_frc_v : std_ulogic;
|
|
signal rf1_byp_a : std_ulogic;
|
|
signal rf1_byp_b : std_ulogic;
|
|
signal rf1_byp_c : std_ulogic;
|
|
signal rf1_uc_end : std_ulogic;
|
|
signal f_dcd_rf1_uc_fa_dis_par : std_ulogic;
|
|
signal f_dcd_rf1_uc_fb_dis_par : std_ulogic;
|
|
signal f_dcd_rf1_uc_fc_dis_par : std_ulogic;
|
|
|
|
signal ex1_v : std_ulogic;
|
|
signal ex1_axu_v : std_ulogic;
|
|
signal ex1_instr_v : std_ulogic_vector(0 to 3);
|
|
signal ex1_instr_valid : std_ulogic_vector(0 to 3);
|
|
signal ex1_instr_frt : std_ulogic_vector(0 to 5);
|
|
signal ex1_str_v : std_ulogic;
|
|
signal ex1_str_valid : std_ulogic;
|
|
signal ex1_ldst_v : std_ulogic_vector(0 to 3);
|
|
signal ex1_ldst_valid : std_ulogic_vector(0 to 3);
|
|
signal ex1_instr_ifar : std_ulogic_vector(62-eff_ifar to 61);
|
|
signal ex1_cr_val : std_ulogic;
|
|
signal ex1_record : std_ulogic;
|
|
signal ex1_kill_wen : std_ulogic;
|
|
signal ex1_mcrfs : std_ulogic;
|
|
signal ex1_instr_match : std_ulogic;
|
|
signal ex1_is_ucode : std_ulogic;
|
|
signal ex1_divsqrt_beg : std_ulogic;
|
|
signal ex1_ifar_val : std_ulogic_vector(0 to 3);
|
|
signal ex1_fra_v : std_ulogic;
|
|
signal ex1_frb_v : std_ulogic;
|
|
signal ex1_frc_v : std_ulogic;
|
|
signal ex1_fra_valid : std_ulogic;
|
|
signal ex1_frb_valid : std_ulogic;
|
|
signal ex1_frc_valid : std_ulogic;
|
|
signal ex1_frs_byp : std_ulogic;
|
|
signal ex1_async_block : std_ulogic_vector(0 to 3);
|
|
|
|
signal ex2_axu_v : std_ulogic;
|
|
signal ex2_instr_v : std_ulogic_vector(0 to 3);
|
|
signal ex2_instr_valid : std_ulogic_vector(0 to 3);
|
|
signal ex2_instr_frt : std_ulogic_vector(0 to 5);
|
|
signal ex2_cr_val : std_ulogic;
|
|
signal ex2_record : std_ulogic;
|
|
signal ex2_kill_wen : std_ulogic;
|
|
signal ex2_mcrfs : std_ulogic;
|
|
signal ex2_instr_match : std_ulogic;
|
|
signal ex2_is_ucode : std_ulogic;
|
|
signal ex2_ifar_val : std_ulogic_vector(0 to 3);
|
|
signal ex2_iu_n_flush : std_ulogic_vector(0 to 3);
|
|
signal ex2_fra_v : std_ulogic;
|
|
signal ex2_frb_v : std_ulogic;
|
|
signal ex2_frc_v : std_ulogic;
|
|
signal ex2_sto_perr : std_ulogic_vector(0 to 3);
|
|
signal ex2_abc_perr : std_ulogic_vector(0 to 3);
|
|
signal ex2_fpr_perr : std_ulogic_vector(0 to 3);
|
|
signal ex2_ldst_v : std_ulogic_vector(0 to 3);
|
|
signal ex2_str_v : std_ulogic;
|
|
signal ex2_fu_or_ldst_v : std_ulogic_vector(0 to 3);
|
|
signal ex2_n_flush : std_ulogic_vector(0 to 3);
|
|
signal ex2_flush2ucode : std_ulogic_vector(0 to 3);
|
|
signal ex2_frs_byp : std_ulogic;
|
|
signal ex2_async_block : std_ulogic_vector(0 to 3);
|
|
|
|
signal ex3_instr_v : std_ulogic_vector(0 to 3);
|
|
signal ex3_instr_valid : std_ulogic_vector(0 to 3);
|
|
signal ex3_instr_frt : std_ulogic_vector(0 to 5);
|
|
signal ex3_cr_val : std_ulogic;
|
|
signal ex3_record : std_ulogic;
|
|
signal ex3_b_den_flush : std_ulogic;
|
|
signal ex4_b_den_flush_din : std_ulogic;
|
|
signal ex3_kill_wen : std_ulogic;
|
|
signal ex3_mcrfs : std_ulogic;
|
|
signal ex3_instr_match : std_ulogic;
|
|
signal ex3_is_ucode : std_ulogic;
|
|
signal ex3_n_flush : std_ulogic_vector(0 to 3);
|
|
signal ex3_flush2ucode : std_ulogic_vector(0 to 3);
|
|
|
|
signal ex4_instr_v : std_ulogic_vector(0 to 3);
|
|
signal ex4_instr_valid : std_ulogic_vector(0 to 3);
|
|
signal ex4_instr_tid : std_ulogic_vector(0 to 1);
|
|
signal ex4_instr_frt : std_ulogic_vector(0 to 5);
|
|
signal ex5_instr_frt_din : std_ulogic_vector(0 to 5);
|
|
signal ex4_cr_val, ex4_cr_val_cp, ex4_cr_val_cp_b : std_ulogic;
|
|
signal ex4_fpcc_x_b, ex7_cr_fld_x_b :std_ulogic_vector(0 to 3);
|
|
signal ex4_record : std_ulogic;
|
|
signal ex4_kill_wen : std_ulogic;
|
|
signal ex4_mcrfs : std_ulogic;
|
|
signal ex4_is_ucode : std_ulogic;
|
|
signal ex4_b_den_flush : std_ulogic;
|
|
signal ex4_uc_special : std_ulogic;
|
|
|
|
signal ex5_instr_valid_din : std_ulogic_vector(0 to 3);
|
|
signal ex5_instr_v : std_ulogic_vector(0 to 3);
|
|
signal ex5_instr_valid : std_ulogic_vector(0 to 3);
|
|
signal ex5_instr_bypval : std_ulogic_vector(0 to 3);
|
|
signal ex5_instr_tid : std_ulogic_vector(0 to 1);
|
|
signal ex5_instr_frt : std_ulogic_vector(0 to 5);
|
|
signal ex5_record_din : std_ulogic;
|
|
signal ex5_mcrfs_din : std_ulogic;
|
|
signal ex5_record : std_ulogic;
|
|
signal ex5_mcrfs : std_ulogic;
|
|
signal ex5_is_ucode : std_ulogic;
|
|
signal ex5_instr_flush : std_ulogic;
|
|
signal ex5_cr_val_din : std_ulogic;
|
|
signal ex5_cr_val : std_ulogic;
|
|
signal ex5_kill_wen_din : std_ulogic;
|
|
signal ex5_kill_wen : std_ulogic;
|
|
signal ex6_instr_valid_din : std_ulogic_vector(0 to 3);
|
|
|
|
signal ex6_instr_v : std_ulogic_vector(0 to 3);
|
|
signal ex6_instr_valid : std_ulogic;
|
|
signal ex6_instr_tid : std_ulogic_vector(0 to 1);
|
|
signal ex6_instr_frt : std_ulogic_vector(0 to 5);
|
|
signal ex6_record : std_ulogic;
|
|
signal ex6_record_v : std_ulogic_vector(0 to 3);
|
|
signal ex6_bf : std_ulogic_vector(0 to 2);
|
|
signal ex6_mcrfs : std_ulogic;
|
|
signal ex6_is_ucode : std_ulogic;
|
|
signal ex6_is_fixperr : std_ulogic;
|
|
signal ex6_record_din : std_ulogic;
|
|
signal ex6_mcrfs_din : std_ulogic;
|
|
signal ex6_cr_val_din : std_ulogic;
|
|
signal ex6_cr_val : std_ulogic;
|
|
signal ex6_kill_wen : std_ulogic;
|
|
signal ex6_kill_wen_din : std_ulogic;
|
|
|
|
signal ex7_record_v : std_ulogic_vector(0 to 3);
|
|
signal ex7_bf : std_ulogic_vector(0 to 2);
|
|
|
|
signal rf1_uc_op_rnd_v : std_ulogic;
|
|
signal rf1_uc_op_rnd : std_ulogic_vector(0 to 1);
|
|
|
|
signal ex1_instr_frs : std_ulogic_vector(0 to 5);
|
|
signal ex1_instr_fra : std_ulogic_vector(0 to 5);
|
|
signal ex1_instr_frb : std_ulogic_vector(0 to 5);
|
|
signal ex1_instr_frc : std_ulogic_vector(0 to 5);
|
|
signal ex1_perr_si, ex1_perr_so : std_ulogic_vector(0 to 23);
|
|
signal ex2_instr_frs : std_ulogic_vector(0 to 5);
|
|
signal ex2_instr_fra : std_ulogic_vector(0 to 5);
|
|
signal ex2_instr_frb : std_ulogic_vector(0 to 5);
|
|
signal ex2_instr_frc : std_ulogic_vector(0 to 5);
|
|
signal ex2_perr_si, ex2_perr_so : std_ulogic_vector(0 to 23);
|
|
signal ex2_f0a_perr : std_ulogic;
|
|
signal ex2_f0c_perr : std_ulogic;
|
|
signal ex2_f1b_perr : std_ulogic;
|
|
signal ex2_f1s_perr : std_ulogic;
|
|
signal perr_sm_ns : std_ulogic_vector(0 to 2);
|
|
signal perr_sm_si, perr_sm_so : std_ulogic_vector(0 to 2);
|
|
signal perr_sm_din : std_ulogic_vector(0 to 2);
|
|
signal perr_sm_l2 : std_ulogic_vector(0 to 2);
|
|
signal perr_ctl_si, perr_ctl_so : std_ulogic_vector(0 to 24);
|
|
signal perr_addr_din : std_ulogic_vector(0 to 5);
|
|
signal perr_addr_l2 : std_ulogic_vector(0 to 5);
|
|
signal perr_tid_din : std_ulogic_vector(0 to 3);
|
|
signal perr_tid_l2 : std_ulogic_vector(0 to 3);
|
|
signal perr_tid_enc : std_ulogic_vector(0 to 1);
|
|
signal new_perr_sm_instr_v : std_ulogic;
|
|
signal rf0_perr_sm_instr_v : std_ulogic;
|
|
signal rf0_perr_sm_instr_v_b : std_ulogic;
|
|
signal rf0_frc_perr_x_b : std_ulogic_vector(0 to 5);
|
|
signal rf0_frc_iu_x_b : std_ulogic_vector(0 to 5);
|
|
signal rf0_frb_perr_x_b : std_ulogic_vector(0 to 5);
|
|
signal rf0_frb_iu_x_b : std_ulogic_vector(0 to 5);
|
|
signal rf0_tid_perr_x_b : std_ulogic_vector(0 to 1);
|
|
signal rf0_tid_iu_x_b : std_ulogic_vector(0 to 1);
|
|
signal rf1_perr_sm_instr_v : std_ulogic;
|
|
signal ex1_perr_sm_instr_v : std_ulogic;
|
|
signal ex2_perr_sm_instr_v : std_ulogic;
|
|
signal ex3_perr_sm_instr_v : std_ulogic;
|
|
signal ex4_perr_sm_instr_v : std_ulogic;
|
|
signal ex5_perr_sm_instr_v : std_ulogic;
|
|
signal perr_move_f0_to_f1 : std_ulogic;
|
|
signal perr_move_f1_to_f0 : std_ulogic;
|
|
signal perr_move_f0_to_f1_l2 : std_ulogic;
|
|
signal perr_move_f1_to_f0_l2 : std_ulogic;
|
|
signal rf0_perr_move_f0_to_f1 : std_ulogic;
|
|
signal rf0_perr_move_f1_to_f0 : std_ulogic;
|
|
signal rf0_perr_force_c : std_ulogic;
|
|
signal rf1_perr_force_c : std_ulogic;
|
|
signal ex1_perr_force_c : std_ulogic;
|
|
signal regfile_seq_beg : std_ulogic;
|
|
signal regfile_seq_end : std_ulogic;
|
|
signal ex2_regfile_err_det : std_ulogic;
|
|
signal ex3_regfile_err_det : std_ulogic_vector(0 to 3);
|
|
signal rf0_regfile_ue : std_ulogic;
|
|
signal rf0_regfile_ce : std_ulogic;
|
|
signal rf1_regfile_ue : std_ulogic;
|
|
signal rf1_regfile_ce : std_ulogic;
|
|
signal ex4_eff_addr : std_ulogic_vector(59 to 63);
|
|
signal err_regfile_parity : std_ulogic_vector(0 to 3);
|
|
signal err_regfile_ue : std_ulogic_vector(0 to 3);
|
|
|
|
signal slowspr_in_val : std_ulogic;
|
|
signal slowspr_in_rw : std_ulogic;
|
|
signal slowspr_in_etid : std_ulogic_vector(0 to 1);
|
|
signal slowspr_in_addr : std_ulogic_vector(0 to 9);
|
|
signal slowspr_in_data : std_ulogic_vector(64-(2**regmode) to 63);
|
|
signal slowspr_in_done : std_ulogic;
|
|
signal slowspr_out_val : std_ulogic;
|
|
signal slowspr_out_rw : std_ulogic;
|
|
signal slowspr_out_etid : std_ulogic_vector(0 to 1);
|
|
signal slowspr_out_addr : std_ulogic_vector(0 to 9);
|
|
signal slowspr_out_data : std_ulogic_vector(64-(2**regmode) to 63);
|
|
signal slowspr_out_done : std_ulogic;
|
|
signal axucr0_dec : std_ulogic;
|
|
signal axucr0_rd : std_ulogic;
|
|
signal axucr0_wr : std_ulogic;
|
|
signal axucr0_din : std_ulogic_vector(61 to 63);
|
|
signal axucr0_q : std_ulogic_vector(61 to 63);
|
|
signal debug_data_d : std_ulogic_vector(0 to 87);
|
|
signal debug_data_q : std_ulogic_vector(0 to 87);
|
|
signal debug_trig_d : std_ulogic_vector(0 to 11);
|
|
signal debug_trig_q : std_ulogic_vector(0 to 11);
|
|
signal debug_mux_ctrls_q : std_ulogic_vector(0 to 15);
|
|
signal debug_mux_ctrls_muxed : std_ulogic_vector(0 to 15);
|
|
|
|
signal trace_data_in : std_ulogic_vector(0 to 87);
|
|
signal trigger_data_in : std_ulogic_vector(0 to 11);
|
|
signal dbg_group0 : std_ulogic_vector(0 to 87);
|
|
signal dbg_group1 : std_ulogic_vector(0 to 87);
|
|
signal dbg_group2 : std_ulogic_vector(0 to 87);
|
|
signal dbg_group3 : std_ulogic_vector(0 to 87);
|
|
signal trg_group0 : std_ulogic_vector(0 to 11);
|
|
signal trg_group1 : std_ulogic_vector(0 to 11);
|
|
signal trg_group2 : std_ulogic_vector(0 to 11);
|
|
signal trg_group3 : std_ulogic_vector(0 to 11);
|
|
signal trigger_data_out : std_ulogic_vector(0 to 11);
|
|
signal trace_data_out : std_ulogic_vector(0 to 87);
|
|
signal uc_hooks_debug : std_ulogic_vector(0 to 55);
|
|
|
|
signal t0_events : std_ulogic_vector(0 to 7);
|
|
signal t1_events : std_ulogic_vector(0 to 7);
|
|
signal t2_events : std_ulogic_vector(0 to 7);
|
|
signal t3_events : std_ulogic_vector(0 to 7);
|
|
signal t0_events_in : std_ulogic_vector(0 to 7);
|
|
signal t1_events_in : std_ulogic_vector(0 to 7);
|
|
signal t2_events_in : std_ulogic_vector(0 to 7);
|
|
signal t3_events_in : std_ulogic_vector(0 to 7);
|
|
signal evnt_axu_instr_cmt : std_ulogic_vector(0 to 3);
|
|
signal evnt_axu_cr_cmt : std_ulogic_vector(0 to 3);
|
|
signal evnt_axu_idle : std_ulogic_vector(0 to 3);
|
|
signal evnt_div_sqrt_ip : std_ulogic_vector(0 to 3);
|
|
signal evnt_denrm_flush : std_ulogic_vector(0 to 3);
|
|
signal evnt_uc_instr_cmt : std_ulogic_vector(0 to 3);
|
|
signal event_data_d : std_ulogic_vector(0 to 7);
|
|
signal event_data_q : std_ulogic_vector(0 to 7);
|
|
signal evnt_fpu_fex : std_ulogic_vector(0 to 3);
|
|
signal evnt_fpu_fx : std_ulogic_vector(0 to 3);
|
|
signal event_en_d : std_ulogic_vector(0 to 3);
|
|
signal event_en_q : std_ulogic_vector(0 to 3);
|
|
signal event_count_mode_q : std_ulogic_vector(0 to 2);
|
|
signal msr_pr_q : std_ulogic_vector(0 to 3);
|
|
signal msr_gs_q : std_ulogic_vector(0 to 3);
|
|
signal instr_trace_mode_q : std_ulogic;
|
|
signal instr_trace_tid_q : std_ulogic_vector(0 to 1);
|
|
|
|
signal rf1_instr_iss : std_ulogic_vector(0 to 3);
|
|
signal ex1_instr_iss : std_ulogic_vector(0 to 3);
|
|
signal ex2_instr_iss : std_ulogic_vector(0 to 3);
|
|
|
|
signal ex6_ram_sign : std_ulogic;
|
|
signal ex6_ram_frac : std_ulogic_vector(0 to 52);
|
|
signal ex6_ram_expo : std_ulogic_vector(3 to 13);
|
|
signal ex6_ram_done : std_ulogic;
|
|
signal ex7_ram_done : std_ulogic;
|
|
signal ex7_ram_sign : std_ulogic;
|
|
signal ex7_ram_frac : std_ulogic_vector(0 to 52);
|
|
signal ex7_ram_expo : std_ulogic_vector(3 to 13);
|
|
signal ex7_ram_data : std_ulogic_vector(0 to 63);
|
|
|
|
signal rf1_iu_si, rf1_iu_so : std_ulogic_vector(0 to 14);
|
|
signal rf1_frt_si, rf1_frt_so : std_ulogic_vector(0 to 31);
|
|
signal uc_hooks_rc_rf0 : std_ulogic;
|
|
signal dbg0_act : std_ulogic;
|
|
signal event_act : std_ulogic;
|
|
|
|
signal SPARE_L2 : std_ulogic_vector(0 to 23);
|
|
|
|
signal act_lat_si, act_lat_so : std_ulogic_vector(0 to 2);
|
|
signal rf1_ifr_si, rf1_ifr_so : std_ulogic_vector(62-eff_ifar to 61);
|
|
signal rf1_instl_si, rf1_instl_so : std_ulogic_vector(0 to 31);
|
|
signal rf1_byp_si, rf1_byp_so : std_ulogic_vector(0 to 11);
|
|
signal ex1_ctl_si, ex1_ctl_so : std_ulogic_vector(0 to 7);
|
|
signal ex1_frt_si, ex1_frt_so : std_ulogic_vector(0 to 17);
|
|
signal ex1_ifar_si, ex1_ifar_so : std_ulogic_vector(62-eff_ifar to 61);
|
|
signal ex2_ctl_si, ex2_ctl_so : std_ulogic_vector(0 to 15);
|
|
signal ex2_ctlng_si, ex2_ctlng_so : std_ulogic_vector(0 to 16);
|
|
signal ex3_ctlng_si, ex3_ctlng_so : std_ulogic_vector(0 to 15);
|
|
signal ex3_ctl_si, ex3_ctl_so : std_ulogic_vector(0 to 12);
|
|
signal ex4_ctl_si, ex4_ctl_so : std_ulogic_vector(0 to 15);
|
|
signal ex5_ctl_si, ex5_ctl_so : std_ulogic_vector(0 to 14);
|
|
signal ex6_ctl_si, ex6_ctl_so : std_ulogic_vector(0 to 15);
|
|
signal ex7_ctl_si, ex7_ctl_so : std_ulogic_vector(0 to 6);
|
|
signal spr_ctl_si, spr_ctl_so : std_ulogic_vector(0 to 14);
|
|
signal spr_data_si, spr_data_so : std_ulogic_vector(64-(2**regmode) to 63);
|
|
signal ram_data_si, ram_data_so : std_ulogic_vector(0 to 64);
|
|
signal ram_datav_si, ram_datav_so : std_ulogic_vector(0 to 0);
|
|
signal perf_data_si, perf_data_so : std_ulogic_vector(0 to 38);
|
|
signal dbg0_data_si, dbg0_data_so : std_ulogic_vector(0 to 115);
|
|
signal dbg1_data_si, dbg1_data_so : std_ulogic_vector(0 to 4);
|
|
signal spare_si, spare_so : std_ulogic_vector(0 to 23);
|
|
signal f_ucode_si, f_ucode_so : std_ulogic;
|
|
signal axucr0_lat_si, axucr0_lat_so : std_ulogic_vector(0 to 2);
|
|
|
|
signal cfg_slat_d2clk : std_ulogic;
|
|
signal cfg_slat_lclk : clk_logic;
|
|
|
|
|
|
signal ex2_store_valid , ex2_stdv_si, ex2_stdv_so : std_ulogic;
|
|
signal msr_fp : std_ulogic;
|
|
signal msr_fp_raw : std_ulogic;
|
|
signal msr_fp_act : std_ulogic;
|
|
|
|
signal perr_sm_running : std_ulogic;
|
|
|
|
signal spare_unused : std_ulogic_vector(0 to 10);
|
|
|
|
|
|
|
|
|
|
signal ex5_iflush_int_b, ex5_iflush_b :std_ulogic_vector(0 to 3);
|
|
signal ex5_iflush_01, ex5_iflush_23, ex5_instr_flush_b :std_ulogic;
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
tilo <= '0';
|
|
tihi <= '1';
|
|
fu_buf_up: tihi_out <= tihi;
|
|
fu_buf_dn: tilo_out <= tilo;
|
|
|
|
|
|
thold_reg_0: tri_plat generic map (expand_type => expand_type, width => 3) port map (
|
|
vd => vdd,
|
|
gd => gnd,
|
|
nclk => nclk,
|
|
flush => flush ,
|
|
din(0) => thold_1,
|
|
din(1) => cfg_sl_thold_1,
|
|
din(2) => func_slp_sl_thold_1,
|
|
q(0) => thold_0,
|
|
q(1) => cfg_sl_thold_0,
|
|
q(2) => func_slp_sl_thold_0 );
|
|
|
|
sg_reg_0: tri_plat generic map (expand_type => expand_type) port map (
|
|
vd => vdd,
|
|
gd => gnd,
|
|
nclk => nclk,
|
|
flush => flush ,
|
|
din(0) => sg_1 ,
|
|
q(0) => sg_0 );
|
|
|
|
|
|
lcbor_0: tri_lcbor generic map (expand_type => expand_type ) port map (
|
|
clkoff_b => clkoff_b,
|
|
thold => thold_0,
|
|
sg => sg_0,
|
|
act_dis => act_dis,
|
|
forcee => forcee,
|
|
thold_b => thold_0_b );
|
|
|
|
cfg_sl_lcbor_0: tri_lcbor generic map (expand_type => expand_type ) port map (
|
|
clkoff_b => clkoff_b,
|
|
thold => cfg_sl_thold_0,
|
|
sg => sg_0,
|
|
act_dis => act_dis,
|
|
forcee => cfg_sl_force,
|
|
thold_b => cfg_sl_thold_0_b );
|
|
|
|
func_slp_sl_lcbor_0: tri_lcbor generic map (expand_type => expand_type ) port map (
|
|
clkoff_b => clkoff_b,
|
|
thold => func_slp_sl_thold_0,
|
|
sg => sg_0,
|
|
act_dis => act_dis,
|
|
forcee => func_slp_sl_force,
|
|
thold_b => func_slp_sl_thold_0_b );
|
|
|
|
|
|
msr_fp <= or_reduce(xu_fu_msr_fp(0 to 3));
|
|
|
|
act_lat: tri_rlmreg_p generic map (init => 0, expand_type => expand_type, width => 3) port map (
|
|
nclk => nclk,
|
|
act => tihi,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(9),
|
|
mpw1_b => mpw1_b(9),
|
|
mpw2_b => mpw2_b(1),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => act_lat_si(0 to 2),
|
|
scout => act_lat_so(0 to 2),
|
|
din(0) => pc_fu_trace_bus_enable,
|
|
din(1) => pc_fu_event_bus_enable,
|
|
din(2) => msr_fp,
|
|
dout(0) => dbg0_act ,
|
|
dout(1) => event_act ,
|
|
dout(2) => msr_fp_raw);
|
|
|
|
msr_fp_act <= msr_fp_raw or not axucr0_q(63);
|
|
|
|
f_dcd_msr_fp_act <= msr_fp_act;
|
|
|
|
|
|
|
|
rf0_str_tag(0 to 1) <= iu_fu_rf0_ldst_tag(0 to 1);
|
|
|
|
rf0_ldst_valid(0) <= iu_fu_rf0_ldst_val and not xu_rf0_flush(0) and iu_fu_rf0_ldst_tid(0 to 1) = "00";
|
|
rf0_ldst_valid(1) <= iu_fu_rf0_ldst_val and not xu_rf0_flush(1) and iu_fu_rf0_ldst_tid(0 to 1) = "01";
|
|
rf0_ldst_valid(2) <= iu_fu_rf0_ldst_val and not xu_rf0_flush(2) and iu_fu_rf0_ldst_tid(0 to 1) = "10";
|
|
rf0_ldst_valid(3) <= iu_fu_rf0_ldst_val and not xu_rf0_flush(3) and iu_fu_rf0_ldst_tid(0 to 1) = "11";
|
|
|
|
rf0_str_v <= iu_fu_rf0_str_val;
|
|
|
|
rf0_instr_match <= iu_fu_rf0_instr_match;
|
|
rf0_is_ucode <= iu_fu_rf0_is_ucode;
|
|
|
|
rf0_tid(0 to 1) <= iu_fu_rf0_tid(0 to 1);
|
|
rf0_instr_tid_1hot(0) <= (rf0_tid(0 to 1) = "00") and iu_fu_rf0_instr_v;
|
|
rf0_instr_tid_1hot(1) <= (rf0_tid(0 to 1) = "01") and iu_fu_rf0_instr_v;
|
|
rf0_instr_tid_1hot(2) <= (rf0_tid(0 to 1) = "10") and iu_fu_rf0_instr_v;
|
|
rf0_instr_tid_1hot(3) <= (rf0_tid(0 to 1) = "11") and iu_fu_rf0_instr_v;
|
|
|
|
rf0_instr_valid(0 to 3) <= rf0_instr_tid_1hot(0 to 3) and not xu_rf0_flush(0 to 3);
|
|
|
|
rf0_thread_lat: tri_rlmreg_p generic map (init => 0, expand_type => expand_type, width => 4) port map (
|
|
nclk => nclk,
|
|
act => msr_fp_act,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(8),
|
|
mpw1_b => mpw1_b(8),
|
|
mpw2_b => mpw2_b(1),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => rf0_thread_si(0 to 3),
|
|
scout => rf0_thread_so(0 to 3),
|
|
din(0 to 3) => iu_fu_is2_tid_decode(0 to 3),
|
|
dout(0 to 3) => thread_id_rf0(0 to 3) ) ;
|
|
|
|
|
|
rf0_instr_frt(0 to 5) <= iu_fu_rf0_frt(1 to 6);
|
|
rf0_instr_fra(0 to 5) <= iu_fu_rf0_fra(1 to 6);
|
|
rf0_instr_frb(0 to 5) <= iu_fu_rf0_frb(1 to 6);
|
|
rf0_instr_frc(0 to 5) <= iu_fu_rf0_frc(1 to 6);
|
|
rf0_instr_frs(0 to 5) <= iu_fu_rf0_ldst_tag(3 to 8);
|
|
|
|
|
|
|
|
rf0_bypsel(0 to 5) <= iu_fu_rf0_bypsel(0 to 5);
|
|
|
|
rf0_bypsel_a_res0 <= rf0_bypsel(3) and or_reduce(ex5_instr_bypval(0 to 3));
|
|
rf0_bypsel_c_res0 <= rf0_bypsel(4) and or_reduce(ex5_instr_bypval(0 to 3));
|
|
rf0_bypsel_b_res0 <= rf0_bypsel(5) and or_reduce(ex5_instr_bypval(0 to 3));
|
|
|
|
rf0_bypsel_a_res1 <= (ex6_instr_tid(0 to 1) & ex6_instr_frt(0 to 5)) = (rf0_tid(0 to 1) & rf0_instr_fra(0 to 5)) and
|
|
(ex6_instr_valid and not ex6_kill_wen) and iu_fu_rf0_fra_v and not rf0_bypsel_a_res0 and not rf0_bypsel_a_load0;
|
|
rf0_bypsel_c_res1 <= (ex6_instr_tid(0 to 1) & ex6_instr_frt(0 to 5)) = (rf0_tid(0 to 1) & rf0_instr_frc(0 to 5)) and
|
|
(ex6_instr_valid and not ex6_kill_wen) and iu_fu_rf0_frc_v and not rf0_bypsel_c_res0 and not rf0_bypsel_c_load0;
|
|
rf0_bypsel_b_res1 <= (ex6_instr_tid(0 to 1) & ex6_instr_frt(0 to 5)) = (rf0_tid(0 to 1) & rf0_instr_frb(0 to 5)) and
|
|
(ex6_instr_valid and not ex6_kill_wen) and iu_fu_rf0_frb_v and not rf0_bypsel_b_res0 and not rf0_bypsel_b_load0;
|
|
|
|
rf0_bypsel_s_res1 <= (ex6_instr_tid(0 to 1) & ex6_instr_frt(0 to 5)) = (iu_fu_rf0_ldst_tid(0 to 1) & rf0_instr_frs(0 to 5)) and
|
|
(ex6_instr_valid and not ex6_kill_wen) and rf0_str_v;
|
|
|
|
rf0_bypsel_a_load0 <= rf0_bypsel(0);
|
|
rf0_bypsel_c_load0 <= rf0_bypsel(1);
|
|
rf0_bypsel_b_load0 <= rf0_bypsel(2);
|
|
|
|
rf0_bypsel_a_load1 <= (f_fpr_ex7_load_addr(0 to 7) ) = (rf0_tid(0 to 1) & rf0_instr_fra(0 to 5)) and f_fpr_ex7_load_v and iu_fu_rf0_fra_v and not rf0_bypsel_a_load0 and not rf0_bypsel_a_res0;
|
|
rf0_bypsel_c_load1 <= (f_fpr_ex7_load_addr(0 to 7) ) = (rf0_tid(0 to 1) & rf0_instr_frc(0 to 5)) and f_fpr_ex7_load_v and iu_fu_rf0_frc_v and not rf0_bypsel_c_load0 and not rf0_bypsel_c_res0;
|
|
rf0_bypsel_b_load1 <= (f_fpr_ex7_load_addr(0 to 7) ) = (rf0_tid(0 to 1) & rf0_instr_frb(0 to 5)) and f_fpr_ex7_load_v and iu_fu_rf0_frb_v and not rf0_bypsel_b_load0 and not rf0_bypsel_b_res0;
|
|
rf0_bypsel_s_load1 <= (f_fpr_ex7_load_addr(0 to 7) ) = (iu_fu_rf0_ldst_tid(0 to 1) & rf0_instr_frs(0 to 5)) and f_fpr_ex7_load_v and rf0_str_v;
|
|
|
|
f_dcd_rf0_bypsel_a_res1 <= rf0_bypsel_a_res1;
|
|
f_dcd_rf0_bypsel_b_res1 <= rf0_bypsel_b_res1;
|
|
f_dcd_rf0_bypsel_c_res1 <= rf0_bypsel_c_res1;
|
|
f_dcd_rf0_bypsel_a_load1 <= rf0_bypsel_a_load1;
|
|
f_dcd_rf0_bypsel_b_load1 <= rf0_bypsel_b_load1;
|
|
f_dcd_rf0_bypsel_c_load1 <= rf0_bypsel_c_load1;
|
|
|
|
f_dcd_rf0_bypsel_s_res1 <= rf0_bypsel_s_res1;
|
|
f_dcd_rf0_bypsel_s_load1 <= rf0_bypsel_s_load1;
|
|
|
|
rf0_frs_byp <= rf0_bypsel_s_res1 or rf0_bypsel_s_load1;
|
|
|
|
|
|
rf1_iu: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 15)
|
|
port map (nclk => nclk,
|
|
act => tihi,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(0),
|
|
mpw1_b => mpw1_b(0),
|
|
mpw2_b => mpw2_b(0),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => rf1_iu_si(0 to 14),
|
|
scout => rf1_iu_so(0 to 14),
|
|
din(0) => iu_fu_rf0_fra_v,
|
|
din(1) => iu_fu_rf0_frb_v,
|
|
din(2) => iu_fu_rf0_frc_v,
|
|
din(3 to 6) => rf0_instr_valid(0 to 3),
|
|
din(7 to 10) => rf0_ldst_valid(0 to 3),
|
|
din(11 to 12) => rf0_str_tag(0 to 1),
|
|
din(13) => rf0_str_v,
|
|
din(14) => rf0_frs_byp,
|
|
dout(0) => rf1_instr_fra_v,
|
|
dout(1) => rf1_instr_frb_v,
|
|
dout(2) => rf1_instr_frc_v,
|
|
dout(3 to 6) => rf1_instr_v(0 to 3),
|
|
dout(7 to 10) => rf1_ldst_v(0 to 3),
|
|
dout(11 to 12) => rf1_str_tag(0 to 1),
|
|
dout(13) => rf1_str_v,
|
|
dout(14) => rf1_frs_byp
|
|
);
|
|
rf1_frt: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 32)
|
|
port map (nclk => nclk,
|
|
act => msr_fp_act,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(0),
|
|
mpw1_b => mpw1_b(0),
|
|
mpw2_b => mpw2_b(0),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => rf1_frt_si(0 to 31),
|
|
scout => rf1_frt_so(0 to 31),
|
|
din( 0 to 5) => rf0_instr_frt(0 to 5) ,
|
|
din( 6 to 11) => rf0_instr_fra(0 to 5) ,
|
|
din(12 to 17) => rf0_instr_frb(0 to 5) ,
|
|
din(18 to 23) => rf0_instr_frc(0 to 5) ,
|
|
din(24 to 29) => rf0_instr_frs(0 to 5) ,
|
|
din(30) => rf0_instr_match ,
|
|
din(31) => rf0_is_ucode ,
|
|
dout( 0 to 5) => rf1_instr_frt(0 to 5) ,
|
|
dout( 6 to 11) => rf1_instr_fra(0 to 5) ,
|
|
dout(12 to 17) => rf1_instr_frb(0 to 5) ,
|
|
dout(18 to 23) => rf1_instr_frc(0 to 5) ,
|
|
dout(24 to 29) => rf1_instr_frs(0 to 5) ,
|
|
dout(30) => rf1_instr_match ,
|
|
dout(31) => rf1_is_ucode
|
|
);
|
|
rf1_ifr: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => eff_ifar)
|
|
port map (nclk => nclk,
|
|
act => tihi,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(0),
|
|
mpw1_b => mpw1_b(0),
|
|
mpw2_b => mpw2_b(0),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => rf1_ifr_si,
|
|
scout => rf1_ifr_so,
|
|
din => iu_fu_rf0_ifar,
|
|
dout => rf1_instr_ifar );
|
|
rf1_instl: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 32)
|
|
port map (nclk => nclk,
|
|
act => msr_fp_act,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(0),
|
|
mpw1_b => mpw1_b(0),
|
|
mpw2_b => mpw2_b(0),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => rf1_instl_si(0 to 31),
|
|
scout => rf1_instl_so(0 to 31),
|
|
din(0 to 30) => iu_fu_rf0_instr(0 to 30),
|
|
din(31) => uc_hooks_rc_rf0,
|
|
dout => rf1_instr(0 to 31) );
|
|
rf1_byp: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 12)
|
|
port map (nclk => nclk,
|
|
act => msr_fp_act,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(0),
|
|
mpw1_b => mpw1_b(0),
|
|
mpw2_b => mpw2_b(0),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => rf1_byp_si(0 to 11),
|
|
scout => rf1_byp_so(0 to 11),
|
|
din(0) => rf0_bypsel_a_res0,
|
|
din(1) => rf0_bypsel_c_res0,
|
|
din(2) => rf0_bypsel_b_res0,
|
|
din(3) => rf0_bypsel_a_res1,
|
|
din(4) => rf0_bypsel_c_res1,
|
|
din(5) => rf0_bypsel_b_res1,
|
|
din(6) => rf0_bypsel_a_load0,
|
|
din(7) => rf0_bypsel_c_load0,
|
|
din(8) => rf0_bypsel_b_load0,
|
|
din(9) => rf0_bypsel_a_load1,
|
|
din(10) => rf0_bypsel_c_load1,
|
|
din(11) => rf0_bypsel_b_load1,
|
|
dout(0) => rf1_bypsel_a_res0,
|
|
dout(1) => rf1_bypsel_c_res0,
|
|
dout(2) => rf1_bypsel_b_res0,
|
|
dout(3) => rf1_bypsel_a_res1,
|
|
dout(4) => rf1_bypsel_c_res1,
|
|
dout(5) => rf1_bypsel_b_res1,
|
|
dout(6) => rf1_bypsel_a_load0,
|
|
dout(7) => rf1_bypsel_c_load0,
|
|
dout(8) => rf1_bypsel_b_load0,
|
|
dout(9) => rf1_bypsel_a_load1,
|
|
dout(10) => rf1_bypsel_c_load1,
|
|
dout(11) => rf1_bypsel_b_load1
|
|
);
|
|
|
|
rf1_instr_valid(0 to 3) <= rf1_instr_v(0 to 3) and not xu_rf1_flush(0 to 3);
|
|
rf1_ldst_valid(0 to 3) <= rf1_ldst_v(0 to 3) and not xu_rf1_flush(0 to 3);
|
|
|
|
fu_xu_rf1_act(0 to 3) <= rf1_instr_v(0 to 3);
|
|
|
|
rf1_tid(0) <= rf1_instr_v(2) or rf1_instr_v(3);
|
|
rf1_tid(1) <= rf1_instr_v(1) or rf1_instr_v(3);
|
|
|
|
|
|
rf1_primary(0 to 5) <= rf1_instr(0 to 5);
|
|
rf1_sec_xform(0 to 9) <= rf1_instr(21 to 30);
|
|
rf1_sec_aform(0 to 4) <= rf1_instr(26 to 30);
|
|
rf1_v <= rf1_instr_v(0) or rf1_instr_v(1) or rf1_instr_v(2) or rf1_instr_v(3);
|
|
rf1_axu_v <= rf1_v or rf1_ldst_v(0) or rf1_ldst_v(1) or rf1_ldst_v(2) or rf1_ldst_v(3) or rf1_perr_sm_instr_v;
|
|
rf1_dp <= (rf1_primary(0 to 5) = "111111") and rf1_v and not rf1_perr_sm_instr_v;
|
|
rf1_sp <= (rf1_primary(0 to 5) = "111011") and rf1_v and not rf1_perr_sm_instr_v;
|
|
rf1_dporsp <= rf1_dp or rf1_sp;
|
|
|
|
rf1_fabs <= rf1_dp and (rf1_sec_xform(0 to 9) = "0100001000");
|
|
rf1_fadd <= rf1_dporsp and (rf1_sec_aform(0 to 4) = "10101");
|
|
rf1_fcfid <= rf1_dp and (rf1_sec_xform(0 to 9) = "1101001110");
|
|
rf1_fcfidu <= rf1_dp and (rf1_sec_xform(0 to 9) = "1111001110");
|
|
rf1_fcfids <= rf1_sp and (rf1_sec_xform(0 to 9) = "1101001110");
|
|
rf1_fcfidus <= rf1_sp and (rf1_sec_xform(0 to 9) = "1111001110");
|
|
rf1_fcfiwu <= rf1_dp and (rf1_sec_xform(0 to 9) = "0011001110");
|
|
rf1_fcfiwus <= rf1_sp and (rf1_sec_xform(0 to 9) = "0011001110");
|
|
rf1_fcmpo <= rf1_dp and (rf1_sec_xform(0 to 9) = "0000100000");
|
|
rf1_fcmpu <= rf1_dp and (rf1_sec_xform(0 to 9) = "0000000000");
|
|
rf1_fcpsgn <= rf1_dp and (rf1_sec_xform(0 to 9) = "0000001000");
|
|
rf1_fctid <= rf1_dp and (rf1_sec_xform(0 to 9) = "1100101110");
|
|
rf1_fctidu <= rf1_dp and (rf1_sec_xform(0 to 9) = "1110101110");
|
|
rf1_fctidz <= rf1_dp and (rf1_sec_xform(0 to 9) = "1100101111");
|
|
rf1_fctiduz <= rf1_dp and (rf1_sec_xform(0 to 9) = "1110101111");
|
|
rf1_fctiw <= rf1_dp and (rf1_sec_xform(0 to 9) = "0000001110");
|
|
rf1_fctiwu <= rf1_dp and (rf1_sec_xform(0 to 9) = "0010001110");
|
|
rf1_fctiwz <= rf1_dp and (rf1_sec_xform(0 to 9) = "0000001111");
|
|
rf1_fctiwuz <= rf1_dp and (rf1_sec_xform(0 to 9) = "0010001111");
|
|
rf1_fmadd <= rf1_dporsp and (rf1_sec_aform(0 to 4) = "11101");
|
|
rf1_fmr <= rf1_dp and (rf1_sec_xform(0 to 9) = "0001001000");
|
|
rf1_fmsub <= rf1_dporsp and (rf1_sec_aform(0 to 4) = "11100");
|
|
rf1_fmul <= rf1_dporsp and ((rf1_sec_aform(0 to 4) = "11001") or
|
|
(rf1_sec_aform(0 to 4) = "10001"));
|
|
rf1_fnabs <= rf1_dp and (rf1_sec_xform(0 to 9) = "0010001000");
|
|
rf1_fneg <= rf1_dp and (rf1_sec_xform(0 to 9) = "0000101000");
|
|
rf1_fnmadd <= rf1_dporsp and (rf1_sec_aform(0 to 4) = "11111");
|
|
rf1_fnmsub <= rf1_dporsp and (rf1_sec_aform(0 to 4) = "11110");
|
|
rf1_fres <= rf1_dporsp and (rf1_sec_aform(0 to 4) = "11000");
|
|
rf1_frim <= rf1_dp and (rf1_sec_xform(0 to 9) = "0111101000");
|
|
rf1_frin <= rf1_dp and (rf1_sec_xform(0 to 9) = "0110001000");
|
|
rf1_frip <= rf1_dp and (rf1_sec_xform(0 to 9) = "0111001000");
|
|
rf1_friz <= rf1_dp and (rf1_sec_xform(0 to 9) = "0110101000");
|
|
rf1_frsp <= rf1_dp and (rf1_sec_xform(0 to 9) = "0000001100");
|
|
rf1_frsqrte <= rf1_dporsp and (rf1_sec_aform(0 to 4) = "11010");
|
|
rf1_fsel <= (rf1_dp and (rf1_sec_aform(0 to 4) = "10111"))
|
|
or (not perr_sm_l2(0));
|
|
|
|
rf1_fsub <= rf1_dporsp and (rf1_sec_aform(0 to 4) = "10100");
|
|
rf1_mcrfs <= rf1_dp and (rf1_sec_xform(0 to 9) = "0001000000");
|
|
rf1_mffs <= rf1_dp and (rf1_sec_xform(0 to 9) = "1001000111");
|
|
rf1_mtfsb0 <= rf1_dp and (rf1_sec_xform(0 to 9) = "0001000110");
|
|
rf1_mtfsb1 <= rf1_dp and (rf1_sec_xform(0 to 9) = "0000100110");
|
|
rf1_mtfsf <= rf1_dp and (rf1_sec_xform(0 to 9) = "1011000111");
|
|
rf1_mtfsfi <= rf1_dp and (rf1_sec_xform(0 to 9) = "0010000110");
|
|
rf1_loge <= rf1_dporsp and (rf1_sec_xform(0 to 9) = "0011100101");
|
|
rf1_expte <= rf1_dporsp and (rf1_sec_xform(0 to 9) = "0011000101");
|
|
rf1_prenorm <= rf1_dporsp and (rf1_sec_xform(5 to 9) = "10000");
|
|
|
|
rf1_ftdiv <= rf1_dp and (rf1_sec_xform(0 to 9) = "0010000000");
|
|
rf1_ftsqrt <= rf1_dp and (rf1_sec_xform(0 to 9) = "0010100000");
|
|
|
|
rf1_cr_val <= rf1_fcmpu or rf1_fcmpo;
|
|
rf1_record <= (rf1_dporsp and rf1_instr(31)) and not rf1_cr_val and not rf1_mcrfs
|
|
and not rf1_ftdiv and not rf1_ftsqrt;
|
|
|
|
rf1_moves <= rf1_fmr or rf1_fabs or rf1_fnabs or rf1_fneg or rf1_fcpsgn ;
|
|
|
|
rf1_to_ints <= rf1_fctid or rf1_fctidu or rf1_fctidz or rf1_fctiduz or
|
|
rf1_fctiw or rf1_fctiwu or rf1_fctiwz or rf1_fctiwuz;
|
|
rf1_from_ints <= rf1_fcfid or rf1_fcfidu or rf1_fcfids or rf1_fcfidus or
|
|
rf1_fcfiwu or rf1_fcfiwus;
|
|
rf1_fpscr_moves <= rf1_mtfsb0 or rf1_mtfsb1 or rf1_mtfsf or rf1_mtfsfi or rf1_mcrfs;
|
|
|
|
rf1_kill_wen <= rf1_cr_val or rf1_fpscr_moves or rf1_ftdiv or rf1_ftsqrt;
|
|
|
|
|
|
rf1_mtfsb_bt(0) <= not rf1_instr(9) and not rf1_instr(10);
|
|
rf1_mtfsb_bt(1) <= not rf1_instr(9) and rf1_instr(10);
|
|
rf1_mtfsb_bt(2) <= rf1_instr(9) and not rf1_instr(10);
|
|
rf1_mtfsb_bt(3) <= rf1_instr(9) and rf1_instr(10);
|
|
|
|
rf1_mtfs_bf(0) <= not rf1_instr(6) and not rf1_instr(7) and not rf1_instr(8);
|
|
rf1_mtfs_bf(1) <= not rf1_instr(6) and not rf1_instr(7) and rf1_instr(8);
|
|
rf1_mtfs_bf(2) <= not rf1_instr(6) and rf1_instr(7) and not rf1_instr(8);
|
|
rf1_mtfs_bf(3) <= not rf1_instr(6) and rf1_instr(7) and rf1_instr(8);
|
|
rf1_mtfs_bf(4) <= rf1_instr(6) and not rf1_instr(7) and not rf1_instr(8);
|
|
rf1_mtfs_bf(5) <= rf1_instr(6) and not rf1_instr(7) and rf1_instr(8);
|
|
rf1_mtfs_bf(6) <= rf1_instr(6) and rf1_instr(7) and not rf1_instr(8);
|
|
rf1_mtfs_bf(7) <= rf1_instr(6) and rf1_instr(7) and rf1_instr(8);
|
|
|
|
rf1_mcrfs_bfa(0) <= not rf1_instr(11) and not rf1_instr(12) and not rf1_instr(13);
|
|
rf1_mcrfs_bfa(1) <= not rf1_instr(11) and not rf1_instr(12) and rf1_instr(13);
|
|
rf1_mcrfs_bfa(2) <= not rf1_instr(11) and rf1_instr(12) and not rf1_instr(13);
|
|
rf1_mcrfs_bfa(3) <= not rf1_instr(11) and rf1_instr(12) and rf1_instr(13);
|
|
rf1_mcrfs_bfa(4) <= rf1_instr(11) and not rf1_instr(12) and not rf1_instr(13);
|
|
rf1_mcrfs_bfa(5) <= rf1_instr(11) and not rf1_instr(12) and rf1_instr(13);
|
|
rf1_mcrfs_bfa(6) <= rf1_instr(11) and rf1_instr(12) and not rf1_instr(13);
|
|
rf1_mcrfs_bfa(7) <= rf1_instr(11) and rf1_instr(12) and rf1_instr(13);
|
|
|
|
rf1_mtfsf_l <= rf1_instr(6);
|
|
rf1_mtfsf_w <= rf1_instr(15);
|
|
|
|
|
|
rf1_fpscr_bit_data(0 to 3) <= (rf1_instr(16 to 19) or (0 to 3 => rf1_mtfsb1)) and not
|
|
(0 to 3 => rf1_mtfsb0 or rf1_mtfsf or rf1_mcrfs);
|
|
|
|
rf1_fpscr_bit_mask(0 to 3) <= rf1_mtfsb_bt(0 to 3) or
|
|
(0 to 3 => rf1_mtfsfi or rf1_mtfsf or rf1_mcrfs);
|
|
|
|
rf1_fpscr_nib_mask(0 to 7) <= (rf1_mtfs_bf (0 to 7) and (0 to 7 => rf1_mtfsb1 or rf1_mtfsb0) ) or
|
|
(rf1_mtfs_bf (0 to 7) and (0 to 7 => rf1_mtfsfi and not rf1_mtfsf_w)) or
|
|
(rf1_mtfsf_nib(0 to 7) and (0 to 7 => rf1_mtfsf) ) or
|
|
(rf1_mcrfs_bfa(0 to 7) and (0 to 7 => rf1_mcrfs) );
|
|
|
|
|
|
|
|
rf1_mtfsf_nib(0 to 7) <= (rf1_instr(7 to 14) or (7 to 14 => rf1_mtfsf_l)) and not (0 to 7 => not rf1_mtfsf_l and rf1_mtfsf_w);
|
|
|
|
rf1_fpscr_nib_mask(8) <= (rf1_mtfsfi and rf1_mtfsf_w and rf1_mtfs_bf(7)) or
|
|
(rf1_mtfsf and rf1_mtfsf_l ) or
|
|
(rf1_mtfsf and not rf1_mtfsf_l and rf1_mtfsf_w and rf1_instr(14));
|
|
|
|
f_dcd_rf1_fpscr_bit_data_b(0 to 3) <= not rf1_fpscr_bit_data(0 to 3);
|
|
f_dcd_rf1_fpscr_bit_mask_b(0 to 3) <= not rf1_fpscr_bit_mask(0 to 3);
|
|
f_dcd_rf1_fpscr_nib_mask_b(0 to 8) <= not rf1_fpscr_nib_mask(0 to 8);
|
|
|
|
|
|
f_dcd_rf1_aop_valid <= rf1_instr_fra_v;
|
|
f_dcd_rf1_cop_valid <= rf1_instr_frc_v or
|
|
(not perr_sm_l2(0) and rf1_perr_sm_instr_v);
|
|
f_dcd_rf1_bop_valid <= rf1_instr_frb_v or
|
|
(not perr_sm_l2(0) and rf1_perr_sm_instr_v);
|
|
|
|
f_dcd_rf1_sp <= rf1_sp and not (rf1_fcfids or rf1_fcfiwus or rf1_fcfidus);
|
|
f_dcd_rf1_emin_dp <= tilo;
|
|
f_dcd_rf1_emin_sp <= rf1_frsp;
|
|
f_dcd_rf1_force_pass_b <= not (rf1_fmr or rf1_fabs or rf1_fnabs or rf1_fneg or rf1_mtfsf or rf1_fcpsgn);
|
|
f_dcd_rf1_fsel_b <= not rf1_fsel;
|
|
f_dcd_rf1_from_integer_b <= not rf1_from_ints;
|
|
f_dcd_rf1_to_integer_b <= not (rf1_to_ints or rf1_frim or rf1_frin or rf1_frip or rf1_friz);
|
|
f_dcd_rf1_rnd_to_int_b <= not (rf1_frim or rf1_frin or rf1_frip or rf1_friz);
|
|
f_dcd_rf1_math_b <= not (rf1_fmul or rf1_fmadd or rf1_fmsub or rf1_fadd or rf1_fsub or rf1_fnmsub or rf1_fnmadd);
|
|
f_dcd_rf1_est_recip_b <= not rf1_fres;
|
|
f_dcd_rf1_est_rsqrt_b <= not rf1_frsqrte;
|
|
f_dcd_rf1_move_b <= not (rf1_moves);
|
|
f_dcd_rf1_prenorm_b <= not (rf1_prenorm);
|
|
f_dcd_rf1_frsp_b <= not rf1_frsp;
|
|
f_dcd_rf1_compare_b <= not rf1_cr_val;
|
|
f_dcd_rf1_ordered_b <= not rf1_fcmpo;
|
|
f_dcd_rf1_sp_conv_b <= not (rf1_fcfids or rf1_fcfidus or rf1_fcfiwus);
|
|
f_dcd_rf1_uns_b <= not (rf1_fcfidu or rf1_fcfidus or rf1_fcfiwu or rf1_fcfiwus or
|
|
rf1_fctidu or rf1_fctiduz or rf1_fctiwu or rf1_fctiwuz);
|
|
f_dcd_rf1_word_b <= not (rf1_fctiw or rf1_fctiwu or rf1_fctiwz or rf1_fctiwuz or
|
|
rf1_fcfiwu or rf1_fcfiwus);
|
|
f_dcd_rf1_sub_op_b <= not (rf1_fsub or rf1_fmsub or rf1_fnmsub or rf1_cr_val);
|
|
f_dcd_rf1_inv_sign_b <= not (rf1_fnmadd or rf1_fnmsub);
|
|
f_dcd_rf1_sign_ctl_b(0) <= not (rf1_fmr or rf1_fnabs);
|
|
f_dcd_rf1_sign_ctl_b(1) <= not (rf1_fneg or rf1_fnabs);
|
|
f_dcd_rf1_sgncpy_b <= not rf1_fcpsgn;
|
|
f_dcd_rf1_mv_to_scr_b <= not (rf1_mcrfs or rf1_mtfsf or rf1_mtfsfi or rf1_mtfsb0 or rf1_mtfsb1);
|
|
f_dcd_rf1_mv_from_scr_b <= not rf1_mffs;
|
|
f_dcd_rf1_mtfsbx_b <= not (rf1_mtfsb0 or rf1_mtfsb1);
|
|
f_dcd_rf1_mcrfs_b <= not rf1_mcrfs;
|
|
f_dcd_rf1_mtfsf_b <= not rf1_mtfsf;
|
|
f_dcd_rf1_mtfsfi_b <= not rf1_mtfsfi;
|
|
|
|
f_dcd_rf1_mad_act <= rf1_v or rf1_perr_sm_instr_v;
|
|
|
|
f_dcd_rf1_sto_act <= (rf1_ldst_v(0) or rf1_ldst_v(1) or rf1_ldst_v(2) or rf1_ldst_v(3)) and rf1_str_v;
|
|
|
|
rf1_rnd0 <= ((rf1_frim or rf1_frip) and not rf1_uc_op_rnd_v) or
|
|
(rf1_uc_op_rnd(0) and rf1_uc_op_rnd_v);
|
|
|
|
rf1_rnd1 <= ((rf1_fctidz or rf1_fctiwz or rf1_fctiduz or rf1_fctiwuz or rf1_friz or rf1_frim) and not rf1_uc_op_rnd_v) or
|
|
(rf1_uc_op_rnd(1) and rf1_uc_op_rnd_v);
|
|
|
|
|
|
f_dcd_rf1_op_rnd_v_b <= not (rf1_fctidz or rf1_fctiwz or rf1_fctiduz or rf1_fctiwuz or
|
|
rf1_frim or rf1_frin or rf1_frip or rf1_friz or rf1_uc_op_rnd_v);
|
|
f_dcd_rf1_op_rnd_b(0 to 1) <= not (rf1_rnd0 & rf1_rnd1);
|
|
|
|
f_dcd_rf1_thread_b(0 to 3) <= not rf1_instr_v(0 to 3);
|
|
|
|
f_dcd_rf1_sto_dp <= not rf1_str_tag(0);
|
|
f_dcd_rf1_sto_sp <= rf1_str_tag(0) and not rf1_str_tag(1);
|
|
f_dcd_rf1_sto_wd <= rf1_str_tag(0) and rf1_str_tag(1);
|
|
|
|
f_dcd_rf1_log2e_b <= not rf1_loge;
|
|
f_dcd_rf1_pow2e_b <= not rf1_expte;
|
|
|
|
f_dcd_rf1_ftdiv <= rf1_ftdiv;
|
|
f_dcd_rf1_ftsqrt <= rf1_ftsqrt;
|
|
|
|
|
|
f_dcd_rf1_bypsel_a_res0 <= rf1_bypsel_a_res0 ;
|
|
f_dcd_rf1_bypsel_a_load0 <= rf1_bypsel_a_load0 ;
|
|
f_dcd_rf1_bypsel_b_res0 <= rf1_bypsel_b_res0 ;
|
|
f_dcd_rf1_bypsel_b_load0 <= rf1_bypsel_b_load0 ;
|
|
f_dcd_rf1_bypsel_c_res0 <= rf1_bypsel_c_res0 ;
|
|
f_dcd_rf1_bypsel_c_load0 <= rf1_bypsel_c_load0 ;
|
|
|
|
|
|
rf1_byp_a <= rf1_bypsel_a_res0 or rf1_bypsel_a_res1 or rf1_bypsel_a_load0 or rf1_bypsel_a_load1;
|
|
rf1_byp_b <= rf1_bypsel_b_res0 or rf1_bypsel_b_res1 or rf1_bypsel_b_load0 or rf1_bypsel_b_load1;
|
|
rf1_byp_c <= rf1_bypsel_c_res0 or rf1_bypsel_c_res1 or rf1_bypsel_c_load0 or rf1_bypsel_c_load1;
|
|
rf1_fra_v <= rf1_instr_fra_v and not rf1_byp_a and not f_dcd_rf1_uc_fa_dis_par;
|
|
rf1_frb_v <= rf1_instr_frb_v and not rf1_byp_b and not f_dcd_rf1_uc_fb_dis_par;
|
|
rf1_frc_v <= rf1_instr_frc_v and not rf1_byp_c and not f_dcd_rf1_uc_fc_dis_par and not rf1_uc_end;
|
|
|
|
|
|
ex1_cr_val_din <= rf1_cr_val or rf1_ftdiv or rf1_ftsqrt;
|
|
|
|
ex1_ctl: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 8)
|
|
port map (nclk => nclk,
|
|
act => tihi,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(1),
|
|
mpw1_b => mpw1_b(1),
|
|
mpw2_b => mpw2_b(0),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => ex1_ctl_si(0 to 7),
|
|
scout => ex1_ctl_so(0 to 7),
|
|
din(0 to 3) => rf1_instr_valid(0 to 3),
|
|
din(4 to 7) => rf1_ldst_valid(0 to 3),
|
|
dout(0 to 3) => ex1_instr_v(0 to 3),
|
|
dout(4 to 7) => ex1_ldst_v(0 to 3)
|
|
);
|
|
|
|
ex1_frt: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 18)
|
|
port map (nclk => nclk,
|
|
act => rf1_axu_v,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(1),
|
|
mpw1_b => mpw1_b(1),
|
|
mpw2_b => mpw2_b(0),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => ex1_frt_si(0 to 17),
|
|
scout => ex1_frt_so(0 to 17),
|
|
din(0 to 5) => rf1_instr_frt(0 to 5),
|
|
din( 6) => ex1_cr_val_din,
|
|
din( 7) => rf1_record,
|
|
din( 8) => rf1_kill_wen,
|
|
din( 9) => rf1_mcrfs,
|
|
din(10) => rf1_instr_match,
|
|
din(11) => rf1_is_ucode,
|
|
din(12) => rf1_divsqrt_beg,
|
|
din(13) => rf1_fra_v,
|
|
din(14) => rf1_frb_v,
|
|
din(15) => rf1_frc_v,
|
|
din(16) => rf1_str_v,
|
|
din(17) => rf1_frs_byp,
|
|
dout(0 to 5) => ex1_instr_frt(0 to 5),
|
|
dout(6) => ex1_cr_val,
|
|
dout(7) => ex1_record,
|
|
dout(8) => ex1_kill_wen,
|
|
dout(9) => ex1_mcrfs,
|
|
dout(10) => ex1_instr_match,
|
|
dout(11) => ex1_is_ucode,
|
|
dout(12) => ex1_divsqrt_beg,
|
|
dout(13) => ex1_fra_v,
|
|
dout(14) => ex1_frb_v,
|
|
dout(15) => ex1_frc_v,
|
|
dout(16) => ex1_str_v,
|
|
dout(17) => ex1_frs_byp
|
|
);
|
|
ex1_ifar: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => eff_ifar)
|
|
port map (nclk => nclk,
|
|
act => rf1_v,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(1),
|
|
mpw1_b => mpw1_b(1),
|
|
mpw2_b => mpw2_b(0),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => ex1_ifar_si,
|
|
scout => ex1_ifar_so,
|
|
din => rf1_instr_ifar,
|
|
dout => ex1_instr_ifar
|
|
);
|
|
|
|
ex1_perr: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 24)
|
|
port map (nclk => nclk,
|
|
act => rf1_axu_v,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(1),
|
|
mpw1_b => mpw1_b(1),
|
|
mpw2_b => mpw2_b(0),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => ex1_perr_si(0 to 23),
|
|
scout => ex1_perr_so(0 to 23),
|
|
din( 0 to 5) => rf1_instr_frs(0 to 5) ,
|
|
din( 6 to 11) => rf1_instr_fra(0 to 5) ,
|
|
din(12 to 17) => rf1_instr_frb(0 to 5) ,
|
|
din(18 to 23) => rf1_instr_frc(0 to 5) ,
|
|
dout( 0 to 5) => ex1_instr_frs(0 to 5) ,
|
|
dout( 6 to 11) => ex1_instr_fra(0 to 5) ,
|
|
dout(12 to 17) => ex1_instr_frb(0 to 5) ,
|
|
dout(18 to 23) => ex1_instr_frc(0 to 5)
|
|
);
|
|
|
|
ex1_instr_valid(0 to 3) <= ex1_instr_v(0 to 3) and not xu_ex1_flush(0 to 3);
|
|
ex1_v <= ex1_instr_v(0) or ex1_instr_v(1) or ex1_instr_v(2) or ex1_instr_v(3);
|
|
ex1_axu_v <= ex1_v or ex1_ldst_v(0) or ex1_ldst_v(1) or ex1_ldst_v(2) or ex1_ldst_v(3);
|
|
|
|
ex1_ldst_valid <= ex1_ldst_v(0 to 3) and not xu_ex1_flush(0 to 3);
|
|
|
|
ex1_str_valid <= ex1_str_v and or_reduce(ex1_ldst_valid(0 to 3));
|
|
ex1_fra_valid <= ex1_fra_v and or_reduce(ex1_instr_valid(0 to 3));
|
|
ex1_frb_valid <= ex1_frb_v and or_reduce(ex1_instr_valid(0 to 3));
|
|
ex1_frc_valid <= ex1_frc_v and or_reduce(ex1_instr_valid(0 to 3));
|
|
|
|
ex1_ifar_val(0 to 3) <= ex1_instr_valid(0 to 3) and not (0 to 3 => ex1_divsqrt_beg);
|
|
|
|
fu_xu_ex1_ifar <= ex1_instr_ifar;
|
|
|
|
|
|
|
|
ex1_async_block(0 to 3) <= ex1_instr_v(0 to 3) or
|
|
ex2_instr_v(0 to 3) or
|
|
ex3_instr_v(0 to 3) or
|
|
ex4_instr_v(0 to 3) or
|
|
ex5_instr_v(0 to 3) ;
|
|
|
|
|
|
ex2_ctlng_lat: tri_rlmreg_p generic map (init => 0, expand_type => expand_type, width => 17) port map (
|
|
nclk => nclk,
|
|
act => tihi,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(2),
|
|
mpw1_b => mpw1_b(2),
|
|
mpw2_b => mpw2_b(0),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => ex2_ctlng_si(0 to 16),
|
|
scout => ex2_ctlng_so(0 to 16),
|
|
din( 0 to 3) => ex1_instr_valid(0 to 3),
|
|
din( 4 to 7) => ex1_ifar_val(0 to 3),
|
|
din( 8 to 11) => ex1_ldst_valid(0 to 3),
|
|
din(12 to 15) => ex1_async_block(0 to 3),
|
|
din(16) => ex1_str_valid,
|
|
dout( 0 to 3) => ex2_instr_v(0 to 3),
|
|
dout( 4 to 7) => ex2_ifar_val(0 to 3),
|
|
dout( 8 to 11) => ex2_ldst_v(0 to 3),
|
|
dout(12 to 15) => ex2_async_block(0 to 3),
|
|
dout(16) => ex2_str_v
|
|
);
|
|
|
|
ex2_ctl_lat: tri_rlmreg_p generic map (init => 0, expand_type => expand_type, width => 16) port map (
|
|
nclk => nclk,
|
|
act => ex1_axu_v,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(2),
|
|
mpw1_b => mpw1_b(2),
|
|
mpw2_b => mpw2_b(0),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => ex2_ctl_si(0 to 15),
|
|
scout => ex2_ctl_so(0 to 15),
|
|
din(0 to 5) => ex1_instr_frt(0 to 5),
|
|
din(6) => ex1_cr_val,
|
|
din(7) => ex1_record,
|
|
din(8) => ex1_kill_wen,
|
|
din(9) => ex1_mcrfs,
|
|
din(10) => ex1_instr_match,
|
|
din(11) => ex1_is_ucode,
|
|
din(12) => ex1_fra_valid,
|
|
din(13) => ex1_frb_valid,
|
|
din(14) => ex1_frc_valid,
|
|
din(15) => ex1_frs_byp,
|
|
dout(0 to 5) => ex2_instr_frt(0 to 5),
|
|
dout(6) => ex2_cr_val,
|
|
dout(7) => ex2_record,
|
|
dout(8) => ex2_kill_wen,
|
|
dout(9) => ex2_mcrfs,
|
|
dout(10) => ex2_instr_match,
|
|
dout(11) => ex2_is_ucode,
|
|
dout(12) => ex2_fra_v,
|
|
dout(13) => ex2_frb_v,
|
|
dout(14) => ex2_frc_v,
|
|
dout(15) => ex2_frs_byp
|
|
);
|
|
|
|
|
|
ex2_stdv_lat: tri_rlmreg_p generic map (init => 0, expand_type => expand_type, width => 1) port map (
|
|
nclk => nclk,
|
|
act => tihi,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(2),
|
|
mpw1_b => mpw1_b(2),
|
|
mpw2_b => mpw2_b(0),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin(0) => ex2_stdv_si,
|
|
scout(0) => ex2_stdv_so,
|
|
din(0) => ex1_str_valid,
|
|
dout(0) => ex2_store_valid );
|
|
|
|
|
|
|
|
ex2_perr: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 24)
|
|
port map (nclk => nclk,
|
|
act => ex1_axu_v,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(2),
|
|
mpw1_b => mpw1_b(2),
|
|
mpw2_b => mpw2_b(0),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => ex2_perr_si(0 to 23),
|
|
scout => ex2_perr_so(0 to 23),
|
|
din( 0 to 5) => ex1_instr_frs(0 to 5) ,
|
|
din( 6 to 11) => ex1_instr_fra(0 to 5) ,
|
|
din(12 to 17) => ex1_instr_frb(0 to 5) ,
|
|
din(18 to 23) => ex1_instr_frc(0 to 5) ,
|
|
dout( 0 to 5) => ex2_instr_frs(0 to 5) ,
|
|
dout( 6 to 11) => ex2_instr_fra(0 to 5) ,
|
|
dout(12 to 17) => ex2_instr_frb(0 to 5) ,
|
|
dout(18 to 23) => ex2_instr_frc(0 to 5)
|
|
);
|
|
|
|
|
|
ex2_sto_perr(0 to 3) <= (0 to 3 => f_sto_ex2_s_parity_check and ex2_str_v and not ex2_frs_byp) and ex2_ldst_v(0 to 3);
|
|
|
|
ex2_abc_perr(0 to 3) <= (0 to 3 => (f_mad_ex2_a_parity_check and ex2_fra_v) or
|
|
(f_mad_ex2_b_parity_check and ex2_frb_v) or
|
|
(f_mad_ex2_c_parity_check and ex2_frc_v) ) and ex2_instr_v(0 to 3);
|
|
|
|
ex2_fpr_perr(0 to 3) <= (ex2_sto_perr(0 to 3) or ex2_abc_perr(0 to 3)) and not xu_ex2_flush(0 to 3) and (0 to 3 => msr_fp_act);
|
|
|
|
ex2_regfile_err_det <= or_reduce((ex2_sto_perr(0 to 3) or ex2_abc_perr(0 to 3)) and not xu_ex2_flush(0 to 3)) and msr_fp_act;
|
|
|
|
ex2_f0a_perr <= f_mad_ex2_a_parity_check and ex2_fra_v ;
|
|
ex2_f0c_perr <= f_mad_ex2_c_parity_check and (ex2_frc_v or (perr_sm_l2(1) and ex2_perr_sm_instr_v) );
|
|
ex2_f1b_perr <= f_mad_ex2_b_parity_check and (ex2_frb_v or (perr_sm_l2(1) and ex2_perr_sm_instr_v) );
|
|
ex2_f1s_perr <= f_sto_ex2_s_parity_check and ex2_str_v ;
|
|
|
|
ex2_instr_valid(0 to 3) <= ex2_instr_v(0 to 3) and not xu_ex2_flush(0 to 3);
|
|
|
|
fu_xu_ex2_store_data_val <= ex2_store_valid;
|
|
|
|
fu_xu_ex2_ifar_val(0 to 3) <= ex2_ifar_val(0 to 3);
|
|
fu_xu_ex2_ifar_issued(0 to 3) <= ex2_instr_iss(0 to 3);
|
|
|
|
fu_xu_ex2_instr_type(0 to 11) <= tilo_out & tilo_out & tihi_out &
|
|
tilo_out & tilo_out & tihi_out &
|
|
tilo_out & tilo_out & tihi_out &
|
|
tilo_out & tilo_out & tihi_out ;
|
|
|
|
fu_xu_ex2_instr_match(0 to 3) <= (0 to 3 => ex2_instr_match);
|
|
fu_xu_ex2_is_ucode(0 to 3) <= (0 to 3 => ex2_is_ucode);
|
|
|
|
fu_xu_ex2_async_block(0 to 3) <= ex2_async_block(0 to 3);
|
|
|
|
ex2_fu_or_ldst_v(0 to 3) <= (ex2_instr_v(0 to 3) or ex2_ldst_v(0 to 3)) and not xu_ex2_flush(0 to 3);
|
|
|
|
ex2_iu_n_flush(0 to 3) <= iu_fu_ex2_n_flush(0 to 3) and ex2_fu_or_ldst_v(0 to 3);
|
|
|
|
ex2_n_flush(0 to 3) <= (ex2_instr_valid(0 to 3) and (0 to 3 => f_ex2_b_den_flush)) or
|
|
ex2_iu_n_flush(0 to 3) ;
|
|
|
|
ex2_axu_v <= or_reduce(ex2_instr_v(0 to 3) or ex2_ldst_v(0 to 3));
|
|
|
|
ex2_flush2ucode(0 to 3) <= ex2_instr_v(0 to 3) and (0 to 3 => f_ex2_b_den_flush) and not ex2_iu_n_flush(0 to 3) and not xu_ex2_flush(0 to 3);
|
|
|
|
|
|
|
|
ex3_ctlng: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 16)
|
|
port map (nclk => nclk,
|
|
act => tihi,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(3),
|
|
mpw1_b => mpw1_b(3),
|
|
mpw2_b => mpw2_b(0),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => ex3_ctlng_si(0 to 15),
|
|
scout => ex3_ctlng_so(0 to 15),
|
|
din( 0 to 3) => ex2_instr_valid(0 to 3),
|
|
din( 4 to 7) => ex2_n_flush(0 to 3),
|
|
din( 8 to 11) => ex2_flush2ucode(0 to 3),
|
|
din(12 to 15) => ex2_fpr_perr(0 to 3),
|
|
dout( 0 to 3) => ex3_instr_v(0 to 3),
|
|
dout( 4 to 7) => ex3_n_flush(0 to 3),
|
|
dout( 8 to 11) => ex3_flush2ucode(0 to 3),
|
|
dout(12 to 15) => ex3_regfile_err_det(0 to 3)
|
|
);
|
|
|
|
ex3_ctl: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 13)
|
|
port map (nclk => nclk,
|
|
act => ex2_axu_v,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(3),
|
|
mpw1_b => mpw1_b(3),
|
|
mpw2_b => mpw2_b(0),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => ex3_ctl_si(0 to 12),
|
|
scout => ex3_ctl_so(0 to 12),
|
|
din(0 to 5) => ex2_instr_frt(0 to 5),
|
|
din(6) => ex2_cr_val,
|
|
din(7) => ex2_record,
|
|
din(8) => f_ex2_b_den_flush,
|
|
din(9) => ex2_kill_wen,
|
|
din(10) => ex2_mcrfs,
|
|
din(11) => ex2_instr_match,
|
|
din(12) => ex2_is_ucode,
|
|
dout(0 to 5) => ex3_instr_frt(0 to 5),
|
|
dout(6) => ex3_cr_val,
|
|
dout(7) => ex3_record,
|
|
dout(8) => ex3_b_den_flush,
|
|
dout(9) => ex3_kill_wen,
|
|
dout(10) => ex3_mcrfs,
|
|
dout(11) => ex3_instr_match,
|
|
dout(12) => ex3_is_ucode
|
|
);
|
|
|
|
|
|
ex3_instr_valid(0 to 3) <= ex3_instr_v(0 to 3) and not xu_ex3_flush(0 to 3) and (0 to 3 => msr_fp_act);
|
|
|
|
|
|
|
|
fu_xu_ex3_n_flush(0 to 3) <= ex3_n_flush(0 to 3) ;
|
|
|
|
|
|
fu_xu_ex3_np1_flush(0 to 3) <= tilo_out & tilo_out & tilo_out & tilo_out;
|
|
fu_xu_ex3_ap_int_req(0 to 3) <= tilo_out & tilo_out & tilo_out & tilo_out;
|
|
|
|
fu_xu_ex3_flush2ucode(0 to 3) <= ex3_flush2ucode;
|
|
|
|
|
|
fu_xu_ex3_trap(0 to 3) <= (f_scr_ex7_fx_thread0(1) & f_scr_ex7_fx_thread1(1) &
|
|
f_scr_ex7_fx_thread2(1) & f_scr_ex7_fx_thread3(1) ) ;
|
|
|
|
fu_xu_ex3_regfile_err_det(0 to 3) <= ex3_regfile_err_det(0 to 3);
|
|
|
|
|
|
ex4_ctl_lat: tri_rlmreg_p generic map (init => 0, expand_type => expand_type, width => 16) port map (
|
|
nclk => nclk,
|
|
act => tihi,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(4),
|
|
mpw1_b => mpw1_b(4),
|
|
mpw2_b => mpw2_b(0),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => ex4_ctl_si,
|
|
scout => ex4_ctl_so,
|
|
din(0 to 3) => ex3_instr_valid(0 to 3),
|
|
din(4 to 9) => ex3_instr_frt(0 to 5),
|
|
din(10) => ex3_cr_val,
|
|
din(11) => ex3_cr_val,
|
|
din(12) => ex3_record,
|
|
din(13) => ex3_kill_wen,
|
|
din(14) => ex3_mcrfs,
|
|
din(15) => ex3_is_ucode,
|
|
dout(0 to 3) => ex4_instr_v(0 to 3),
|
|
dout(4 to 9) => ex4_instr_frt(0 to 5),
|
|
dout(10) => ex4_cr_val,
|
|
dout(11) => ex4_cr_val_cp,
|
|
dout(12) => ex4_record,
|
|
dout(13) => ex4_kill_wen,
|
|
dout(14) => ex4_mcrfs,
|
|
dout(15) => ex4_is_ucode
|
|
);
|
|
|
|
|
|
|
|
ex4_cr_val_cp_b <= not( ex4_cr_val_cp) ;
|
|
|
|
u_cr_o1: ex7_cr_fld_x_b(0 to 3) <= not( f_scr_ex7_cr_fld (0 to 3) and (0 to 3 => ex4_cr_val_cp_b) );
|
|
u_cr_o2: ex4_fpcc_x_b(0 to 3) <= not( f_add_ex4_fpcc_iu(0 to 3) and (0 to 3 => ex4_cr_val_cp) );
|
|
u_cr_o: fu_xu_ex4_cr(0 to 3) <= not( ex4_fpcc_x_b(0 to 3) and ex7_cr_fld_x_b(0 to 3) );
|
|
|
|
|
|
|
|
|
|
ex4_instr_valid(0 to 3) <= ex4_instr_v(0 to 3) and not xu_ex4_flush(0 to 3);
|
|
|
|
fu_xu_ex4_cr_val <= (ex4_instr_v (0 to 3) and (0 to 3 => ex4_cr_val)) or
|
|
ex7_record_v(0 to 3);
|
|
|
|
fu_xu_ex4_cr_bf(0 to 2) <= (ex4_instr_frt(1 to 3) and (0 to 2 => ex4_cr_val)) or
|
|
(ex7_bf(0 to 2) and not (0 to 2 => ex4_cr_val)) ;
|
|
|
|
fu_xu_ex4_cr_noflush(0 to 3) <= ex7_record_v(0 to 3);
|
|
|
|
|
|
|
|
ex5_record_din <= ex4_record and or_reduce(ex4_instr_valid(0 to 3));
|
|
ex5_mcrfs_din <= ex4_mcrfs and or_reduce(ex4_instr_valid(0 to 3));
|
|
ex5_cr_val_din <= ex4_cr_val and or_reduce(ex4_instr_valid(0 to 3));
|
|
|
|
ex4_instr_tid(0) <= ex4_instr_v(2) or ex4_instr_v(3);
|
|
ex4_instr_tid(1) <= ex4_instr_v(1) or ex4_instr_v(3);
|
|
|
|
ex5_kill_wen_din <= ex4_kill_wen or (ex4_uc_special and ex4_is_ucode);
|
|
|
|
|
|
ex5_instr_valid_din(0) <= ex4_instr_valid(0);
|
|
ex5_instr_valid_din(1) <= ex4_instr_valid(1);
|
|
ex5_instr_valid_din(2) <= ex4_instr_valid(2);
|
|
ex5_instr_valid_din(3) <= ex4_instr_valid(3);
|
|
|
|
ex5_instr_frt_din(0 to 5) <= (ex4_instr_frt(0 to 5) and not (0 to 5 => perr_sm_l2(2))) or
|
|
(perr_addr_l2 (0 to 5) and (0 to 5 => perr_sm_l2(2))) ;
|
|
|
|
|
|
ex5_ctl: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 15)
|
|
port map (nclk => nclk,
|
|
act => tihi,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(5),
|
|
mpw1_b => mpw1_b(5),
|
|
mpw2_b => mpw2_b(1),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => ex5_ctl_si(0 to 14),
|
|
scout => ex5_ctl_so(0 to 14),
|
|
din(0 to 3) => ex5_instr_valid_din(0 to 3),
|
|
din(4 to 9) => ex5_instr_frt_din(0 to 5),
|
|
din(10) => ex5_record_din,
|
|
din(11) => ex5_mcrfs_din,
|
|
din(12) => ex4_is_ucode,
|
|
din(13) => ex5_cr_val_din,
|
|
din(14) => ex5_kill_wen_din,
|
|
dout(0 to 3) => ex5_instr_v(0 to 3),
|
|
dout(4 to 9) => ex5_instr_frt(0 to 5),
|
|
dout(10) => ex5_record,
|
|
dout(11) => ex5_mcrfs,
|
|
dout(12) => ex5_is_ucode,
|
|
dout(13) => ex5_cr_val,
|
|
dout(14) => ex5_kill_wen
|
|
);
|
|
|
|
ex5_instr_tid(0) <= ex5_instr_v(2) or ex5_instr_v(3);
|
|
ex5_instr_tid(1) <= ex5_instr_v(1) or ex5_instr_v(3);
|
|
|
|
|
|
|
|
|
|
ex5_reload_val_b(0) <= not (xu_fu_ex5_load_val(0) and xu_fu_ex5_reload_val);
|
|
ex5_reload_val_b(1) <= not (xu_fu_ex5_load_val(1) and xu_fu_ex5_reload_val);
|
|
ex5_reload_val_b(2) <= not (xu_fu_ex5_load_val(2) and xu_fu_ex5_reload_val);
|
|
ex5_reload_val_b(3) <= not (xu_fu_ex5_load_val(3) and xu_fu_ex5_reload_val);
|
|
|
|
|
|
u5_iflsh_int0b: ex5_iflush_int_b(0) <= not( xu_ex5_flush(0) and ex5_reload_val_b(0) );
|
|
u5_iflsh_int1b: ex5_iflush_int_b(1) <= not( xu_ex5_flush(1) and ex5_reload_val_b(1) );
|
|
u5_iflsh_int2b: ex5_iflush_int_b(2) <= not( xu_ex5_flush(2) and ex5_reload_val_b(2) );
|
|
u5_iflsh_int3b: ex5_iflush_int_b(3) <= not( xu_ex5_flush(3) and ex5_reload_val_b(3) );
|
|
|
|
u5_iflsh_int0: xu_ex5_flush_int(0) <= not( ex5_iflush_int_b(0) );
|
|
u5_iflsh_int1: xu_ex5_flush_int(1) <= not( ex5_iflush_int_b(1) );
|
|
u5_iflsh_int2: xu_ex5_flush_int(2) <= not( ex5_iflush_int_b(2) );
|
|
u5_iflsh_int3: xu_ex5_flush_int(3) <= not( ex5_iflush_int_b(3) );
|
|
|
|
f_dcd_ex5_flush_int <= xu_ex5_flush_int(0 to 3) ;
|
|
|
|
|
|
|
|
u5_iflsh0: ex5_iflush_b(0) <= not( xu_ex5_flush(0) and ex5_instr_v(0) );
|
|
u5_iflsh1: ex5_iflush_b(1) <= not( xu_ex5_flush(1) and ex5_instr_v(1) );
|
|
u5_iflsh2: ex5_iflush_b(2) <= not( xu_ex5_flush(2) and ex5_instr_v(2) );
|
|
u5_iflsh3: ex5_iflush_b(3) <= not( xu_ex5_flush(3) and ex5_instr_v(3) );
|
|
|
|
u5_iflsh_01: ex5_iflush_01 <= not( ex5_iflush_b(0) and ex5_iflush_b(1) );
|
|
u5_iflsh_23: ex5_iflush_23 <= not( ex5_iflush_b(2) and ex5_iflush_b(3) );
|
|
|
|
u5_iflsh_b: ex5_instr_flush_b <= not( ex5_iflush_01 or ex5_iflush_23 ) ;
|
|
|
|
u5_iflsh: ex5_instr_flush <= not ex5_instr_flush_b ;
|
|
|
|
|
|
|
|
|
|
|
|
ex5_instr_valid(0) <= ex5_instr_v(0) and not xu_ex5_flush(0);
|
|
ex5_instr_valid(1) <= ex5_instr_v(1) and not xu_ex5_flush(1);
|
|
ex5_instr_valid(2) <= ex5_instr_v(2) and not xu_ex5_flush(2);
|
|
ex5_instr_valid(3) <= ex5_instr_v(3) and not xu_ex5_flush(3);
|
|
|
|
ex6_instr_valid_din(0) <= ex5_instr_valid(0) or (perr_sm_l2(2) and ex5_perr_sm_instr_v and perr_tid_enc(0 to 1)="00");
|
|
ex6_instr_valid_din(1) <= ex5_instr_valid(1) or (perr_sm_l2(2) and ex5_perr_sm_instr_v and perr_tid_enc(0 to 1)="01");
|
|
ex6_instr_valid_din(2) <= ex5_instr_valid(2) or (perr_sm_l2(2) and ex5_perr_sm_instr_v and perr_tid_enc(0 to 1)="10");
|
|
ex6_instr_valid_din(3) <= ex5_instr_valid(3) or (perr_sm_l2(2) and ex5_perr_sm_instr_v and perr_tid_enc(0 to 1)="11");
|
|
|
|
ex6_kill_wen_din <= (ex5_kill_wen or not f_pic_ex5_fpr_wr_dis_b) and not (perr_sm_l2(2) and ex5_perr_sm_instr_v);
|
|
|
|
|
|
ex5_instr_bypval(0) <= ex5_instr_v(0) and f_pic_ex5_fpr_wr_dis_b and not ex5_kill_wen;
|
|
ex5_instr_bypval(1) <= ex5_instr_v(1) and f_pic_ex5_fpr_wr_dis_b and not ex5_kill_wen;
|
|
ex5_instr_bypval(2) <= ex5_instr_v(2) and f_pic_ex5_fpr_wr_dis_b and not ex5_kill_wen;
|
|
ex5_instr_bypval(3) <= ex5_instr_v(3) and f_pic_ex5_fpr_wr_dis_b and not ex5_kill_wen;
|
|
|
|
|
|
f_dcd_ex5_frt_tid(0 to 1) <= ex5_instr_tid(0 to 1);
|
|
|
|
ex6_record_din <= ex5_record and not ex5_instr_flush;
|
|
ex6_mcrfs_din <= ex5_mcrfs and not ex5_instr_flush;
|
|
ex6_cr_val_din <= ex5_cr_val and not ex5_instr_flush;
|
|
|
|
|
|
|
|
ex6_ctl: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 16)
|
|
port map (nclk => nclk,
|
|
act => tihi,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(6),
|
|
mpw1_b => mpw1_b(6),
|
|
mpw2_b => mpw2_b(1),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => ex6_ctl_si(0 to 15),
|
|
scout => ex6_ctl_so(0 to 15),
|
|
din(0 to 3) => ex6_instr_valid_din(0 to 3),
|
|
din(4 to 9) => ex5_instr_frt(0 to 5),
|
|
din(10) => ex6_record_din,
|
|
din(11) => ex6_mcrfs_din,
|
|
din(12) => ex5_is_ucode,
|
|
din(13) => ex6_cr_val_din,
|
|
din(14) => ex6_kill_wen_din,
|
|
din(15) => ex5_perr_sm_instr_v,
|
|
dout(0 to 3) => ex6_instr_v(0 to 3),
|
|
dout(4 to 9) => ex6_instr_frt(0 to 5),
|
|
dout(10) => ex6_record,
|
|
dout(11) => ex6_mcrfs,
|
|
dout(12) => ex6_is_ucode,
|
|
dout(13) => ex6_cr_val,
|
|
dout(14) => ex6_kill_wen,
|
|
dout(15) => ex6_is_fixperr
|
|
);
|
|
|
|
ex6_instr_tid(0) <= ex6_instr_v(2) or ex6_instr_v(3);
|
|
ex6_instr_tid(1) <= ex6_instr_v(1) or ex6_instr_v(3);
|
|
|
|
ex6_instr_valid <= or_reduce(ex6_instr_v(0 to 3)) ;
|
|
|
|
f_dcd_ex6_frt_addr(0 to 5) <= ex6_instr_frt(0 to 5);
|
|
f_dcd_ex6_frt_tid(0 to 1) <= ex6_instr_tid(0 to 1);
|
|
f_dcd_ex6_frt_wen <= ex6_instr_valid and not ex6_kill_wen;
|
|
|
|
f_dcd_ex6_cancel <= not ex6_instr_valid;
|
|
|
|
ex6_record_v(0) <= ex6_instr_v(0) and (ex6_record or ex6_mcrfs);
|
|
ex6_record_v(1) <= ex6_instr_v(1) and (ex6_record or ex6_mcrfs);
|
|
ex6_record_v(2) <= ex6_instr_v(2) and (ex6_record or ex6_mcrfs);
|
|
ex6_record_v(3) <= ex6_instr_v(3) and (ex6_record or ex6_mcrfs);
|
|
|
|
|
|
ex6_bf(0 to 2) <= (ex6_instr_frt(1 to 3) and (1 to 3 => ex6_mcrfs)) or
|
|
( "001" and not (1 to 3 => ex6_mcrfs));
|
|
|
|
|
|
|
|
ex7_ctl: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 7)
|
|
port map (nclk => nclk,
|
|
act => tihi,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(7),
|
|
mpw1_b => mpw1_b(7),
|
|
mpw2_b => mpw2_b(1),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => ex7_ctl_si(0 to 6),
|
|
scout => ex7_ctl_so(0 to 6),
|
|
din(0 to 3) => ex6_record_v(0 to 3),
|
|
din(4 to 6) => ex6_bf(0 to 2),
|
|
dout(0 to 3) => ex7_record_v(0 to 3),
|
|
dout(4 to 6) => ex7_bf(0 to 2)
|
|
);
|
|
|
|
|
|
perr_sm: tri_rlmreg_p
|
|
generic map (init => 4, expand_type => expand_type, width => 3)
|
|
port map (nclk => nclk,
|
|
act => tihi,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(9),
|
|
mpw1_b => mpw1_b(9),
|
|
mpw2_b => mpw2_b(1),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => perr_sm_si(0 to 2),
|
|
scout => perr_sm_so(0 to 2),
|
|
din( 0 to 2) => perr_sm_din(0 to 2) ,
|
|
dout( 0 to 2) => perr_sm_l2(0 to 2)
|
|
);
|
|
perr_ctl: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 25)
|
|
port map (nclk => nclk,
|
|
act => msr_fp_act,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(9),
|
|
mpw1_b => mpw1_b(9),
|
|
mpw2_b => mpw2_b(1),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => perr_ctl_si(0 to 24),
|
|
scout => perr_ctl_so(0 to 24),
|
|
din( 0 to 5) => perr_addr_din(0 to 5),
|
|
din( 6 to 9) => perr_tid_din(0 to 3),
|
|
din(10) => perr_move_f0_to_f1,
|
|
din(11) => perr_move_f1_to_f0,
|
|
din(12) => rf0_perr_force_c,
|
|
din(13) => rf1_perr_force_c,
|
|
din(14) => new_perr_sm_instr_v,
|
|
din(15) => rf0_perr_sm_instr_v,
|
|
din(16) => rf1_perr_sm_instr_v,
|
|
din(17) => ex1_perr_sm_instr_v,
|
|
din(18) => ex2_perr_sm_instr_v,
|
|
din(19) => ex3_perr_sm_instr_v,
|
|
din(20) => ex4_perr_sm_instr_v,
|
|
din(21) => xu_fu_regfile_seq_beg,
|
|
din(22) => regfile_seq_end,
|
|
din(23) => rf0_regfile_ue,
|
|
din(24) => rf0_regfile_ce,
|
|
dout( 0 to 5) => perr_addr_l2(0 to 5) ,
|
|
dout( 6 to 9) => perr_tid_l2(0 to 3),
|
|
dout(10) => perr_move_f0_to_f1_l2,
|
|
dout(11) => perr_move_f1_to_f0_l2,
|
|
dout(12) => rf1_perr_force_c,
|
|
dout(13) => ex1_perr_force_c,
|
|
dout(14) => rf0_perr_sm_instr_v,
|
|
dout(15) => rf1_perr_sm_instr_v,
|
|
dout(16) => ex1_perr_sm_instr_v,
|
|
dout(17) => ex2_perr_sm_instr_v,
|
|
dout(18) => ex3_perr_sm_instr_v,
|
|
dout(19) => ex4_perr_sm_instr_v,
|
|
dout(20) => ex5_perr_sm_instr_v,
|
|
dout(21) => regfile_seq_beg,
|
|
dout(22) => fu_xu_regfile_seq_end,
|
|
dout(23) => rf1_regfile_ue,
|
|
dout(24) => rf1_regfile_ce
|
|
);
|
|
|
|
rf0_perr_sm_instr_v_b <= not rf0_perr_sm_instr_v;
|
|
|
|
perr_tid_enc(0) <= perr_tid_l2(2) or perr_tid_l2(3);
|
|
perr_tid_enc(1) <= perr_tid_l2(1) or perr_tid_l2(3);
|
|
|
|
|
|
perr_sm_running <= not perr_sm_l2(0);
|
|
f_dcd_perr_sm_running <= perr_sm_running;
|
|
|
|
perr_sm_ns(0) <= (perr_sm_l2(2) and rf0_regfile_ue) or (perr_sm_l2(2) and ex5_perr_sm_instr_v);
|
|
regfile_seq_end <= perr_sm_ns(0) ;
|
|
|
|
perr_sm_ns(1) <= perr_sm_l2(0) and regfile_seq_beg;
|
|
|
|
perr_sm_ns(2) <= perr_sm_l2(1) and ex5_perr_sm_instr_v;
|
|
|
|
perr_move_f0_to_f1 <= ex2_f1b_perr when (perr_sm_l2(1) and ex2_perr_sm_instr_v) = '1' else
|
|
perr_move_f0_to_f1_l2 ;
|
|
perr_move_f1_to_f0 <= ex2_f0c_perr when (perr_sm_l2(1) and ex2_perr_sm_instr_v) = '1' else
|
|
perr_move_f1_to_f0_l2 ;
|
|
|
|
|
|
rf0_perr_move_f0_to_f1 <= perr_move_f0_to_f1_l2 and (perr_sm_l2(2) and rf0_perr_sm_instr_v);
|
|
rf0_perr_move_f1_to_f0 <= perr_move_f1_to_f0_l2 and (perr_sm_l2(2) and rf0_perr_sm_instr_v);
|
|
|
|
rf0_perr_force_c <= rf0_perr_move_f0_to_f1 and not rf0_perr_move_f1_to_f0;
|
|
|
|
f_dcd_ex1_perr_force_c <= ex1_perr_force_c;
|
|
f_dcd_ex1_perr_fsel_ovrd <= ex1_perr_sm_instr_v and perr_sm_l2(2);
|
|
|
|
perr_sm_din(0 to 2) <= ("100" and (0 to 2 => perr_sm_ns(0))) or
|
|
("010" and (0 to 2 => perr_sm_ns(1))) or
|
|
("001" and (0 to 2 => perr_sm_ns(2))) or
|
|
(perr_sm_l2 and (0 to 2 => not (or_reduce(perr_sm_ns(0 to 2)))));
|
|
|
|
new_perr_sm_instr_v <= perr_sm_ns(1) or perr_sm_ns(2);
|
|
|
|
|
|
perr_addr_din(0 to 5) <= ex2_instr_fra(0 to 5) when (ex2_f0a_perr and ex2_regfile_err_det and perr_sm_l2(0)) = '1' else
|
|
ex2_instr_frb(0 to 5) when (ex2_f1b_perr and ex2_regfile_err_det and perr_sm_l2(0)) = '1' else
|
|
ex2_instr_frc(0 to 5) when (ex2_f0c_perr and ex2_regfile_err_det and perr_sm_l2(0)) = '1' else
|
|
ex2_instr_frs(0 to 5) when (ex2_f1s_perr and ex2_regfile_err_det and perr_sm_l2(0)) = '1' else
|
|
perr_addr_l2(0 to 5);
|
|
|
|
|
|
perr_tid_din(0 to 3) <= (ex2_fpr_perr(0 to 3) and (0 to 3 => ex2_regfile_err_det and perr_sm_l2(0))) or
|
|
(perr_tid_l2(0 to 3) and not (0 to 3 => ex2_regfile_err_det and perr_sm_l2(0)));
|
|
|
|
u_pc_o1: rf0_frc_perr_x_b(0 to 5) <= not( perr_addr_l2 (0 to 5) and (0 to 5 => rf0_perr_sm_instr_v ) );
|
|
u_pc_o2: rf0_frc_iu_x_b(0 to 5) <= not( rf0_instr_frc (0 to 5) and (0 to 5 => rf0_perr_sm_instr_v_b) );
|
|
u_pc_o: f_dcd_rf0_frc(0 to 5) <= not( rf0_frc_perr_x_b(0 to 5) and rf0_frc_iu_x_b(0 to 5) );
|
|
|
|
u_pb_o1: rf0_frb_perr_x_b(0 to 5) <= not( perr_addr_l2 (0 to 5) and (0 to 5 => rf0_perr_sm_instr_v ) );
|
|
u_pb_o2: rf0_frb_iu_x_b(0 to 5) <= not( rf0_instr_frb (0 to 5) and (0 to 5 => rf0_perr_sm_instr_v_b) );
|
|
u_pb_o: f_dcd_rf0_frb(0 to 5) <= not( rf0_frb_perr_x_b(0 to 5) and rf0_frb_iu_x_b(0 to 5) );
|
|
|
|
u_pt_o1: rf0_tid_perr_x_b(0 to 1) <= not( perr_tid_enc (0 to 1) and (0 to 1 => rf0_perr_sm_instr_v ) );
|
|
u_pt_o2: rf0_tid_iu_x_b(0 to 1) <= not( rf0_tid (0 to 1) and (0 to 1 => rf0_perr_sm_instr_v_b) );
|
|
u_pt_o: f_dcd_rf0_tid(0 to 1) <= not( rf0_tid_perr_x_b(0 to 1) and rf0_tid_iu_x_b(0 to 1) );
|
|
|
|
rf0_regfile_ce <= (rf0_perr_move_f0_to_f1 or rf0_perr_move_f1_to_f0) and not (rf0_perr_move_f0_to_f1 and rf0_perr_move_f1_to_f0);
|
|
rf0_regfile_ue <= rf0_perr_move_f0_to_f1 and rf0_perr_move_f1_to_f0;
|
|
|
|
err_regfile_parity(0 to 3) <= perr_tid_l2(0 to 3) and (0 to 3 => rf1_regfile_ce);
|
|
err_regfile_ue(0 to 3) <= perr_tid_l2(0 to 3) and (0 to 3 => rf1_regfile_ue);
|
|
|
|
|
|
fu_err_rpt : entity tri.tri_direct_err_rpt(tri_direct_err_rpt)
|
|
generic map (width => 8, expand_type => expand_type)
|
|
port map (vd => vdd, gd => gnd,
|
|
err_in(0) => err_regfile_parity(0),
|
|
err_in(1) => err_regfile_parity(1),
|
|
err_in(2) => err_regfile_parity(2),
|
|
err_in(3) => err_regfile_parity(3),
|
|
err_in(4) => err_regfile_ue(0),
|
|
err_in(5) => err_regfile_ue(1),
|
|
err_in(6) => err_regfile_ue(2),
|
|
err_in(7) => err_regfile_ue(3),
|
|
err_out(0) => fu_pc_err_regfile_parity(0),
|
|
err_out(1) => fu_pc_err_regfile_parity(1),
|
|
err_out(2) => fu_pc_err_regfile_parity(2),
|
|
err_out(3) => fu_pc_err_regfile_parity(3),
|
|
err_out(4) => fu_pc_err_regfile_ue(0),
|
|
err_out(5) => fu_pc_err_regfile_ue(1),
|
|
err_out(6) => fu_pc_err_regfile_ue(2),
|
|
err_out(7) => fu_pc_err_regfile_ue(3) );
|
|
|
|
|
|
|
|
|
|
ucode_hooks : entity work.fuq_dcd_uc_hooks
|
|
generic map(expand_type => expand_type)
|
|
port map(
|
|
nclk => nclk,
|
|
thold_0_b => thold_0_b,
|
|
sg_0 => sg_0,
|
|
f_ucode_si => f_ucode_si,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(9),
|
|
mpw1_b => mpw1_b(9),
|
|
mpw2_b => mpw2_b(1),
|
|
vdd => vdd,
|
|
gnd => gnd,
|
|
msr_fp_act => msr_fp_act,
|
|
perr_sm_running => perr_sm_running,
|
|
iu_fu_rf0_instr_v => iu_fu_rf0_instr_v,
|
|
iu_fu_rf0_instr => iu_fu_rf0_instr,
|
|
ucode_mode_rf0 => iu_fu_rf0_is_ucode,
|
|
iu_fu_rf0_ucfmul => iu_fu_rf0_ucfmul,
|
|
f_mad_ex3_uc_round_mode => f_mad_ex3_uc_round_mode,
|
|
rf0_instr_fra => rf0_instr_fra,
|
|
f_dcd_rf0_fra => f_dcd_rf0_fra,
|
|
iu_fu_rf0_ifar => iu_fu_rf0_ifar(58 to 61),
|
|
thread_id_rf0 => thread_id_rf0,
|
|
xu_rf0_flush => xu_rf0_flush,
|
|
xu_rf1_flush => xu_rf1_flush,
|
|
xu_ex1_flush => xu_ex1_flush,
|
|
xu_ex2_flush => xu_ex2_flush,
|
|
xu_ex3_flush => xu_ex3_flush,
|
|
xu_ex4_flush => xu_ex4_flush,
|
|
xu_ex5_flush => xu_ex5_flush,
|
|
f_mad_ex3_uc_res_sign => f_mad_ex3_uc_res_sign,
|
|
f_mad_ex6_uc_sign => f_mad_ex6_uc_sign,
|
|
f_mad_ex6_uc_zero => f_mad_ex6_uc_zero,
|
|
f_mad_ex3_uc_special => f_mad_ex3_uc_special,
|
|
f_mad_ex3_uc_vxsnan => f_mad_ex3_uc_vxsnan,
|
|
f_mad_ex3_uc_zx => f_mad_ex3_uc_zx,
|
|
f_mad_ex3_uc_vxidi => f_mad_ex3_uc_vxidi,
|
|
f_mad_ex3_uc_vxzdz => f_mad_ex3_uc_vxzdz,
|
|
f_mad_ex3_uc_vxsqrt => f_mad_ex3_uc_vxsqrt,
|
|
f_dcd_rf1_div_beg => rf1_div_beg,
|
|
f_dcd_rf1_sqrt_beg => rf1_sqrt_beg,
|
|
f_dcd_rf1_uc_mid => f_dcd_rf1_uc_mid,
|
|
f_dcd_rf1_uc_end => rf1_uc_end,
|
|
ex4_uc_special => ex4_uc_special,
|
|
f_dcd_rf1_uc_special => f_dcd_rf1_uc_special,
|
|
f_dcd_rf1_uc_ft_pos => f_dcd_rf1_uc_ft_pos,
|
|
f_dcd_rf1_uc_ft_neg => f_dcd_rf1_uc_ft_neg,
|
|
f_dcd_rf1_uc_fa_pos => f_dcd_rf1_uc_fa_pos,
|
|
f_dcd_rf1_uc_fc_pos => f_dcd_rf1_uc_fc_pos,
|
|
f_dcd_rf1_uc_fb_pos => f_dcd_rf1_uc_fb_pos,
|
|
f_dcd_rf1_uc_fc_hulp => f_dcd_rf1_uc_fc_hulp,
|
|
f_dcd_rf1_uc_fc_0_5 => f_dcd_rf1_uc_fc_0_5,
|
|
f_dcd_rf1_uc_fc_1_0 => f_dcd_rf1_uc_fc_1_0,
|
|
f_dcd_rf1_uc_fc_1_minus => f_dcd_rf1_uc_fc_1_minus,
|
|
f_dcd_rf1_uc_fb_1_0 => f_dcd_rf1_uc_fb_1_0,
|
|
f_dcd_rf1_uc_fb_0_75 => f_dcd_rf1_uc_fb_0_75,
|
|
f_dcd_rf1_uc_fb_0_5 => f_dcd_rf1_uc_fb_0_5 ,
|
|
f_dcd_rf1_uc_fa_dis_par => f_dcd_rf1_uc_fa_dis_par,
|
|
f_dcd_rf1_uc_fb_dis_par => f_dcd_rf1_uc_fb_dis_par,
|
|
f_dcd_rf1_uc_fc_dis_par => f_dcd_rf1_uc_fc_dis_par,
|
|
uc_op_rnd_v_rf1 => rf1_uc_op_rnd_v,
|
|
uc_op_rnd_rf1 => rf1_uc_op_rnd,
|
|
f_dcd_ex2_uc_inc_lsb => f_dcd_ex2_uc_inc_lsb,
|
|
f_dcd_ex2_uc_gs_v => f_dcd_ex2_uc_gs_v ,
|
|
f_dcd_ex2_uc_gs => f_dcd_ex2_uc_gs ,
|
|
f_dcd_ex2_uc_vxsnan => f_dcd_ex2_uc_vxsnan,
|
|
f_dcd_ex2_uc_zx => f_dcd_ex2_uc_zx ,
|
|
f_dcd_ex2_uc_vxidi => f_dcd_ex2_uc_vxidi ,
|
|
f_dcd_ex2_uc_vxzdz => f_dcd_ex2_uc_vxzdz ,
|
|
f_dcd_ex2_uc_vxsqrt => f_dcd_ex2_uc_vxsqrt ,
|
|
uc_hooks_rc_rf0 => uc_hooks_rc_rf0,
|
|
evnt_div_sqrt_ip => evnt_div_sqrt_ip,
|
|
uc_hooks_debug => uc_hooks_debug,
|
|
f_ucode_so => f_ucode_so
|
|
);
|
|
|
|
rf1_divsqrt_beg <= rf1_div_beg or rf1_sqrt_beg;
|
|
|
|
f_dcd_rf1_div_beg <= rf1_div_beg;
|
|
f_dcd_rf1_sqrt_beg <= rf1_sqrt_beg;
|
|
f_dcd_rf1_uc_end <= rf1_uc_end;
|
|
|
|
fu_iu_uc_special(0 to 3) <= (0 to 3 => tilo);
|
|
|
|
|
|
spr_ctl: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 15)
|
|
port map (nclk => nclk,
|
|
act => tihi,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(9),
|
|
mpw1_b => mpw1_b(9),
|
|
mpw2_b => mpw2_b(1),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => spr_ctl_si(0 to 14),
|
|
scout => spr_ctl_so(0 to 14),
|
|
din(0) => slowspr_in_val,
|
|
din(1) => slowspr_in_rw,
|
|
din(2 to 3) => slowspr_in_etid(0 to 1),
|
|
din(4 to 13) => slowspr_in_addr(0 to 9),
|
|
din(14) => slowspr_in_done,
|
|
dout(0) => slowspr_out_val,
|
|
dout(1) => slowspr_out_rw,
|
|
dout(2 to 3) => slowspr_out_etid(0 to 1),
|
|
dout(4 to 13) => slowspr_out_addr(0 to 9),
|
|
dout(14) => slowspr_out_done
|
|
);
|
|
spr_data: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 2**regmode)
|
|
port map (nclk => nclk,
|
|
act => tihi,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(9),
|
|
mpw1_b => mpw1_b(9),
|
|
mpw2_b => mpw2_b(1),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => spr_data_si(64-(2**regmode) to 63),
|
|
scout => spr_data_so(64-(2**regmode) to 63),
|
|
din => slowspr_in_data,
|
|
dout => slowspr_out_data
|
|
);
|
|
|
|
axucr0_lat: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 3)
|
|
port map (nclk => nclk,
|
|
act => tihi,
|
|
forcee => cfg_sl_force,
|
|
delay_lclkr => delay_lclkr(9),
|
|
mpw1_b => mpw1_b(9),
|
|
mpw2_b => mpw2_b(1),
|
|
thold_b => cfg_sl_thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => axucr0_lat_si(0 to 2),
|
|
scout => axucr0_lat_so(0 to 2),
|
|
din(0 to 2) => axucr0_din(61 to 63),
|
|
dout(0 to 2) => axucr0_q(61 to 63)
|
|
);
|
|
lcbs_cfg: tri_lcbs
|
|
generic map (expand_type => expand_type )
|
|
port map (
|
|
vd => vdd,
|
|
gd => gnd,
|
|
delay_lclkr => delay_lclkr(9),
|
|
nclk => nclk,
|
|
forcee => cfg_sl_force,
|
|
thold_b => cfg_sl_thold_0_b,
|
|
dclk => cfg_slat_d2clk,
|
|
lclk => cfg_slat_lclk );
|
|
|
|
cfg_stg: tri_slat_scan
|
|
generic map (width => 2, init => "00", expand_type => expand_type)
|
|
port map ( vd => vdd,
|
|
gd => gnd,
|
|
dclk => cfg_slat_d2clk,
|
|
lclk => cfg_slat_lclk,
|
|
scan_in(0) => ccfg_scan_in,
|
|
scan_in(1) => bcfg_scan_in,
|
|
scan_out(0) => ccfg_scan_out,
|
|
scan_out(1) => bcfg_scan_out );
|
|
|
|
|
|
f_dcd_rf1_force_excp_dis <= axucr0_q(61);
|
|
f_dcd_rf1_nj_deni <= axucr0_q(62);
|
|
f_dcd_rf1_nj_deno <= axucr0_q(63);
|
|
|
|
slowspr_in_val <= slowspr_val_in ;
|
|
slowspr_in_rw <= slowspr_rw_in ;
|
|
slowspr_in_etid <= slowspr_etid_in ;
|
|
slowspr_in_addr <= slowspr_addr_in ;
|
|
slowspr_in_data <= slowspr_data_in ;
|
|
slowspr_in_done <= slowspr_done_in ;
|
|
|
|
axucr0_dec <= slowspr_out_addr(0 to 9) = "1111010000";
|
|
axucr0_rd <= slowspr_out_val and axucr0_dec and slowspr_out_rw;
|
|
axucr0_wr <= slowspr_out_val and axucr0_dec and not slowspr_out_rw;
|
|
|
|
axucr0_din(61 to 63) <= (slowspr_out_data(61 to 63) and (61 to 63 => axucr0_wr)) or
|
|
(axucr0_q(61 to 63) and not (61 to 63 => axucr0_wr));
|
|
|
|
slowspr_data_out(64-(2**regmode) to 60) <= slowspr_out_data(64-(2**regmode) to 60);
|
|
|
|
slowspr_data_out(61 to 63) <= (axucr0_q(61 to 63) and (61 to 63 => axucr0_rd)) or
|
|
(slowspr_out_data(61 to 63) and not (61 to 63 => axucr0_rd));
|
|
|
|
slowspr_val_out <= slowspr_out_val ;
|
|
slowspr_rw_out <= slowspr_out_rw ;
|
|
slowspr_etid_out <= slowspr_out_etid ;
|
|
slowspr_addr_out <= slowspr_out_addr ;
|
|
slowspr_done_out <= slowspr_out_done or axucr0_rd or axucr0_wr ;
|
|
|
|
|
|
|
|
ex6_ram_sign <= f_rnd_ex6_res_sign;
|
|
ex6_ram_frac(0 to 52) <= f_rnd_ex6_res_frac(0 to 52);
|
|
ex6_ram_expo(3 to 13) <= f_rnd_ex6_res_expo(3 to 13);
|
|
|
|
ex6_ram_done <= pc_fu_ram_mode and ex6_instr_valid and (pc_fu_ram_thread(0 to 1) = ex6_instr_tid(0 to 1))
|
|
and not ex6_is_ucode
|
|
and not ex6_is_fixperr;
|
|
|
|
ex7_ram_lat: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 65)
|
|
port map (nclk => nclk,
|
|
act => ex6_instr_valid,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(9),
|
|
mpw1_b => mpw1_b(9),
|
|
mpw2_b => mpw2_b(1),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => ram_data_si(0 to 64),
|
|
scout => ram_data_so(0 to 64),
|
|
din(0) => ex6_ram_sign,
|
|
din(1 to 11) => ex6_ram_expo(3 to 13),
|
|
din(12 to 64) => ex6_ram_frac(0 to 52),
|
|
dout(0) => ex7_ram_sign,
|
|
dout(1 to 11) => ex7_ram_expo(3 to 13),
|
|
dout(12 to 64) => ex7_ram_frac(0 to 52)
|
|
);
|
|
ex7_ramv_lat: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 1)
|
|
port map (nclk => nclk,
|
|
act => tihi,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(9),
|
|
mpw1_b => mpw1_b(9),
|
|
mpw2_b => mpw2_b(1),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin(0) => ram_datav_si(0),
|
|
scout(0) => ram_datav_so(0),
|
|
din(0) => ex6_ram_done,
|
|
dout(0) => ex7_ram_done
|
|
);
|
|
|
|
ex7_ram_data( 0) <= ex7_ram_sign;
|
|
ex7_ram_data( 1 to 11) <= ex7_ram_expo(3 to 13) and (3 to 13 => ex7_ram_frac(0));
|
|
ex7_ram_data(12 to 63) <= ex7_ram_frac(1 to 52);
|
|
|
|
fu_pc_ram_done <= ex7_ram_done;
|
|
fu_pc_ram_data(0 to 63) <= ex7_ram_data(0 to 63);
|
|
|
|
|
|
evnt_axu_instr_cmt(0) <= ex6_instr_valid and (ex6_instr_tid(0 to 1) = "00") and not ex6_is_ucode and not ex6_is_fixperr;
|
|
evnt_axu_instr_cmt(1) <= ex6_instr_valid and (ex6_instr_tid(0 to 1) = "01") and not ex6_is_ucode and not ex6_is_fixperr;
|
|
evnt_axu_instr_cmt(2) <= ex6_instr_valid and (ex6_instr_tid(0 to 1) = "10") and not ex6_is_ucode and not ex6_is_fixperr;
|
|
evnt_axu_instr_cmt(3) <= ex6_instr_valid and (ex6_instr_tid(0 to 1) = "11") and not ex6_is_ucode and not ex6_is_fixperr;
|
|
|
|
evnt_axu_cr_cmt(0) <= ex6_instr_valid and (ex6_instr_tid(0 to 1) = "00") and (ex6_cr_val or ex6_record or ex6_mcrfs);
|
|
evnt_axu_cr_cmt(1) <= ex6_instr_valid and (ex6_instr_tid(0 to 1) = "01") and (ex6_cr_val or ex6_record or ex6_mcrfs);
|
|
evnt_axu_cr_cmt(2) <= ex6_instr_valid and (ex6_instr_tid(0 to 1) = "10") and (ex6_cr_val or ex6_record or ex6_mcrfs);
|
|
evnt_axu_cr_cmt(3) <= ex6_instr_valid and (ex6_instr_tid(0 to 1) = "11") and (ex6_cr_val or ex6_record or ex6_mcrfs);
|
|
|
|
evnt_axu_idle(0) <= (ex6_instr_tid(0 to 1) = "00") and not (ex6_instr_valid or ex6_cr_val or ex6_record or ex6_mcrfs);
|
|
evnt_axu_idle(1) <= (ex6_instr_tid(0 to 1) = "01") and not (ex6_instr_valid or ex6_cr_val or ex6_record or ex6_mcrfs);
|
|
evnt_axu_idle(2) <= (ex6_instr_tid(0 to 1) = "10") and not (ex6_instr_valid or ex6_cr_val or ex6_record or ex6_mcrfs);
|
|
evnt_axu_idle(3) <= (ex6_instr_tid(0 to 1) = "11") and not (ex6_instr_valid or ex6_cr_val or ex6_record or ex6_mcrfs);
|
|
|
|
evnt_denrm_flush(0) <= (ex4_instr_tid(0 to 1) = "00") and ex4_b_den_flush;
|
|
evnt_denrm_flush(1) <= (ex4_instr_tid(0 to 1) = "01") and ex4_b_den_flush;
|
|
evnt_denrm_flush(2) <= (ex4_instr_tid(0 to 1) = "10") and ex4_b_den_flush;
|
|
evnt_denrm_flush(3) <= (ex4_instr_tid(0 to 1) = "11") and ex4_b_den_flush;
|
|
|
|
evnt_uc_instr_cmt(0) <= ex6_instr_valid and (ex6_instr_tid(0 to 1) = "00") and ex6_is_ucode;
|
|
evnt_uc_instr_cmt(1) <= ex6_instr_valid and (ex6_instr_tid(0 to 1) = "01") and ex6_is_ucode;
|
|
evnt_uc_instr_cmt(2) <= ex6_instr_valid and (ex6_instr_tid(0 to 1) = "10") and ex6_is_ucode;
|
|
evnt_uc_instr_cmt(3) <= ex6_instr_valid and (ex6_instr_tid(0 to 1) = "11") and ex6_is_ucode;
|
|
|
|
evnt_fpu_fx(0 to 3) <= f_scr_ex7_fx_thread0(0) & f_scr_ex7_fx_thread1(0) & f_scr_ex7_fx_thread2(0) & f_scr_ex7_fx_thread3(0) ;
|
|
evnt_fpu_fex(0 to 3) <= f_scr_ex7_fx_thread0(1) & f_scr_ex7_fx_thread1(1) & f_scr_ex7_fx_thread2(1) & f_scr_ex7_fx_thread3(1) ;
|
|
|
|
t0_events_in(0 to 7) <= evnt_axu_instr_cmt(0) & evnt_axu_cr_cmt(0) & evnt_axu_idle(0) & evnt_div_sqrt_ip(0) &
|
|
evnt_denrm_flush(0) & evnt_uc_instr_cmt(0) & evnt_fpu_fx(0) & evnt_fpu_fex(0);
|
|
t1_events_in(0 to 7) <= evnt_axu_instr_cmt(1) & evnt_axu_cr_cmt(1) & evnt_axu_idle(1) & evnt_div_sqrt_ip(1) &
|
|
evnt_denrm_flush(1) & evnt_uc_instr_cmt(1) & evnt_fpu_fx(1) & evnt_fpu_fex(1);
|
|
t2_events_in(0 to 7) <= evnt_axu_instr_cmt(2) & evnt_axu_cr_cmt(2) & evnt_axu_idle(2) & evnt_div_sqrt_ip(2) &
|
|
evnt_denrm_flush(2) & evnt_uc_instr_cmt(2) & evnt_fpu_fx(2) & evnt_fpu_fex(2);
|
|
t3_events_in(0 to 7) <= evnt_axu_instr_cmt(3) & evnt_axu_cr_cmt(3) & evnt_axu_idle(3) & evnt_div_sqrt_ip(3) &
|
|
evnt_denrm_flush(3) & evnt_uc_instr_cmt(3) & evnt_fpu_fx(3) & evnt_fpu_fex(3);
|
|
|
|
event_en_d <= ( msr_pr_q and (0 to 3=> event_count_mode_q(0))) or
|
|
(not msr_pr_q and msr_gs_q and (0 to 3=> event_count_mode_q(1))) or
|
|
(not msr_pr_q and not msr_gs_q and (0 to 3=> event_count_mode_q(2)));
|
|
|
|
t0_events <= t0_events_in and (0 to 7 =>event_en_q(0));
|
|
t1_events <= t1_events_in and (0 to 7 =>event_en_q(1));
|
|
t2_events <= t2_events_in and (0 to 7 =>event_en_q(2));
|
|
t3_events <= t3_events_in and (0 to 7 =>event_en_q(3));
|
|
|
|
|
|
event_mux: entity clib.c_event_mux
|
|
generic map ( events_in => 32 )
|
|
port map(
|
|
vd => vdd ,
|
|
gd => gnd ,
|
|
t0_events => t0_events,
|
|
t1_events => t1_events,
|
|
t2_events => t2_events,
|
|
t3_events => t3_events,
|
|
|
|
select_bits => pc_fu_event_mux_ctrls,
|
|
event_bits => event_data_d
|
|
);
|
|
|
|
perf_data: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 39)
|
|
port map (nclk => nclk,
|
|
act => event_act,
|
|
forcee => func_slp_sl_force,
|
|
delay_lclkr => delay_lclkr(9),
|
|
mpw1_b => mpw1_b(9),
|
|
mpw2_b => mpw2_b(1),
|
|
thold_b => func_slp_sl_thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => perf_data_si(0 to 38),
|
|
scout => perf_data_so(0 to 38),
|
|
din( 0 to 7) => event_data_d(0 to 7),
|
|
din( 8 to 11) => event_en_d(0 to 3),
|
|
din(12) => ex4_b_den_flush_din,
|
|
din(13 to 15) => pc_fu_event_count_mode(0 to 2),
|
|
din(16 to 19) => xu_fu_msr_pr(0 to 3),
|
|
din(20 to 23) => xu_fu_msr_gs(0 to 3),
|
|
din(24) => pc_fu_instr_trace_mode,
|
|
din(25 to 26) => pc_fu_instr_trace_tid(0 to 1),
|
|
din(27 to 30) => rf0_instr_tid_1hot(0 to 3),
|
|
din(31 to 34) => rf1_instr_iss(0 to 3),
|
|
din(35 to 38) => ex1_instr_iss(0 to 3),
|
|
|
|
dout( 0 to 7) => event_data_q(0 to 7),
|
|
dout( 8 to 11) => event_en_q(0 to 3),
|
|
dout(12) => ex4_b_den_flush,
|
|
dout(13 to 15) => event_count_mode_q(0 to 2),
|
|
dout(16 to 19) => msr_pr_q(0 to 3),
|
|
dout(20 to 23) => msr_gs_q(0 to 3),
|
|
dout(24) => instr_trace_mode_q,
|
|
dout(25 to 26) => instr_trace_tid_q(0 to 1),
|
|
dout(27 to 30) => rf1_instr_iss(0 to 3),
|
|
dout(31 to 34) => ex1_instr_iss(0 to 3),
|
|
dout(35 to 38) => ex2_instr_iss(0 to 3)
|
|
);
|
|
|
|
|
|
|
|
trace_data_in(0 to 87) <= debug_data_in(0 to 87);
|
|
trigger_data_in(0 to 11) <= trace_triggers_in(0 to 11);
|
|
|
|
dbg_group0 ( 0 to 63) <= ex7_ram_data(0 to 63);
|
|
dbg_group0 (64 to 87) <= ex7_ram_expo(3 to 13) & ex7_ram_frac(0) & ex7_ram_done & (0 to 10 => '0');
|
|
|
|
dbg_group1 (0 to 87) <= uc_hooks_debug(0 to 55) & (56 to 87 => '0');
|
|
|
|
dbg_group2 (0 to 31) <= rf1_instr(0 to 31) and not (0 to 31 => instr_trace_mode_q and (instr_trace_tid_q(0 to 1) /= rf1_tid(0 to 1)));
|
|
|
|
dbg_group2 (32 to 35) <= (f_scr_ex7_fx_thread0(0 to 3) and not (0 to 3 => instr_trace_mode_q));
|
|
dbg_group2 (36 to 39) <= (f_scr_ex7_fx_thread1(0 to 3) and not (0 to 3 => instr_trace_mode_q)) or ("1010" and (0 to 3 => instr_trace_mode_q));
|
|
dbg_group2 (40 to 43) <= (f_scr_ex7_fx_thread2(0 to 3) and not (0 to 3 => instr_trace_mode_q)) or ("1011" and (0 to 3 => instr_trace_mode_q));
|
|
dbg_group2 (44 to 47) <= (f_scr_ex7_fx_thread3(0 to 3) and not (0 to 3 => instr_trace_mode_q)) or ("1100" and (0 to 3 => instr_trace_mode_q));
|
|
dbg_group2 (48 to 51) <= (ex4_eff_addr(59 to 62) and not (0 to 3 => instr_trace_mode_q)) or ("1101" and (0 to 3 => instr_trace_mode_q));
|
|
dbg_group2 (52 to 55) <= ((ex4_eff_addr(63) &perr_sm_l2(0 to 2)) and not (0 to 3 => instr_trace_mode_q)) or ("1110" and (0 to 3 => instr_trace_mode_q));
|
|
dbg_group2 (56 to 61) <= perr_addr_l2(0 to 5) and not (0 to 5 => instr_trace_mode_q);
|
|
dbg_group2 (62 to 65) <= perr_tid_l2(0 to 3) and not (0 to 3 => instr_trace_mode_q);
|
|
dbg_group2 (66) <= rf0_perr_move_f0_to_f1 and not instr_trace_mode_q ;
|
|
dbg_group2 (67) <= rf0_perr_move_f1_to_f0 and not instr_trace_mode_q ;
|
|
dbg_group2 (68) <= rf1_regfile_ce and not instr_trace_mode_q ;
|
|
dbg_group2 (69) <= rf1_regfile_ue and not instr_trace_mode_q ;
|
|
dbg_group2 (70 to 87) <= (70 to 87=> tilo);
|
|
|
|
dbg_group3 (0) <= rf1_regfile_ce;
|
|
dbg_group3 (1) <= rf1_regfile_ue;
|
|
dbg_group3 (2) <= rf1_bypsel_a_res0;
|
|
dbg_group3 (3) <= rf1_bypsel_c_res0;
|
|
dbg_group3 (4) <= rf1_bypsel_b_res0;
|
|
dbg_group3 (5) <= rf1_bypsel_a_res1;
|
|
dbg_group3 (6) <= rf1_bypsel_c_res1;
|
|
dbg_group3 (7) <= rf1_bypsel_b_res1;
|
|
dbg_group3 (8) <= rf1_bypsel_a_load0;
|
|
dbg_group3 (9) <= rf1_bypsel_c_load0;
|
|
dbg_group3 (10) <= rf1_bypsel_b_load0;
|
|
dbg_group3 (11) <= rf1_bypsel_a_load1;
|
|
dbg_group3 (12) <= rf1_bypsel_c_load1;
|
|
dbg_group3 (13) <= rf1_bypsel_b_load1;
|
|
dbg_group3 (14) <= rf1_frs_byp;
|
|
dbg_group3 (15) <= rf1_v;
|
|
dbg_group3 (16 to 31) <= (16 to 31 => '0');
|
|
dbg_group3 (32 to 63) <= t0_events(0 to 7) & t1_events(0 to 7) & t2_events(0 to 7) & t3_events(0 to 7) ;
|
|
dbg_group3 (64 to 87) <= (64 to 87=> tilo);
|
|
|
|
trg_group0 ( 0 to 3) <= evnt_fpu_fx(0 to 3);
|
|
trg_group0 ( 4 to 7) <= evnt_fpu_fex(0 to 3);
|
|
trg_group0 ( 8) <= ex6_instr_valid;
|
|
trg_group0 ( 9) <= ex6_is_ucode;
|
|
trg_group0 (10 to 11) <= ex6_instr_tid(0 to 1);
|
|
|
|
trg_group1 ( 0 to 2) <= perr_sm_l2(0 to 2);
|
|
trg_group1 ( 3) <= rf1_regfile_ce;
|
|
trg_group1 ( 4) <= rf1_regfile_ue;
|
|
trg_group1 ( 5) <= ex6_instr_valid;
|
|
trg_group1 ( 6 to 7) <= ex6_instr_tid(0 to 1);
|
|
trg_group1 ( 8) <= ex3_instr_match;
|
|
trg_group1 ( 9) <= ex6_record;
|
|
trg_group1 (10) <= ex6_mcrfs;
|
|
trg_group1 (11) <= ex4_b_den_flush;
|
|
|
|
trg_group2 ( 0 to 11) <= uc_hooks_debug( 0 to 11);
|
|
trg_group3 ( 0 to 11) <= uc_hooks_debug(16 to 27);
|
|
|
|
|
|
debug_mux_ctrls_muxed(0 to 15) <= debug_mux_ctrls_q(0 to 15) when instr_trace_mode_q = '0' else
|
|
("10" & "000" & "00" & "1111" & "00" & '0' & "11");
|
|
|
|
dbgmux: entity clib.c_debug_mux4
|
|
port map(
|
|
vd => vdd ,
|
|
gd => gnd ,
|
|
select_bits => debug_mux_ctrls_muxed ,
|
|
trace_data_in => trace_data_in ,
|
|
trigger_data_in => trigger_data_in ,
|
|
dbg_group0 => dbg_group0 ,
|
|
dbg_group1 => dbg_group1 ,
|
|
dbg_group2 => dbg_group2 ,
|
|
dbg_group3 => dbg_group3 ,
|
|
trg_group0 => trg_group0 ,
|
|
trg_group1 => trg_group1 ,
|
|
trg_group2 => trg_group2 ,
|
|
trg_group3 => trg_group3 ,
|
|
trace_data_out => trace_data_out ,
|
|
trigger_data_out => trigger_data_out );
|
|
|
|
|
|
|
|
debug_data_d(0 to 87) <= trace_data_out(0 to 87);
|
|
debug_trig_d(0 to 11) <= trigger_data_out(0 to 11);
|
|
ex4_b_den_flush_din <= ex3_b_den_flush and or_reduce(ex3_instr_v(0 to 3));
|
|
|
|
dbg0_data: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 116)
|
|
port map (nclk => nclk,
|
|
act => dbg0_act,
|
|
forcee => func_slp_sl_force,
|
|
delay_lclkr => delay_lclkr(9),
|
|
mpw1_b => mpw1_b(9),
|
|
mpw2_b => mpw2_b(1),
|
|
thold_b => func_slp_sl_thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => dbg0_data_si(0 to 115),
|
|
scout => dbg0_data_so(0 to 115),
|
|
din(0 to 87) => debug_data_d(0 to 87),
|
|
din(88 to 99) => debug_trig_d(0 to 11),
|
|
din(100 to 115) => pc_fu_debug_mux_ctrls(0 to 15),
|
|
dout( 0 to 87) => debug_data_q(0 to 87),
|
|
dout(88 to 99) => debug_trig_q(0 to 11),
|
|
dout(100 to 115) => debug_mux_ctrls_q(0 to 15)
|
|
);
|
|
dbg1_data: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 5)
|
|
port map (nclk => nclk,
|
|
act => tihi,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(9),
|
|
mpw1_b => mpw1_b(9),
|
|
mpw2_b => mpw2_b(1),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => dbg1_data_si(0 to 4),
|
|
scout => dbg1_data_so(0 to 4),
|
|
din( 0 to 4) => xu_fu_ex3_eff_addr(59 to 63),
|
|
dout( 0 to 4) => ex4_eff_addr(59 to 63)
|
|
);
|
|
|
|
debug_data_out(0 to 87) <= debug_data_q(0 to 87);
|
|
trace_triggers_out(0 to 11) <= debug_trig_q(0 to 11);
|
|
fu_pc_event_data(0 to 7) <= event_data_q(0 to 7);
|
|
|
|
|
|
|
|
spare_lat: tri_rlmreg_p
|
|
generic map (init => 0, expand_type => expand_type, width => 24)
|
|
port map (nclk => nclk,
|
|
act => tihi,
|
|
forcee => forcee,
|
|
delay_lclkr => delay_lclkr(9),
|
|
mpw1_b => mpw1_b(9),
|
|
mpw2_b => mpw2_b(1),
|
|
thold_b => thold_0_b,
|
|
sg => sg_0,
|
|
vd => vdd,
|
|
gd => gnd,
|
|
scin => spare_si(0 to 23),
|
|
scout => spare_so(0 to 23),
|
|
din( 0 to 23) => SPARE_L2(0 to 23) ,
|
|
dout( 0 to 23) => SPARE_L2(0 to 23)
|
|
);
|
|
|
|
|
|
spare_unused( 0) <= iu_fu_rf0_ldst_tag(2);
|
|
spare_unused( 1) <= iu_fu_rf0_frt(0);
|
|
spare_unused( 2) <= iu_fu_rf0_fra(0);
|
|
spare_unused( 3) <= iu_fu_rf0_frb(0);
|
|
spare_unused( 4) <= iu_fu_rf0_frc(0);
|
|
spare_unused( 5 to 8) <= xu_is2_flush(0 to 3);
|
|
spare_unused( 9 to 10) <= f_rnd_ex6_res_expo(1 to 2);
|
|
|
|
|
|
rf1_iu_si (0 to 14) <= rf1_iu_so (1 to 14) & f_dcd_si;
|
|
act_lat_si (0 to 2) <= act_lat_so (1 to 2) & rf1_iu_so (0);
|
|
rf0_thread_si(0 to 3) <= rf0_thread_so(1 to 3) & act_lat_so (0);
|
|
rf1_frt_si (0 to 31) <= rf1_frt_so (1 to 31) & rf0_thread_so(0);
|
|
rf1_ifr_si (62-eff_ifar to 61) <= rf1_ifr_so(63-eff_ifar to 61) & rf1_frt_so (0);
|
|
rf1_instl_si (0 to 31) <= rf1_instl_so (1 to 31) & rf1_ifr_so (62-eff_ifar);
|
|
rf1_byp_si (0 to 11) <= rf1_byp_so (1 to 11) & rf1_instl_so(0);
|
|
ex1_ctl_si (0 to 7) <= ex1_ctl_so (1 to 7) & rf1_byp_so (0);
|
|
ex1_frt_si (0 to 17) <= ex1_frt_so (1 to 17) & ex1_ctl_so (0);
|
|
ex1_perr_si (0 to 23) <= ex1_perr_so (1 to 23) & ex1_frt_so (0);
|
|
ex1_ifar_si (62-eff_ifar to 61) <= ex1_ifar_so(63-eff_ifar to 61) & ex1_perr_so (0);
|
|
ex2_ctl_si (0 to 15) <= ex2_ctl_so (1 to 15) & ex1_ifar_so(62-eff_ifar);
|
|
ex2_ctlng_si (0 to 16) <= ex2_ctlng_so (1 to 16) & ex2_ctl_so (0);
|
|
ex2_perr_si (0 to 23) <= ex2_perr_so (1 to 23) & ex2_ctlng_so(0);
|
|
ex2_stdv_si <= ex2_perr_so (0) ;
|
|
ex3_ctlng_si (0 to 15) <= ex3_ctlng_so(1 to 15) & ex2_stdv_so;
|
|
ex3_ctl_si (0 to 12) <= ex3_ctl_so (1 to 12) & ex3_ctlng_so(0);
|
|
ex4_ctl_si (0 to 15) <= ex4_ctl_so (1 to 15) & ex3_ctl_so (0);
|
|
ex5_ctl_si (0 to 14) <= ex5_ctl_so (1 to 14) & ex4_ctl_so (0);
|
|
ex6_ctl_si (0 to 15) <= ex6_ctl_so (1 to 15) & ex5_ctl_so (0);
|
|
ex7_ctl_si (0 to 6) <= ex7_ctl_so (1 to 6) & ex6_ctl_so (0);
|
|
perr_sm_si (0 to 2) <= perr_sm_so (1 to 2) & ex7_ctl_so (0);
|
|
perr_ctl_si (0 to 24) <= perr_ctl_so (1 to 24) & perr_sm_so (0);
|
|
spr_ctl_si (0 to 14) <= spr_ctl_so (1 to 14) & perr_ctl_so(0);
|
|
spr_data_si (64-(2**regmode) to 63) <= spr_data_so(65-(2**regmode) to 63) & spr_ctl_so (0);
|
|
ram_data_si (0 to 64) <= ram_data_so (1 to 64) & spr_data_so(64-(2**regmode));
|
|
ram_datav_si(0) <= ram_data_so(0);
|
|
perf_data_si (0 to 38) <= perf_data_so(1 to 38) & ram_datav_so(0);
|
|
dbg0_data_si (0 to 115) <= dbg0_data_so(1 to 115) & perf_data_so(0);
|
|
dbg1_data_si (0 to 4) <= dbg1_data_so(1 to 4) & dbg0_data_so(0);
|
|
f_ucode_si <= dbg1_data_so(0);
|
|
spare_si (0 to 23) <= spare_so(1 to 23) & f_ucode_so;
|
|
f_dcd_so <= spare_so(0);
|
|
|
|
axucr0_lat_si(0 to 2) <= axucr0_lat_so(1 to 2) & dcfg_scan_in;
|
|
dcfg_scan_out <= axucr0_lat_so(0);
|
|
|
|
end architecture fuq_dcd;
|
|
|