// ========== Copyright Header Begin ==========================================
// OpenSPARC T2 Processor File: l2t_shdwscn_dp.v
// Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
// 4150 Network Circle, Santa Clara, California 95054, U.S.A.
// * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; version 2 of the License.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// For the avoidance of doubt, and except that if any non-GPL license
// choice is available it will apply instead, Sun elects to use only
// the General Public License version 2 (GPLv2) at this time for any
// software where a choice of GPL license versions is made
// available with the language indicating that GPLv2 or any later version
// may be used, or where a choice of which version of the GPL is applied is
// otherwise unspecified.
// Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
// CA 95054 USA or visit www.sun.com if you need additional information or
// ========== Copyright Header End ============================================
`define TAG_WIDTH_LESS1 27
`define MBD_WIDTH 106 // BS and SR 11/12/03 N2 Xbar Packet format change
// BS and SR 11/12/03 N2 Xbar Packet format change
`define MBD_ECC_HI_PLUS1 106
`define MBD_ECC_HI_PLUS5 110
// BS and SR 11/12/03 N2 Xbar Packet format change
// BS and SR 11/12/03 N2 Xbar Packet format change , maps to bits [128:104] of PCXS packet , ther than RSVD bit
`define ERR_TID_HI 59 // PRM needs to change to reflect this : TID will be bits [59:54] instead of [58:54]
// Phase 2 : SIU Inteface and format change
`define JBI_HDR_SZ 26 // BS and SR 11/12/03 N2 Xbar Packet format change
`define JBI_HDR_SZ_LESS1 25 // BS and SR 11/12/03 N2 Xbar Packet format change
// `define JBI_RSVD 16 NOt used
`define JBI_OPES_LO 27 // 0 = 30, P=29, E=28, S=27
// Phase 2 : SIU Inteface and format change
// BS and SR 11/12/03 N2 Xbar Packet format change :
// `define JBINST_RSVD 8 NOT used
`define JBINST_CTAG_HI 15
`define JBINST_RQ_WR64 18
`define JBINST_OPES_LO 19 // 0 = 22, P=21, E=20, S=19
`define JBINST_OPES_HI 22
`define JBINST_ENTRY_LO 23
`define JBINST_ENTRY_HI 24
tcu_l2t_shscan_clk_stop_d2,
l2t_tcu_shscan_scan_out);
wire [141:0] shadow_scan_flopin;
wire ff_rd_errstate_reg_00_scanin;
wire ff_rd_errstate_reg_00_scanout;
wire [63:0] shdw_rd_errstate_reg_unused;
wire ff_rd_errstate_reg_01_scanin;
wire ff_rd_errstate_reg_01_scanout;
wire ff_rd_errstate_reg_10_scanin;
wire ff_rd_errstate_reg_10_scanout;
wire ff_rd_errstate_reg_11_scanin;
wire ff_rd_errstate_reg_11_scanout;
wire ff_rd_notdata_reg_00_scanin;
wire ff_rd_notdata_reg_00_scanout;
wire [63:0] shdw_rd_notdata_reg_unused;
wire ff_rd_notdata_reg_01_scanin;
wire ff_rd_notdata_reg_01_scanout;
wire ff_rd_notdata_reg_10_scanin;
wire ff_rd_notdata_reg_10_scanout;
wire ff_rd_notdata_reg_11_scanin;
wire ff_rd_notdata_reg_11_scanout;
wire ff_csr_l2_erraddr_reg_00_scanin;
wire ff_csr_l2_erraddr_reg_00_scanout;
wire [45:32] shdw_csr_l2_erraddr_reg_unused;
input [63:0] rd_errstate_reg;
input [`ERR_MEND:`ERR_NDADR_LO] rd_notdata_reg;
input [39:4] csr_l2_erraddr_reg;
input tcu_l2t_shscan_scan_in;
input tcu_l2t_shscan_aclk;
input tcu_l2t_shscan_bclk;
input tcu_l2t_shscan_scan_en;
input tcu_l2t_shscan_pce_ov;
input tcu_l2t_shscan_clk_stop_d2;
output l2t_tcu_shscan_scan_out;
assign pce_ov = tcu_l2t_shscan_pce_ov;
assign siclk = tcu_l2t_shscan_aclk;
assign soclk = tcu_l2t_shscan_bclk;
assign se = tcu_l2t_shscan_scan_en;
assign stop = tcu_l2t_shscan_clk_stop_d2;
assign shadow_scan_flopin[141:84] = {rd_errstate_reg[63:34],rd_errstate_reg[27:0]};
assign shadow_scan_flopin[83:36] = rd_notdata_reg[`ERR_MEND:`ERR_NDADR_LO];
assign shadow_scan_flopin[35:0] = csr_l2_erraddr_reg[39:4];
l2t_shdwscn_dp_msff_macro__stack_16r__width_16 ff_rd_errstate_reg_00
.scan_in(ff_rd_errstate_reg_00_scanin),
.scan_out(ff_rd_errstate_reg_00_scanout),
.dout (shdw_rd_errstate_reg_unused[47:32]),
.din (shadow_scan_flopin[15:0]),
l2t_shdwscn_dp_msff_macro__stack_16r__width_16 ff_rd_errstate_reg_01
.scan_in(ff_rd_errstate_reg_01_scanin),
.scan_out(ff_rd_errstate_reg_01_scanout),
.dout (shdw_rd_errstate_reg_unused[63:48]),
.din (shadow_scan_flopin[31:16]),
l2t_shdwscn_dp_msff_macro__stack_16r__width_16 ff_rd_errstate_reg_10
.scan_in(ff_rd_errstate_reg_10_scanin),
.scan_out(ff_rd_errstate_reg_10_scanout),
.dout (shdw_rd_errstate_reg_unused[15:0]),
.din (shadow_scan_flopin[47:32]),
l2t_shdwscn_dp_msff_macro__stack_16r__width_16 ff_rd_errstate_reg_11
.scan_in(ff_rd_errstate_reg_11_scanin),
.scan_out(ff_rd_errstate_reg_11_scanout),
.dout (shdw_rd_errstate_reg_unused[31:16]),
.din (shadow_scan_flopin[63:48]),
l2t_shdwscn_dp_msff_macro__stack_16r__width_16 ff_rd_notdata_reg_00
.scan_in(ff_rd_notdata_reg_00_scanin),
.scan_out(ff_rd_notdata_reg_00_scanout),
.dout (shdw_rd_notdata_reg_unused[47:32]),
.din (shadow_scan_flopin[79:64]),
l2t_shdwscn_dp_msff_macro__stack_16r__width_16 ff_rd_notdata_reg_01
.scan_in(ff_rd_notdata_reg_01_scanin),
.scan_out(ff_rd_notdata_reg_01_scanout),
.dout (shdw_rd_notdata_reg_unused[63:48]),
.din (shadow_scan_flopin[95:80]),
l2t_shdwscn_dp_msff_macro__stack_16r__width_16 ff_rd_notdata_reg_10
.scan_in(ff_rd_notdata_reg_10_scanin),
.scan_out(ff_rd_notdata_reg_10_scanout),
.dout (shdw_rd_notdata_reg_unused[15:0]),
.din (shadow_scan_flopin[111:96]),
l2t_shdwscn_dp_msff_macro__stack_16r__width_16 ff_rd_notdata_reg_11
.scan_in(ff_rd_notdata_reg_11_scanin),
.scan_out(ff_rd_notdata_reg_11_scanout),
.dout (shdw_rd_notdata_reg_unused[31:16]),
.din (shadow_scan_flopin[127:112]),
l2t_shdwscn_dp_msff_macro__stack_16r__width_14 ff_csr_l2_erraddr_reg_00
.scan_in(ff_csr_l2_erraddr_reg_00_scanin),
.scan_out(ff_csr_l2_erraddr_reg_00_scanout),
.dout (shdw_csr_l2_erraddr_reg_unused[45:32]),
.din (shadow_scan_flopin[141:128]),
assign ff_rd_errstate_reg_00_scanin = tcu_l2t_shscan_scan_in ;
assign ff_rd_errstate_reg_01_scanin = ff_rd_errstate_reg_00_scanout;
assign ff_rd_errstate_reg_10_scanin = ff_rd_errstate_reg_01_scanout;
assign ff_rd_errstate_reg_11_scanin = ff_rd_errstate_reg_10_scanout;
assign ff_rd_notdata_reg_00_scanin = ff_rd_errstate_reg_11_scanout;
assign ff_rd_notdata_reg_01_scanin = ff_rd_notdata_reg_00_scanout;
assign ff_rd_notdata_reg_10_scanin = ff_rd_notdata_reg_01_scanout;
assign ff_rd_notdata_reg_11_scanin = ff_rd_notdata_reg_10_scanout;
assign ff_csr_l2_erraddr_reg_00_scanin = ff_rd_notdata_reg_11_scanout;
assign l2t_tcu_shscan_scan_out = ff_csr_l2_erraddr_reg_00_scanout;
// any PARAMS parms go into naming of macro
module l2t_shdwscn_dp_msff_macro__stack_16r__width_16 (
.so({so[14:0],scan_out}),
// any PARAMS parms go into naming of macro
module l2t_shdwscn_dp_msff_macro__stack_16r__width_14 (
.so({so[12:0],scan_out}),