---- opp_err.vhd --- V3.0 8/04/99 Tsuyoshi NAKAYA (UC : nakaya@hep.uchicago.edu) --- For ERROR Handling in the TF --- For the error definition, see svt_tf.vhd --- --- This module needs the following symbols. --- (1) opp_lerr.vhd : Handle TF local error track by track --- (2) opp_gerr.vhd : Handle SVT global error event by event. --- v1.2 : eoe_emsk should be SVT_ERR. --- v1.3 : Use opp_busy and opp_done with clk. --- v1.4 : Local error is processed at the fitter_done. --- v2.0 : Updated both components --- v3.0 : Replace TF_ID word with HIT_STAT word LIBRARY ieee; USE ieee.std_logic_1164.ALL; LIBRARY altera; USE altera.maxplus2.ALL; USE work.tf_def.ALL; ENTITY opp_err IS PORT( --- INPUTs reset, clk, fitter_done, opp_done : IN STD_LOGIC; reset_errreg1, reset_errreg2, reset_cdferr, reset_svterr : IN STD_LOGIC; --- Local ERROR condition oflow_hit, uflow_hit, out_order, oflow_lyr, oflow_cmb, parity_err, phi_oflow, cvr_oflow, result_oflow : IN STD_LOGIC; --- FIFO Status hbfifo_full, tffifo_full : IN STD_LOGIC; --- ERROR MASK; svt_emsk, cdf_emsk, tf_emsk : IN LERR_BITS_DEF; eoe_emsk : IN SVT_ERR; --- TF HIT Status Word in the TF status word; hit_stat : HIT_STAT_WORD ; --- OUTPUTs tf_stat : OUT TF_STAT_DEF; tf_err : OUT SVT_ERR; --- TF Event Error err1_stat, err2_stat : OUT LERR_BITS_DEF; --- ERROR status register svterr, cdferr : OUT STD_LOGIC ); --- CDF and SVT Error END opp_err; ARCHITECTURE a OF opp_err IS --- ***************** COMPONENTs ************************** --- (1) opp_lerr.vhd COMPONENT opp_lerr PORT( --- INPUTs reset, gate : IN STD_LOGIC; --- Local ERROR condition oflow_hit, uflow_hit, out_order, oflow_lyr, oflow_cmb, parity_err, phi_oflow, cvr_oflow, result_oflow : IN STD_LOGIC; --- FIFO error condition. hbfifo_full, tffifo_full : IN STD_LOGIC; --- ERROR MASK for the TF error in the TF status word; tf_emsk : IN LERR_BITS_DEF; --- TF HIT Status Word in the TF status word; hit_stat : HIT_STAT_WORD ; --- OUTPUTs tf_stat : OUT TF_STAT_DEF; --- The TF status word trk_err : OUT LERR_BITS_DEF ); --- The TF error track by track. END COMPONENT; --- (2) opp_gerr.vhd COMPONENT opp_gerr PORT( --- INPUTs reset, clk, gate, opp_done : IN STD_LOGIC; --- gate should be NOT fitter_done reset_errreg1, reset_errreg2, reset_cdferr, reset_svterr : IN STD_LOGIC; --- Individual ERROR Reset trk_err : IN LERR_BITS_DEF; --- track error road by road. --- ERROR MASK; eoe_emsk : IN SVT_ERR; svt_emsk, cdf_emsk : IN LERR_BITS_DEF; --- OUTPUTs tf_err : OUT SVT_ERR; err1_stat, err2_stat : OUT LERR_BITS_DEF; --- ERROR status register cdferr, svterr : OUT STD_LOGIC ); --- The TF error in the EOE word event by event. END COMPONENT; --- ***************** SIGNALs ************************* SIGNAL trk_err : LERR_BITS_DEF; SIGNAL cdf_emsk_local : LERR_BITS_DEF; --- ***************** Executables ************************* BEGIN ---------------------------------------------------- cdf_emsk_local(LERR_BITS_WIDTH-1 DOWNTO 0) <= cdf_emsk(LERR_BITS_WIDTH-1 DOWNTO 0) OR CDF_EMSK_DEFAULT(LERR_BITS_WIDTH-1 DOWNTO 0); --------------------------------------------------------------------------------- --- (1) check LOCAL error track by track err1 : opp_lerr PORT MAP ( reset => reset, gate => fitter_done, hit_stat => hit_stat, oflow_hit => oflow_hit, uflow_hit => uflow_hit, out_order => out_order, oflow_lyr => oflow_lyr, oflow_cmb => oflow_cmb, parity_err => parity_err, phi_oflow => phi_oflow, cvr_oflow => cvr_oflow, result_oflow => result_oflow, hbfifo_full => hbfifo_full, tffifo_full => tffifo_full, tf_emsk => tf_emsk, tf_stat => tf_stat, trk_err => trk_err ); --------------------------------------------------------------------------------- --- (2) Calculate the golabl error err2 : opp_gerr PORT MAP ( --- INPUTs reset => reset, clk => clk, gate => NOT fitter_done, reset_errreg1 => reset_errreg1, reset_errreg2 => reset_errreg2, reset_cdferr => reset_cdferr, reset_svterr => reset_svterr, opp_done => opp_done, trk_err => trk_err, eoe_emsk => eoe_emsk, svt_emsk => svt_emsk, cdf_emsk => cdf_emsk_local, --- OUTPUTs tf_err => tf_err, err1_stat => err1_stat, err2_stat => err2_stat, cdferr => cdferr, svterr => svterr ); END a;