// ========== Copyright Header Begin ==========================================
// OpenSPARC T2 Processor File: mmu_trc_ctl.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 ============================================
input tcu_pce_ov; // scan signals
input [7:0] htc_tsb_hit_hw1;
input [7:0] htc_thr_valid_hw3;
input [7:0] htc_ra2pahit_hw5;
input [7:0] htc_ranotpax_hw5;
input [7:0] tsm_waitfortte;
input [7:0] htc_ep_miss_hw1;
input [7:0] htc_rrindex_bit0;
input [7:0] htc_rrindex_bit1;
input [7:0] l2_ecc_err_hw1;
input [7:0] cfg_ecc_err_m3;
input [7:0] rr_ecc_err_hw5;
input [1:0] l2_ecc_err_type;
input [1:0] cfg_ecc_err_type;
input [1:0] rr_ecc_err_type;
input [2:0] cfg_ecc_err_index;
input [2:0] rr_ecc_err_index;
output [7:0] trs_null_st;
output [7:0] trs_waitrr3_st;
output [7:0] trs_ecc_err;
output [2:0] trs0_err_type;
output [2:0] trs1_err_type;
output [2:0] trs2_err_type;
output [2:0] trs3_err_type;
output [2:0] trs4_err_type;
output [2:0] trs5_err_type;
output [2:0] trs6_err_type;
output [2:0] trs7_err_type;
output [2:0] trs0_err_index;
output [2:0] trs1_err_index;
output [2:0] trs2_err_index;
output [2:0] trs3_err_index;
output [2:0] trs4_err_index;
output [2:0] trs5_err_index;
output [2:0] trs6_err_index;
output [2:0] trs7_err_index;
output [7:0] trs_eccerr_st;
output [7:0] trs_eperr_st;
assign pce_ov = tcu_pce_ov;
///////////////////////////////////////////////////
///////////////////////////////////////////////////
mmu_trc_ctl_l1clkhdr_ctl_macro clkgen (
// mmu_trs_ctl AUTO_TEMPLATE
.ep_miss_hw1(htc_ep_miss_hw1[@]),
.rrindex_bit0(htc_rrindex_bit0[@]),
.rrindex_bit1(htc_rrindex_bit1[@]),
.l2_ecc_err_hw1(l2_ecc_err_hw1[@]),
.cfg_ecc_err_m3(cfg_ecc_err_m3[@]),
.rr_ecc_err_hw5(rr_ecc_err_hw5[@]),
.tsb_hit_hw1(htc_tsb_hit_hw1[@]),
.thr_valid_hw3(htc_thr_valid_hw3[@]),
.tsm_waitfortte(tsm_waitfortte[@]),
.ra2pahit_hw5(htc_ra2pahit_hw5[@]),
.ranotpax_hw5(htc_ranotpax_hw5[@]),
.trs_null_st(trs_null_st[@]),
.trs_waitrr3_st(trs_waitrr3_st[@]),
.trs_ecc_err(trs_ecc_err[@]),
.trs_ep_err(trs_ecc_err[@]),
.trs_err_type(trs@_err_type[2:0]),
.trs_err_index(trs@_err_index[2:0]),
.trs_eperr_st (trs_eperr_st[@]),
.trs_eccerr_st (trs_eccerr_st[@]),
.trs_rqv (trs_rqv[0]), // Templated
.trs_null_st (trs_null_st[0]), // Templated
.trs_waitrr3_st (trs_waitrr3_st[0]), // Templated
.trs_ecc_err (trs_ecc_err[0]), // Templated
.trs_err_type (trs0_err_type[2:0]), // Templated
.trs_err_index (trs0_err_index[2:0]), // Templated
.trs_ep_err (trs_ep_err[0]), // Templated
.trs_eperr_st (trs_eperr_st[0]), // Templated
.trs_eccerr_st (trs_eccerr_st[0]), // Templated
.tsb_hit_hw1 (htc_tsb_hit_hw1[0]), // Templated
.thr_valid_hw3 (htc_thr_valid_hw3[0]), // Templated
.ra2pahit_hw5 (htc_ra2pahit_hw5[0]), // Templated
.ranotpax_hw5 (htc_ranotpax_hw5[0]), // Templated
.tsm_waitfortte (tsm_waitfortte[0]), // Templated
.ep_miss_hw1 (htc_ep_miss_hw1[0]), // Templated
.rrindex_bit0 (htc_rrindex_bit0[0]), // Templated
.rrindex_bit1 (htc_rrindex_bit1[0]), // Templated
.l2_ecc_err_hw1 (l2_ecc_err_hw1[0]), // Templated
.cfg_ecc_err_m3 (cfg_ecc_err_m3[0]), // Templated
.rr_ecc_err_hw5 (rr_ecc_err_hw5[0]), // Templated
.l2_ecc_err_type (l2_ecc_err_type[1:0]),
.cfg_ecc_err_type (cfg_ecc_err_type[1:0]),
.rr_ecc_err_type (rr_ecc_err_type[1:0]),
.cfg_ecc_err_index (cfg_ecc_err_index[2:0]),
.rr_ecc_err_index (rr_ecc_err_index[2:0]),
mmu_trs_ctl trs1 (/*AUTOINST*/
.trs_rqv (trs_rqv[1]), // Templated
.trs_null_st (trs_null_st[1]), // Templated
.trs_waitrr3_st (trs_waitrr3_st[1]), // Templated
.trs_ecc_err (trs_ecc_err[1]), // Templated
.trs_err_type (trs1_err_type[2:0]), // Templated
.trs_err_index (trs1_err_index[2:0]), // Templated
.trs_ep_err (trs_ep_err[1]), // Templated
.trs_eperr_st (trs_eperr_st[1]), // Templated
.trs_eccerr_st (trs_eccerr_st[1]), // Templated
.tsb_hit_hw1 (htc_tsb_hit_hw1[1]), // Templated
.thr_valid_hw3 (htc_thr_valid_hw3[1]), // Templated
.ra2pahit_hw5 (htc_ra2pahit_hw5[1]), // Templated
.ranotpax_hw5 (htc_ranotpax_hw5[1]), // Templated
.tsm_waitfortte (tsm_waitfortte[1]), // Templated
.ep_miss_hw1 (htc_ep_miss_hw1[1]), // Templated
.rrindex_bit0 (htc_rrindex_bit0[1]), // Templated
.rrindex_bit1 (htc_rrindex_bit1[1]), // Templated
.l2_ecc_err_hw1 (l2_ecc_err_hw1[1]), // Templated
.cfg_ecc_err_m3 (cfg_ecc_err_m3[1]), // Templated
.rr_ecc_err_hw5 (rr_ecc_err_hw5[1]), // Templated
.l2_ecc_err_type (l2_ecc_err_type[1:0]),
.cfg_ecc_err_type (cfg_ecc_err_type[1:0]),
.rr_ecc_err_type (rr_ecc_err_type[1:0]),
.cfg_ecc_err_index (cfg_ecc_err_index[2:0]),
.rr_ecc_err_index (rr_ecc_err_index[2:0]),
.trs_rqv (trs_rqv[2]), // Templated
.trs_null_st (trs_null_st[2]), // Templated
.trs_waitrr3_st (trs_waitrr3_st[2]), // Templated
.trs_ecc_err (trs_ecc_err[2]), // Templated
.trs_err_type (trs2_err_type[2:0]), // Templated
.trs_err_index (trs2_err_index[2:0]), // Templated
.trs_ep_err (trs_ep_err[2]), // Templated
.trs_eperr_st (trs_eperr_st[2]), // Templated
.trs_eccerr_st (trs_eccerr_st[2]), // Templated
.tsb_hit_hw1 (htc_tsb_hit_hw1[2]), // Templated
.thr_valid_hw3 (htc_thr_valid_hw3[2]), // Templated
.ra2pahit_hw5 (htc_ra2pahit_hw5[2]), // Templated
.ranotpax_hw5 (htc_ranotpax_hw5[2]), // Templated
.tsm_waitfortte (tsm_waitfortte[2]), // Templated
.ep_miss_hw1 (htc_ep_miss_hw1[2]), // Templated
.rrindex_bit0 (htc_rrindex_bit0[2]), // Templated
.rrindex_bit1 (htc_rrindex_bit1[2]), // Templated
.l2_ecc_err_hw1 (l2_ecc_err_hw1[2]), // Templated
.cfg_ecc_err_m3 (cfg_ecc_err_m3[2]), // Templated
.rr_ecc_err_hw5 (rr_ecc_err_hw5[2]), // Templated
.l2_ecc_err_type (l2_ecc_err_type[1:0]),
.cfg_ecc_err_type (cfg_ecc_err_type[1:0]),
.rr_ecc_err_type (rr_ecc_err_type[1:0]),
.cfg_ecc_err_index (cfg_ecc_err_index[2:0]),
.rr_ecc_err_index (rr_ecc_err_index[2:0]),
.trs_rqv (trs_rqv[3]), // Templated
.trs_null_st (trs_null_st[3]), // Templated
.trs_waitrr3_st (trs_waitrr3_st[3]), // Templated
.trs_ecc_err (trs_ecc_err[3]), // Templated
.trs_err_type (trs3_err_type[2:0]), // Templated
.trs_err_index (trs3_err_index[2:0]), // Templated
.trs_ep_err (trs_ep_err[3]), // Templated
.trs_eperr_st (trs_eperr_st[3]), // Templated
.trs_eccerr_st (trs_eccerr_st[3]), // Templated
.tsb_hit_hw1 (htc_tsb_hit_hw1[3]), // Templated
.thr_valid_hw3 (htc_thr_valid_hw3[3]), // Templated
.ra2pahit_hw5 (htc_ra2pahit_hw5[3]), // Templated
.ranotpax_hw5 (htc_ranotpax_hw5[3]), // Templated
.tsm_waitfortte (tsm_waitfortte[3]), // Templated
.ep_miss_hw1 (htc_ep_miss_hw1[3]), // Templated
.rrindex_bit0 (htc_rrindex_bit0[3]), // Templated
.rrindex_bit1 (htc_rrindex_bit1[3]), // Templated
.l2_ecc_err_hw1 (l2_ecc_err_hw1[3]), // Templated
.cfg_ecc_err_m3 (cfg_ecc_err_m3[3]), // Templated
.rr_ecc_err_hw5 (rr_ecc_err_hw5[3]), // Templated
.l2_ecc_err_type (l2_ecc_err_type[1:0]),
.cfg_ecc_err_type (cfg_ecc_err_type[1:0]),
.rr_ecc_err_type (rr_ecc_err_type[1:0]),
.cfg_ecc_err_index (cfg_ecc_err_index[2:0]),
.rr_ecc_err_index (rr_ecc_err_index[2:0]),
.trs_rqv (trs_rqv[4]), // Templated
.trs_null_st (trs_null_st[4]), // Templated
.trs_waitrr3_st (trs_waitrr3_st[4]), // Templated
.trs_ecc_err (trs_ecc_err[4]), // Templated
.trs_err_type (trs4_err_type[2:0]), // Templated
.trs_err_index (trs4_err_index[2:0]), // Templated
.trs_ep_err (trs_ep_err[4]), // Templated
.trs_eperr_st (trs_eperr_st[4]), // Templated
.trs_eccerr_st (trs_eccerr_st[4]), // Templated
.tsb_hit_hw1 (htc_tsb_hit_hw1[4]), // Templated
.thr_valid_hw3 (htc_thr_valid_hw3[4]), // Templated
.ra2pahit_hw5 (htc_ra2pahit_hw5[4]), // Templated
.ranotpax_hw5 (htc_ranotpax_hw5[4]), // Templated
.tsm_waitfortte (tsm_waitfortte[4]), // Templated
.ep_miss_hw1 (htc_ep_miss_hw1[4]), // Templated
.rrindex_bit0 (htc_rrindex_bit0[4]), // Templated
.rrindex_bit1 (htc_rrindex_bit1[4]), // Templated
.l2_ecc_err_hw1 (l2_ecc_err_hw1[4]), // Templated
.cfg_ecc_err_m3 (cfg_ecc_err_m3[4]), // Templated
.rr_ecc_err_hw5 (rr_ecc_err_hw5[4]), // Templated
.l2_ecc_err_type (l2_ecc_err_type[1:0]),
.cfg_ecc_err_type (cfg_ecc_err_type[1:0]),
.rr_ecc_err_type (rr_ecc_err_type[1:0]),
.cfg_ecc_err_index (cfg_ecc_err_index[2:0]),
.rr_ecc_err_index (rr_ecc_err_index[2:0]),
.trs_rqv (trs_rqv[5]), // Templated
.trs_null_st (trs_null_st[5]), // Templated
.trs_waitrr3_st (trs_waitrr3_st[5]), // Templated
.trs_ecc_err (trs_ecc_err[5]), // Templated
.trs_err_type (trs5_err_type[2:0]), // Templated
.trs_err_index (trs5_err_index[2:0]), // Templated
.trs_ep_err (trs_ep_err[5]), // Templated
.trs_eperr_st (trs_eperr_st[5]), // Templated
.trs_eccerr_st (trs_eccerr_st[5]), // Templated
.tsb_hit_hw1 (htc_tsb_hit_hw1[5]), // Templated
.thr_valid_hw3 (htc_thr_valid_hw3[5]), // Templated
.ra2pahit_hw5 (htc_ra2pahit_hw5[5]), // Templated
.ranotpax_hw5 (htc_ranotpax_hw5[5]), // Templated
.tsm_waitfortte (tsm_waitfortte[5]), // Templated
.ep_miss_hw1 (htc_ep_miss_hw1[5]), // Templated
.rrindex_bit0 (htc_rrindex_bit0[5]), // Templated
.rrindex_bit1 (htc_rrindex_bit1[5]), // Templated
.l2_ecc_err_hw1 (l2_ecc_err_hw1[5]), // Templated
.cfg_ecc_err_m3 (cfg_ecc_err_m3[5]), // Templated
.rr_ecc_err_hw5 (rr_ecc_err_hw5[5]), // Templated
.l2_ecc_err_type (l2_ecc_err_type[1:0]),
.cfg_ecc_err_type (cfg_ecc_err_type[1:0]),
.rr_ecc_err_type (rr_ecc_err_type[1:0]),
.cfg_ecc_err_index (cfg_ecc_err_index[2:0]),
.rr_ecc_err_index (rr_ecc_err_index[2:0]),
.trs_rqv (trs_rqv[6]), // Templated
.trs_null_st (trs_null_st[6]), // Templated
.trs_waitrr3_st (trs_waitrr3_st[6]), // Templated
.trs_ecc_err (trs_ecc_err[6]), // Templated
.trs_err_type (trs6_err_type[2:0]), // Templated
.trs_err_index (trs6_err_index[2:0]), // Templated
.trs_ep_err (trs_ep_err[6]), // Templated
.trs_eperr_st (trs_eperr_st[6]), // Templated
.trs_eccerr_st (trs_eccerr_st[6]), // Templated
.tsb_hit_hw1 (htc_tsb_hit_hw1[6]), // Templated
.thr_valid_hw3 (htc_thr_valid_hw3[6]), // Templated
.ra2pahit_hw5 (htc_ra2pahit_hw5[6]), // Templated
.ranotpax_hw5 (htc_ranotpax_hw5[6]), // Templated
.tsm_waitfortte (tsm_waitfortte[6]), // Templated
.ep_miss_hw1 (htc_ep_miss_hw1[6]), // Templated
.rrindex_bit0 (htc_rrindex_bit0[6]), // Templated
.rrindex_bit1 (htc_rrindex_bit1[6]), // Templated
.l2_ecc_err_hw1 (l2_ecc_err_hw1[6]), // Templated
.cfg_ecc_err_m3 (cfg_ecc_err_m3[6]), // Templated
.rr_ecc_err_hw5 (rr_ecc_err_hw5[6]), // Templated
.l2_ecc_err_type (l2_ecc_err_type[1:0]),
.cfg_ecc_err_type (cfg_ecc_err_type[1:0]),
.rr_ecc_err_type (rr_ecc_err_type[1:0]),
.cfg_ecc_err_index (cfg_ecc_err_index[2:0]),
.rr_ecc_err_index (rr_ecc_err_index[2:0]),
.trs_rqv (trs_rqv[7]), // Templated
.trs_null_st (trs_null_st[7]), // Templated
.trs_waitrr3_st (trs_waitrr3_st[7]), // Templated
.trs_ecc_err (trs_ecc_err[7]), // Templated
.trs_err_type (trs7_err_type[2:0]), // Templated
.trs_err_index (trs7_err_index[2:0]), // Templated
.trs_ep_err (trs_ep_err[7]), // Templated
.trs_eperr_st (trs_eperr_st[7]), // Templated
.trs_eccerr_st (trs_eccerr_st[7]), // Templated
.tsb_hit_hw1 (htc_tsb_hit_hw1[7]), // Templated
.thr_valid_hw3 (htc_thr_valid_hw3[7]), // Templated
.ra2pahit_hw5 (htc_ra2pahit_hw5[7]), // Templated
.ranotpax_hw5 (htc_ranotpax_hw5[7]), // Templated
.tsm_waitfortte (tsm_waitfortte[7]), // Templated
.ep_miss_hw1 (htc_ep_miss_hw1[7]), // Templated
.rrindex_bit0 (htc_rrindex_bit0[7]), // Templated
.rrindex_bit1 (htc_rrindex_bit1[7]), // Templated
.l2_ecc_err_hw1 (l2_ecc_err_hw1[7]), // Templated
.cfg_ecc_err_m3 (cfg_ecc_err_m3[7]), // Templated
.rr_ecc_err_hw5 (rr_ecc_err_hw5[7]), // Templated
.l2_ecc_err_type (l2_ecc_err_type[1:0]),
.cfg_ecc_err_type (cfg_ecc_err_type[1:0]),
.rr_ecc_err_type (rr_ecc_err_type[1:0]),
.cfg_ecc_err_index (cfg_ecc_err_index[2:0]),
.rr_ecc_err_index (rr_ecc_err_index[2:0]),
////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
mmu_trc_ctl_spare_ctl_macro__num_2 spares (
.scan_out(spares_scanout),
////////////////////////////////////////////////////////
assign trs0_scanin = scan_in ;
assign trs1_scanin = trs0_scanout ;
assign trs2_scanin = trs1_scanout ;
assign trs3_scanin = trs2_scanout ;
assign trs4_scanin = trs3_scanout ;
assign trs5_scanin = trs4_scanout ;
assign trs6_scanin = trs5_scanout ;
assign trs7_scanin = trs6_scanout ;
assign spares_scanin = trs7_scanout ;
assign scan_out = spares_scanout ;
// verilog-library-directories:("." "v")
// any PARAMS parms go into naming of macro
module mmu_trc_ctl_l1clkhdr_ctl_macro (
// any PARAMS parms go into naming of macro
module mmu_trc_ctl_msff_ctl_macro__width_1 (
assign fdin[0:0] = din[0:0];
// any PARAMS parms go into naming of macro
module mmu_trc_ctl_msff_ctl_macro__width_3 (
assign fdin[2:0] = din[2:0];
// Description: Spare gate macro for control blocks
// Param num controls the number of times the macro is added
// flops=0 can be used to use only combination spare logic
module mmu_trc_ctl_spare_ctl_macro__num_2 (
wire spare0_buf_32x_unused;
wire spare0_nand3_8x_unused;
wire spare0_inv_8x_unused;
wire spare0_aoi22_4x_unused;
wire spare0_buf_8x_unused;
wire spare0_oai22_4x_unused;
wire spare0_inv_16x_unused;
wire spare0_nand2_16x_unused;
wire spare0_nor3_4x_unused;
wire spare0_nand2_8x_unused;
wire spare0_buf_16x_unused;
wire spare0_nor2_16x_unused;
wire spare0_inv_32x_unused;
wire spare1_buf_32x_unused;
wire spare1_nand3_8x_unused;
wire spare1_inv_8x_unused;
wire spare1_aoi22_4x_unused;
wire spare1_buf_8x_unused;
wire spare1_oai22_4x_unused;
wire spare1_inv_16x_unused;
wire spare1_nand2_16x_unused;
wire spare1_nor3_4x_unused;
wire spare1_nand2_8x_unused;
wire spare1_buf_16x_unused;
wire spare1_nor2_16x_unused;
wire spare1_inv_32x_unused;
cl_sc1_msff_8x spare0_flop (.l1clk(l1clk),
cl_u1_buf_32x spare0_buf_32x (.in(1'b1),
.out(spare0_buf_32x_unused));
cl_u1_nand3_8x spare0_nand3_8x (.in0(1'b1),
.out(spare0_nand3_8x_unused));
cl_u1_inv_8x spare0_inv_8x (.in(1'b1),
.out(spare0_inv_8x_unused));
cl_u1_aoi22_4x spare0_aoi22_4x (.in00(1'b1),
.out(spare0_aoi22_4x_unused));
cl_u1_buf_8x spare0_buf_8x (.in(1'b1),
.out(spare0_buf_8x_unused));
cl_u1_oai22_4x spare0_oai22_4x (.in00(1'b1),
.out(spare0_oai22_4x_unused));
cl_u1_inv_16x spare0_inv_16x (.in(1'b1),
.out(spare0_inv_16x_unused));
cl_u1_nand2_16x spare0_nand2_16x (.in0(1'b1),
.out(spare0_nand2_16x_unused));
cl_u1_nor3_4x spare0_nor3_4x (.in0(1'b0),
.out(spare0_nor3_4x_unused));
cl_u1_nand2_8x spare0_nand2_8x (.in0(1'b1),
.out(spare0_nand2_8x_unused));
cl_u1_buf_16x spare0_buf_16x (.in(1'b1),
.out(spare0_buf_16x_unused));
cl_u1_nor2_16x spare0_nor2_16x (.in0(1'b0),
.out(spare0_nor2_16x_unused));
cl_u1_inv_32x spare0_inv_32x (.in(1'b1),
.out(spare0_inv_32x_unused));
cl_sc1_msff_8x spare1_flop (.l1clk(l1clk),
cl_u1_buf_32x spare1_buf_32x (.in(1'b1),
.out(spare1_buf_32x_unused));
cl_u1_nand3_8x spare1_nand3_8x (.in0(1'b1),
.out(spare1_nand3_8x_unused));
cl_u1_inv_8x spare1_inv_8x (.in(1'b1),
.out(spare1_inv_8x_unused));
cl_u1_aoi22_4x spare1_aoi22_4x (.in00(1'b1),
.out(spare1_aoi22_4x_unused));
cl_u1_buf_8x spare1_buf_8x (.in(1'b1),
.out(spare1_buf_8x_unused));
cl_u1_oai22_4x spare1_oai22_4x (.in00(1'b1),
.out(spare1_oai22_4x_unused));
cl_u1_inv_16x spare1_inv_16x (.in(1'b1),
.out(spare1_inv_16x_unused));
cl_u1_nand2_16x spare1_nand2_16x (.in0(1'b1),
.out(spare1_nand2_16x_unused));
cl_u1_nor3_4x spare1_nor3_4x (.in0(1'b0),
.out(spare1_nor3_4x_unused));
cl_u1_nand2_8x spare1_nand2_8x (.in0(1'b1),
.out(spare1_nand2_8x_unused));
cl_u1_buf_16x spare1_buf_16x (.in(1'b1),
.out(spare1_buf_16x_unused));
cl_u1_nor2_16x spare1_nor2_16x (.in0(1'b0),
.out(spare1_nor2_16x_unused));
cl_u1_inv_32x spare1_inv_32x (.in(1'b1),
.out(spare1_inv_32x_unused));