// ========== Copyright Header Begin ==========================================
// OpenSPARC T2 Processor File: sii_ipcc_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 ============================================
wire [81:0] mbist0_wdata;
wire [7:0] sii_mb0_wdata_r;
wire [81:0] ipcc_data_func;
wire [13:0] newbe_par_rr;
wire [71:0] ipcc_data_out_r;
wire [83:0] ipcc_data_out_m;
wire [1:0] ipcc_data_out_m_unused;
wire [89:0] ipcc_data_all;
wire ff_ipcc_data_out_scanin;
wire ff_ipcc_data_out_scanout;
wire [71:0] ipcc_data_out;
wire [71:0] curhdr_l_buf;
wire ff_newbe_par_scanin;
wire ff_newbe_par_scanout;
wire ff_newbe_par_rr_scanin;
wire ff_newbe_par_rr_scanout;
wire ff_mb0_wdata_scanin;
wire ff_mb0_wdata_scanout;
wire [7:0] sii_mb0_wdata_buf;
wire ff_ipcc_ecc_scanout;
output [89:0] ipcc_data_all0;
output [89:0] ipcc_data_all1;
output [89:0] ipcc_data_all2;
output [89:0] ipcc_data_all3;
output [77:0] sii_mb1_read_data;
output [84:0] ipcc_dp_par_data;
//------inter-submodule signals-------
//-------from data path -----------
input [63:0] newhdr_l2; // header for l2
input [63:0] newhdr_nc; // header for ncu
input [71:0] ipdohq0_dout;
input [71:0] ipdbhq0_dout;
input [71:0] ipdohq1_dout;
input [71:0] ipdbhq1_dout;
input [152:0] ipdodq0_dout;
input [152:0] ipdbdq0_dout;
input [152:0] ipdodq1_dout;
input [152:0] ipdbdq1_dout;
input [7:0] sii_mb0_wdata;
//************************************************************************
//************************************************************************
assign pce_ov = tcu_pce_ov;
assign stop = tcu_clk_stop;
assign muxtst = tcu_muxtest;
assign test = tcu_dectest;
//************************************************************************
//************************************************************************
assign mbist0_wdata[81:0] = {sii_mb0_wdata_r[1:0],sii_mb0_wdata_r[7:0],
sii_mb0_wdata_r[7:0],sii_mb0_wdata_r[7:0], sii_mb0_wdata_r[7:0],
sii_mb0_wdata_r[7:0],sii_mb0_wdata_r[7:0], sii_mb0_wdata_r[7:0],
sii_mb0_wdata_r[7:0],sii_mb0_wdata_r[7:0], sii_mb0_wdata_r[7:0]};
assign ipcc_data_func[81:0] = {newbe_par_rr[3:0], ipcc_ecc_r[13:0], ipcc_data_out_r[63:0]};
sii_ipcc_dpmux_macro__mux_pgpe__ports_2__stack_64c__width_64 mux_ipcc_data_63_0
.dout(ipcc_data_out_m[63:0]),
.din0(mbist0_wdata[63:0]),
.din1(ipcc_data_func[63:0]),
sii_ipcc_dpmux_macro__mux_pgpe__ports_2__stack_20c__width_20 mux_ipcc_data_81_64
.dout(ipcc_data_out_m[83:64]),
.din0({2'b00, mbist0_wdata[81:64]}),
.din1({2'b00,ipcc_data_func[81:64]}),
assign sii_mb1_read_data[77:0] = {newbe_par_rr[13:0],ipcc_data_out_r[63:0]};
assign ipcc_dp_par_data[84:0] = {new_be_r[16:0], newbe_par_r[3:0], newdata_r[63:0]};
assign ipcc_data_out_m_unused[1:0] = ipcc_data_out_m[83:82];
//************************************************************************
//************************************************************************
assign ipcc_data_all[89:0] = {newbe_par_rr[11:4], ipcc_data_out_m[81:0]};
sii_ipcc_dpbuff_macro__dbuff_48x__stack_46c__width_46 buff_ipcc_data_all0_45_0
.dout (ipcc_data_all0[45:0]),
.din (ipcc_data_all[45:0])
sii_ipcc_dpbuff_macro__dbuff_48x__stack_44c__width_44 buff_ipcc_data_all0_89_46
.dout (ipcc_data_all0[89:46]),
.din (ipcc_data_all[89:46])
sii_ipcc_dpbuff_macro__dbuff_48x__stack_46c__width_46 buff_ipcc_data_all1_45_0
.dout (ipcc_data_all1[45:0]),
.din (ipcc_data_all[45:0])
sii_ipcc_dpbuff_macro__dbuff_48x__stack_44c__width_44 buff_ipcc_data_all1_89_46
.dout (ipcc_data_all1[89:46]),
.din (ipcc_data_all[89:46])
sii_ipcc_dpbuff_macro__dbuff_48x__stack_46c__width_46 buff_ipcc_data_all2_45_0
.dout (ipcc_data_all2[45:0]),
.din (ipcc_data_all[45:0])
sii_ipcc_dpbuff_macro__dbuff_48x__stack_44c__width_44 buff_ipcc_data_all2_89_46
.dout (ipcc_data_all2[89:46]),
.din (ipcc_data_all[89:46])
sii_ipcc_dpbuff_macro__dbuff_48x__stack_46c__width_46 buff_ipcc_data_all3_45_0
.dout (ipcc_data_all3[45:0]),
.din (ipcc_data_all[45:0])
sii_ipcc_dpbuff_macro__dbuff_48x__stack_44c__width_44 buff_ipcc_data_all3_89_46
.dout (ipcc_data_all3[89:46]),
.din (ipcc_data_all[89:46])
sii_ipcc_dpmsff_macro__stack_72c__width_72 ff_ipcc_data_out
.scan_in(ff_ipcc_data_out_scanin),
.scan_out(ff_ipcc_data_out_scanout),
.din (ipcc_data_out[71:0]),
.dout (ipcc_data_out_r[71:0]),
//In order to combine the mux_ipcc_data_out and mux_newhdr, it need
// to be split to 2 muxes because of the width are different.
sii_ipcc_dpmux_macro__mux_pgpe__ports_2__stack_8c__width_8 mux_ipcc_data_out_71_64
.dout (ipcc_data_out[71:64]) ,
.din1 (newbe_par_r[7:0]),
sii_ipcc_dpmux_macro__mux_pgnpe__ports_3__stack_64c__width_64 mux_ipcc_data_out_63_0
.dout (ipcc_data_out[63:0]) ,
.sel2 (not_hdr_data_sel),
.sel1 (hdr_not_curhdr_58),
//inv_macro inv_curhdr_58 (width = 1, stack=1r)
sii_ipcc_dpinv_macro__stack_2r__width_2 inv_hdr_data_sel_curhdr58
.din ({hdr_data_sel, curhdr[58]}),
.dout ({not_hdr_data_sel,not_curhdr_58})
sii_ipcc_dpand_macro__left_0__ports_2__stack_2r__width_2 and_hdr_sel
.din0 ({hdr_data_sel, hdr_data_sel}),
.din1 ({curhdr[58], not_curhdr_58}),
.dout ({hdr_curhdr_58, hdr_not_curhdr_58} )
//mux_macro mux_ipcc_data_out (width=72, ports=2, mux=pgpe, stack=72c)
// .dout (ipcc_data_out[71:0]) ,
// .din1 ({newbe_par_r[7:0], newdata_r[63:0]}),
// .din0 ({curhdr[71:64], newhdr[63:0]}),
//mux_macro mux_newhdr (width=64, ports=2, mux=pgpe, stack=64c)
// .dout (newhdr[63:0]) ,
// .din1 (newhdr_nc[63:0]),
// .din0 (newhdr_l2[63:0]),
sii_ipcc_dpinv_macro__stack_72r__width_72 inv_curhdr
sii_ipcc_dpmsffi_macro__stack_72c__width_72 ff_curhdri
.din (curhdr_l_buf[71:0]),
.scan_in(ff_curhdri_scanin),
.scan_out(ff_curhdri_scanout),
.dout_l (curhdr_i[71:0]),
sii_ipcc_dpbuff_macro__minbuff_1__width_8 buf_curhdr_72_64
.dout (curhdr_l_buf[71:64])
sii_ipcc_dpbuff_macro__minbuff_1__width_64 buf_curhdr_63_0
.dout (curhdr_l_buf[63:0])
// Put priority encoder before pass gate mux for dft purpose
assign gnt_pri[0] = gnt0_r_m[0];
sii_ipcc_dpinv_macro__left_0__stack_4r__width_4 inv_gnt0_r_m
.dout (not_gnt0_r_m[3:0])
sii_ipcc_dpnor_macro__left_0__ports_3__stack_2r__width_1 nor_gnt0_2
sii_ipcc_dpand_macro__left_0__ports_2__stack_4r__width_1 and_gnt1
sii_ipcc_dpand_macro__left_0__ports_3__stack_4r__width_1 and_gnt2
sii_ipcc_dpand_macro__left_0__ports_4__stack_4r__width_1 and_gnt3
sii_ipcc_dpand_macro__left_0__ports_3__stack_4r__width_1 and_gnt4
// N2- Bug 111258, AT: .din2 (gnt0_r_m[4]),
.din2 (1'b1), // N2+ Bug 111258, AT
sii_ipcc_dpmux_macro__mux_pgnpe__ports_5__stack_72c__width_72 mux_curhdr
.din3 (ipdohq0_dout[71:0]),
.din2 (ipdbhq0_dout[71:0]),
.din1 (ipdohq1_dout[71:0]),
.din0 (ipdbhq1_dout[71:0]),
sii_ipcc_dpmsff_macro__stack_64c__width_64 ff_newdata
.scan_in(ff_newdata_scanin),
.scan_out(ff_newdata_scanout),
sii_ipcc_dpmux_macro__mux_pgpe__ports_2__stack_64c__width_64 mux_newdata
.din1 (newdata_tmp[63:0]),
sii_ipcc_dpmux_macro__mux_pgdec__ports_8__stack_64c__width_64 mux_newdata_tmp
.dout (newdata_tmp[63:0]) ,
.din7 (ipdodq0_dout[127:64]),
.din6 (ipdodq0_dout[63:0]),
.din5 (ipdbdq0_dout[127:64]),
.din4 (ipdbdq0_dout[63:0]),
.din3 (ipdodq1_dout[127:64]),
.din2 (ipdodq1_dout[63:0]),
.din1 (ipdbdq1_dout[127:64]),
.din0 (ipdbdq1_dout[63:0]),
assign be_par7[13:0] = {1'b0, ipdodq0_dout[152], ipdodq0_dout[143:136],ipdodq0_dout[151:148]};
assign be_par6[13:0] = {2'b0, ipdodq0_dout[135:128],ipdodq0_dout[147:144]};
assign be_par5[13:0] = {1'b0, ipdbdq0_dout[152], ipdbdq0_dout[143:136],ipdbdq0_dout[151:148]};
assign be_par4[13:0] = {2'b0, ipdbdq0_dout[135:128],ipdbdq0_dout[147:144]};
assign be_par3[13:0] = {1'b0, ipdodq1_dout[152], ipdodq1_dout[143:136],ipdodq1_dout[151:148]};
assign be_par2[13:0] = {2'b0, ipdodq1_dout[135:128],ipdodq1_dout[147:144]};
assign be_par1[13:0] = {1'b0, ipdbdq1_dout[152], ipdbdq1_dout[143:136],ipdbdq1_dout[151:148]};
assign be_par0[13:0] = {2'b0, ipdbdq1_dout[135:128],ipdbdq1_dout[147:144]};
sii_ipcc_dpmsff_macro__stack_14c__width_14 ff_newbe_par
.scan_in(ff_newbe_par_scanin),
.scan_out(ff_newbe_par_scanout),
.dout (newbe_par_r[13:0]),
sii_ipcc_dpmsff_macro__stack_14c__width_14 ff_newbe_par_rr
.scan_in(ff_newbe_par_rr_scanin),
.scan_out(ff_newbe_par_rr_scanout),
.din ({newbe_par_r[13:8], ipcc_data_out[71:64]}),
.dout (newbe_par_rr[13:0]),
sii_ipcc_dpmsff_macro__stack_8c__width_8 ff_mb0_wdata
.scan_in(ff_mb0_wdata_scanin),
.scan_out(ff_mb0_wdata_scanout),
.din (sii_mb0_wdata_buf[7:0]),
.dout (sii_mb0_wdata_r[7:0]),
sii_ipcc_dpbuff_macro__minbuff_1__stack_8r__width_8 buf_sii_mb0_wdata
.din (sii_mb0_wdata[7:0]),
.dout (sii_mb0_wdata_buf[7:0])
//---------------------------------------------------------------------
//---------------------------------------------------------------------
sii_ipcc_dpmux_macro__mux_pgpe__ports_2__stack_14c__width_14 mux_ipcc_ecc
.din0 ({8'b0, new_c[5:0]}),
assign new_ecc[13:0] = {ecch[6:2], xor_ecc_h_l[3:2], eccl[6:2], xor_ecc_h_l[1:0]};
sii_ipcc_dpxor_macro__ports_2__stack_4r__width_4 xor_ecc
.din0 ({ecch[1:0], eccl[1:0]}),
.din1 ({data_parity_err, data_parity_err, data_parity_err, data_parity_err}),
//---------------------------------------------------------------------
// DATA ECC GENERATION LOGIC
//---------------------------------------------------------------------
assign eccd_h[31:0] = ipcc_dp_par_data[63:32];
assign eccd_l[31:0] = ipcc_dp_par_data[31:0];
assign eccd_h_0_l = {eccd_h[0], eccd_h[3], eccd_h[6], eccd_h[10], eccd_h[13],
eccd_h[17], eccd_h[21], eccd_h[25], eccd_h[28]};
assign eccd_h_0_r = {eccd_h[1], eccd_h[4], eccd_h[8], eccd_h[11], eccd_h[15],
eccd_h[19], eccd_h[23], eccd_h[26], eccd_h[30]};
sii_ipcc_dpxor_macro__ports_2__stack_10r__width_9 xor_ecch_0_l1 (
sii_ipcc_dpxor_macro__ports_2__stack_4r__width_4 xor_ecch_0_l2 (
.din0 (eccd_h_0_l1[3:0]),
.din1 (eccd_h_0_l1[7:4]),
sii_ipcc_dpxor_macro__ports_2__stack_2r__width_2 xor_ecch_0_l3 (
.din0 (eccd_h_0_l2[1:0]),
.din1 (eccd_h_0_l2[3:2]),
sii_ipcc_dpxor_macro__ports_3__stack_2r__width_1 xor_ecch_0_l4 (
assign eccd_h_1_l = {eccd_h[0], eccd_h[3], eccd_h[6], eccd_h[10], eccd_h[13],
eccd_h[17], eccd_h[21], eccd_h[25], eccd_h[28]};
assign eccd_h_1_r = {eccd_h[2], eccd_h[5], eccd_h[9], eccd_h[12], eccd_h[16],
eccd_h[20], eccd_h[24], eccd_h[27], eccd_h[31]};
sii_ipcc_dpxor_macro__ports_2__stack_10r__width_9 xor_ecch_1_l1 (
sii_ipcc_dpxor_macro__ports_2__stack_4r__width_4 xor_ecch_1_l2 (
.din0 (eccd_h_1_l1[3:0]),
.din1 (eccd_h_1_l1[7:4]),
sii_ipcc_dpxor_macro__ports_2__stack_2r__width_2 xor_ecch_1_l3 (
.din0 (eccd_h_1_l2[1:0]),
.din1 (eccd_h_1_l2[3:2]),
sii_ipcc_dpxor_macro__ports_3__stack_2r__width_1 xor_ecch_1_l4 (
assign eccd_h_2_l = {eccd_h[1], eccd_h[3], eccd_h[8], eccd_h[10], eccd_h[15],
eccd_h[17], eccd_h[23], eccd_h[25], eccd_h[30]};
assign eccd_h_2_r = {eccd_h[2], eccd_h[7], eccd_h[9], eccd_h[14], eccd_h[16],
eccd_h[22], eccd_h[24], eccd_h[29], eccd_h[31]};
sii_ipcc_dpxor_macro__ports_2__stack_10r__width_9 xor_ecch_2_l1 (
sii_ipcc_dpxor_macro__ports_2__stack_4r__width_4 xor_ecch_2_l2 (
.din0 (eccd_h_2_l1[3:0]),
.din1 (eccd_h_2_l1[7:4]),
sii_ipcc_dpxor_macro__ports_2__stack_2r__width_2 xor_ecch_2_l3 (
.din0 (eccd_h_2_l2[1:0]),
.din1 (eccd_h_2_l2[3:2]),
sii_ipcc_dpxor_macro__ports_3__stack_2r__width_1 xor_ecch_2_l4 (
assign eccd_h_3_l = {eccd_h[4], eccd_h[6], eccd_h[8], eccd_h[10], eccd_h[19],
assign eccd_h_3_r = {eccd_h[5], eccd_h[7], eccd_h[9], eccd_h[18], eccd_h[20],
sii_ipcc_dpxor_macro__ports_2__stack_8r__width_7 xor_ecch_3_l1 (
sii_ipcc_dpxor_macro__ports_2__stack_4r__width_4 xor_ecch_3_l2 (
.din0 (eccd_h_3_l1[3:0]),
.din1 ({eccd_h_3_l1[6:4],eccd_h[25]}),
sii_ipcc_dpxor_macro__ports_2__stack_2r__width_2 xor_ecch_3_l3 (
.din0 (eccd_h_3_l2[1:0]),
.din1 (eccd_h_3_l2[3:2]),
sii_ipcc_dpxor_macro__ports_2__stack_2r__width_1 xor_ecch_3_l4 (
assign eccd_h_4_l = {eccd_h[11], eccd_h[13], eccd_h[15], eccd_h[17], eccd_h[19],
assign eccd_h_4_r = {eccd_h[12], eccd_h[14], eccd_h[16], eccd_h[18], eccd_h[20],
sii_ipcc_dpxor_macro__ports_2__stack_8r__width_7 xor_ecch_4_l1 (
sii_ipcc_dpxor_macro__ports_2__stack_4r__width_4 xor_ecch_4_l2 (
.din0 (eccd_h_4_l1[3:0]),
.din1 ({eccd_h_4_l1[6:4],eccd_h[25]}),
sii_ipcc_dpxor_macro__ports_2__stack_2r__width_2 xor_ecch_4_l3 (
.din0 (eccd_h_4_l2[1:0]),
.din1 (eccd_h_4_l2[3:2]),
sii_ipcc_dpxor_macro__ports_2__stack_2r__width_1 xor_ecch_4_l4 (
sii_ipcc_dpxor_macro__ports_2__stack_4r__width_3 xor_ecch_5_l1 (
.din0 ({eccd_h[26], eccd_h[28], eccd_h[30]}),
.din1 ({eccd_h[27], eccd_h[29], eccd_h[31]}),
sii_ipcc_dpxor_macro__ports_3__stack_2r__width_1 xor_ecch_5_l4 (
assign eccd_h_6_l = {eccd_h[0], eccd_h[1], eccd_h[2], eccd_h[4], eccd_h[5],
eccd_h[7], eccd_h[10], eccd_h[11], eccd_h[12]};
assign eccd_h_6_r = {eccd_h[14], eccd_h[17], eccd_h[18], eccd_h[21], eccd_h[23],
eccd_h[24], eccd_h[26], eccd_h[27], eccd_h[29]};
sii_ipcc_dpxor_macro__ports_2__stack_10r__width_9 xor_ecch_6_l1 (
sii_ipcc_dpxor_macro__ports_2__stack_4r__width_4 xor_ecch_6_l2 (
.din0 (eccd_h_6_l1[3:0]),
.din1 (eccd_h_6_l1[7:4]),
sii_ipcc_dpxor_macro__ports_2__stack_2r__width_2 xor_ecch_6_l3 (
.din0 (eccd_h_6_l2[1:0]),
.din1 (eccd_h_6_l2[3:2]),
sii_ipcc_dpxor_macro__ports_3__stack_2r__width_1 xor_ecch_6_l4 (
//---------------------------------------------------------------------
assign eccd_l_0_l = {eccd_l[0], eccd_l[3], eccd_l[6], eccd_l[10], eccd_l[13],
eccd_l[17], eccd_l[21], eccd_l[25], eccd_l[28]};
assign eccd_l_0_r = {eccd_l[1], eccd_l[4], eccd_l[8], eccd_l[11], eccd_l[15],
eccd_l[19], eccd_l[23], eccd_l[26], eccd_l[30]};
sii_ipcc_dpxor_macro__ports_2__stack_10r__width_9 xor_eccl_0_l1 (
sii_ipcc_dpxor_macro__ports_2__stack_4r__width_4 xor_eccl_0_l2 (
.din0 (eccd_l_0_l1[3:0]),
.din1 (eccd_l_0_l1[7:4]),
sii_ipcc_dpxor_macro__ports_2__stack_2r__width_2 xor_eccl_0_l3 (
.din0 (eccd_l_0_l2[1:0]),
.din1 (eccd_l_0_l2[3:2]),
sii_ipcc_dpxor_macro__ports_3__stack_2r__width_1 xor_eccl_0_l4 (
assign eccd_l_1_l = {eccd_l[0], eccd_l[3], eccd_l[6], eccd_l[10], eccd_l[13],
eccd_l[17], eccd_l[21], eccd_l[25], eccd_l[28]};
assign eccd_l_1_r = {eccd_l[2], eccd_l[5], eccd_l[9], eccd_l[12], eccd_l[16],
eccd_l[20], eccd_l[24], eccd_l[27], eccd_l[31]};
sii_ipcc_dpxor_macro__ports_2__stack_10r__width_9 xor_eccl_1_l1 (
sii_ipcc_dpxor_macro__ports_2__stack_8r__width_4 xor_eccl_1_l2 (
.din0 (eccd_l_1_l1[3:0]),
.din1 (eccd_l_1_l1[7:4]),
sii_ipcc_dpxor_macro__ports_2__stack_4r__width_2 xor_eccl_1_l3 (
.din0 (eccd_l_1_l2[1:0]),
.din1 (eccd_l_1_l2[3:2]),
sii_ipcc_dpxor_macro__ports_3__stack_2r__width_1 xor_eccl_1_l4 (
assign eccd_l_2_l = {eccd_l[1], eccd_l[3], eccd_l[8], eccd_l[10], eccd_l[15],
eccd_l[17], eccd_l[23], eccd_l[25], eccd_l[30]};
assign eccd_l_2_r = {eccd_l[2], eccd_l[7], eccd_l[9], eccd_l[14], eccd_l[16],
eccd_l[22], eccd_l[24], eccd_l[29], eccd_l[31]};
sii_ipcc_dpxor_macro__ports_2__stack_10r__width_9 xor_eccl_2_l1 (
sii_ipcc_dpxor_macro__ports_2__stack_4r__width_4 xor_eccl_2_l2 (
.din0 (eccd_l_2_l1[3:0]),
.din1 (eccd_l_2_l1[7:4]),
sii_ipcc_dpxor_macro__ports_2__stack_2r__width_2 xor_eccl_2_l3 (
.din0 (eccd_l_2_l2[1:0]),
.din1 (eccd_l_2_l2[3:2]),
sii_ipcc_dpxor_macro__ports_3__stack_2r__width_1 xor_eccl_2_l4 (
assign eccd_l_3_l = {eccd_l[4], eccd_l[6], eccd_l[8], eccd_l[10], eccd_l[19],
assign eccd_l_3_r = {eccd_l[5], eccd_l[7], eccd_l[9], eccd_l[18], eccd_l[20],
sii_ipcc_dpxor_macro__ports_2__stack_8r__width_7 xor_eccl_3_l1 (
sii_ipcc_dpxor_macro__ports_2__stack_4r__width_4 xor_eccl_3_l2 (
.din0 (eccd_l_3_l1[3:0]),
.din1 ({eccd_l_3_l1[6:4],eccd_l[25]}),
sii_ipcc_dpxor_macro__ports_2__stack_2r__width_2 xor_eccl_3_l3 (
.din0 (eccd_l_3_l2[1:0]),
.din1 (eccd_l_3_l2[3:2]),
sii_ipcc_dpxor_macro__ports_2__stack_2r__width_1 xor_eccl_3_l4 (
assign eccd_l_4_l = {eccd_l[11], eccd_l[13], eccd_l[15], eccd_l[17], eccd_l[19],
assign eccd_l_4_r = {eccd_l[12], eccd_l[14], eccd_l[16], eccd_l[18], eccd_l[20],
sii_ipcc_dpxor_macro__ports_2__stack_8r__width_7 xor_eccl_4_l1 (
sii_ipcc_dpxor_macro__ports_2__stack_4r__width_4 xor_eccl_4_l2 (
.din0 (eccd_l_4_l1[3:0]),
.din1 ({eccd_l_4_l1[6:4],eccd_l[25]}),
sii_ipcc_dpxor_macro__ports_2__stack_2r__width_2 xor_eccl_4_l3 (
.din0 (eccd_l_4_l2[1:0]),
.din1 (eccd_l_4_l2[3:2]),
sii_ipcc_dpxor_macro__ports_2__stack_2r__width_1 xor_eccl_4_l4 (
sii_ipcc_dpxor_macro__ports_2__stack_4r__width_3 xor_eccl_5_l1 (
.din0 ({eccd_l[26], eccd_l[28], eccd_l[30]}),
.din1 ({eccd_l[27], eccd_l[29], eccd_l[31]}),
sii_ipcc_dpxor_macro__ports_3__stack_2r__width_1 xor_eccl_5_l4 (
assign eccd_l_6_l = {eccd_l[0], eccd_l[1], eccd_l[2], eccd_l[4], eccd_l[5],
eccd_l[7], eccd_l[10], eccd_l[11], eccd_l[12]};
assign eccd_l_6_r = {eccd_l[14], eccd_l[17], eccd_l[18], eccd_l[21], eccd_l[23],
eccd_l[24], eccd_l[26], eccd_l[27], eccd_l[29]};
sii_ipcc_dpxor_macro__ports_2__stack_10r__width_9 xor_eccl_6_l1 (
sii_ipcc_dpxor_macro__ports_2__stack_4r__width_4 xor_eccl_6_l2 (
.din0 (eccd_l_6_l1[3:0]),
.din1 (eccd_l_6_l1[7:4]),
sii_ipcc_dpxor_macro__ports_2__stack_2r__width_2 xor_eccl_6_l3 (
.din0 (eccd_l_6_l2[1:0]),
.din1 (eccd_l_6_l2[3:2]),
sii_ipcc_dpxor_macro__ports_3__stack_2r__width_1 xor_eccl_6_l4 (
//---------------------------------------------------------------------
// DATA PARITY GENERATION LOGIC
//---------------------------------------------------------------------
sii_ipcc_dpmux_macro__mux_pgpe__ports_2__stack_14c__width_14 mux_newbe_par
.dout (newbe_par[13:0]) ,
.din1 (newbe_par1[13:0]),
.din0 ({2'b0, tcu_be_par[11:0]}),
sii_ipcc_dpmux_macro__mux_pgdec__ports_8__stack_14c__width_14 mux_newbe_par1
.dout (newbe_par1[13:0]) ,
sii_ipcc_dpmsff_macro__stack_18c__width_18 ff_newbe
.scan_in(ff_newbe_scanin),
.scan_out(ff_newbe_scanout),
.dout ({new_be_unused, new_be_r[16:0]}),
sii_ipcc_dpmux_macro__mux_pgdec__ports_4__stack_18c__width_18 mux_newbe
.din3 ({1'b0, ipdodq0_dout[152], be_par7[11:4], be_par6[11:4]}),
.din2 ({1'b0, ipdbdq0_dout[152], be_par5[11:4], be_par4[11:4]}),
.din1 ({1'b0, ipdodq1_dout[152], be_par3[11:4], be_par2[11:4]}),
.din0 ({1'b0, ipdbdq1_dout[152], be_par1[11:4], be_par0[11:4]}),
sii_ipcc_dpmsff_macro__stack_14c__width_14 ff_ipcc_ecc
.scan_in(ff_ipcc_ecc_scanin),
.scan_out(ff_ipcc_ecc_scanout),
.dout (ipcc_ecc_r[13:0]),
assign ff_ipcc_data_out_scanin = scan_in ;
assign ff_curhdri_scanin = ff_ipcc_data_out_scanout ;
assign ff_newdata_scanin = ff_curhdri_scanout ;
assign ff_newbe_par_scanin = ff_newdata_scanout ;
assign ff_newbe_par_rr_scanin = ff_newbe_par_scanout ;
assign ff_mb0_wdata_scanin = ff_newbe_par_rr_scanout ;
assign ff_newbe_scanin = ff_mb0_wdata_scanout ;
assign ff_ipcc_ecc_scanin = ff_newbe_scanout ;
assign scan_out = ff_ipcc_ecc_scanout ;
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module sii_ipcc_dpmux_macro__mux_pgpe__ports_2__stack_64c__width_64 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module sii_ipcc_dpmux_macro__mux_pgpe__ports_2__stack_20c__width_20 (
module sii_ipcc_dpbuff_macro__dbuff_48x__stack_46c__width_46 (
module sii_ipcc_dpbuff_macro__dbuff_48x__stack_44c__width_44 (
// any PARAMS parms go into naming of macro
module sii_ipcc_dpmsff_macro__stack_72c__width_72 (
.so({so[70:0],scan_out}),
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module sii_ipcc_dpmux_macro__mux_pgpe__ports_2__stack_8c__width_8 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module sii_ipcc_dpmux_macro__mux_pgnpe__ports_3__stack_64c__width_64 (
cl_dp1_muxbuff3_8x c0_0 (
module sii_ipcc_dpinv_macro__stack_2r__width_2 (
// and macro for ports = 2,3,4
module sii_ipcc_dpand_macro__left_0__ports_2__stack_2r__width_2 (
module sii_ipcc_dpinv_macro__stack_72r__width_72 (
// any PARAMS parms go into naming of macro
module sii_ipcc_dpmsffi_macro__stack_72c__width_72 (
.so({so[70:0],scan_out}),
module sii_ipcc_dpbuff_macro__minbuff_1__width_8 (
module sii_ipcc_dpbuff_macro__minbuff_1__width_64 (
module sii_ipcc_dpinv_macro__left_0__stack_4r__width_4 (
// nor macro for ports = 2,3
module sii_ipcc_dpnor_macro__left_0__ports_3__stack_2r__width_1 (
// and macro for ports = 2,3,4
module sii_ipcc_dpand_macro__left_0__ports_2__stack_4r__width_1 (
// and macro for ports = 2,3,4
module sii_ipcc_dpand_macro__left_0__ports_3__stack_4r__width_1 (
// and macro for ports = 2,3,4
module sii_ipcc_dpand_macro__left_0__ports_4__stack_4r__width_1 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module sii_ipcc_dpmux_macro__mux_pgnpe__ports_5__stack_72c__width_72 (
cl_dp1_muxbuff5_8x c0_0 (
// any PARAMS parms go into naming of macro
module sii_ipcc_dpmsff_macro__stack_64c__width_64 (
.so({so[62:0],scan_out}),
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module sii_ipcc_dpmux_macro__mux_pgdec__ports_8__stack_64c__width_64 (
// any PARAMS parms go into naming of macro
module sii_ipcc_dpmsff_macro__stack_14c__width_14 (
.so({so[12:0],scan_out}),
// any PARAMS parms go into naming of macro
module sii_ipcc_dpmsff_macro__stack_8c__width_8 (
module sii_ipcc_dpbuff_macro__minbuff_1__stack_8r__width_8 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module sii_ipcc_dpmux_macro__mux_pgpe__ports_2__stack_14c__width_14 (
// xor macro for ports = 2,3
module sii_ipcc_dpxor_macro__ports_2__stack_4r__width_4 (
// xor macro for ports = 2,3
module sii_ipcc_dpxor_macro__ports_2__stack_10r__width_9 (
// xor macro for ports = 2,3
module sii_ipcc_dpxor_macro__ports_2__stack_2r__width_2 (
// xor macro for ports = 2,3
module sii_ipcc_dpxor_macro__ports_3__stack_2r__width_1 (
// xor macro for ports = 2,3
module sii_ipcc_dpxor_macro__ports_2__stack_8r__width_7 (
// xor macro for ports = 2,3
module sii_ipcc_dpxor_macro__ports_2__stack_2r__width_1 (
// xor macro for ports = 2,3
module sii_ipcc_dpxor_macro__ports_2__stack_4r__width_3 (
// xor macro for ports = 2,3
module sii_ipcc_dpxor_macro__ports_2__stack_8r__width_4 (
// xor macro for ports = 2,3
module sii_ipcc_dpxor_macro__ports_2__stack_4r__width_2 (
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module sii_ipcc_dpmux_macro__mux_pgdec__ports_8__stack_14c__width_14 (
// any PARAMS parms go into naming of macro
module sii_ipcc_dpmsff_macro__stack_18c__width_18 (
.so({so[16:0],scan_out}),
// general mux macro for pass-gate and and-or muxes with/wout priority encoders
// also for pass-gate with decoder
// any PARAMS parms go into naming of macro
module sii_ipcc_dpmux_macro__mux_pgdec__ports_4__stack_18c__width_18 (