// ========== Copyright Header Begin ==========================================
// OpenSPARC T2 Processor File: mmu_tmc_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_data_rcvd_hw1;
input [7:0] htc_tlb_miss_m;
input [7:0] htc_tsb_done_hw2;
input [7:0] htc_vld_tsbptr_m2;
input [7:0] htc_thr_valid_m1;
input [7:0] htc_thr_valid_m0;
input [7:0] htc_hwtw_burst;
input [7:0] htc_cindex_bit0;
input [7:0] htc_cindex_bit1;
input [7:0] trs_eperr_st;
input [7:0] trs_eccerr_st;
output [7:0] tsm_tsb_miss_hw2;
output [7:0] tsm_waitfortte;
assign pce_ov = tcu_pce_ov;
///////////////////////////////////////////////////
///////////////////////////////////////////////////
mmu_tmc_ctl_l1clkhdr_ctl_macro clkgen (
/* mmu_tsm_ctl AUTO_TEMPLATE
.tlb_miss_m(htc_tlb_miss_m[@]),
.cindex_bit0(htc_cindex_bit0[@]),
.cindex_bit1(htc_cindex_bit1[@]),
.data_rcvd_hw1(htc_data_rcvd_hw1[@]),
.thr_valid_m1(htc_thr_valid_m1[@]),
.thr_valid_m0(htc_thr_valid_m0[@]),
.hwtw_burst(htc_hwtw_burst[@]),
.tsb_done_hw2(htc_tsb_done_hw2[@]),
.tsb_vld_tsbptr_m2(htc_vld_tsbptr_m2[@]),
.tsm_tsb_miss_hw2(tsm_tsb_miss_hw2[@]),
.tsm_waitfortte(tsm_waitfortte[@]),
.trs_eperr_st(trs_eperr_st[@]),
.trs_eccerr_st(trs_eccerr_st[@]));
mmu_tsm_ctl tsm0 (/*AUTOINST*/
.tsm_tsb_miss_hw2 (tsm_tsb_miss_hw2[0]), // Templated
.tsm_rqv (tsm_rqv[0]), // Templated
.tsm_waitfortte (tsm_waitfortte[0]), // Templated
.data_rcvd_hw1 (htc_data_rcvd_hw1[0]), // Templated
.thr_valid_m1 (htc_thr_valid_m1[0]), // Templated
.thr_valid_m0 (htc_thr_valid_m0[0]), // Templated
.hwtw_burst (htc_hwtw_burst[0]), // Templated
.tlb_miss_m (htc_tlb_miss_m[0]), // Templated
.cindex_bit0 (htc_cindex_bit0[0]), // Templated
.cindex_bit1 (htc_cindex_bit1[0]), // Templated
.tsb_done_hw2 (htc_tsb_done_hw2[0]), // Templated
.vld_tsbptr_m2 (htc_vld_tsbptr_m2[0]), // Templated
.trs_eperr_st (trs_eperr_st[0]), // Templated
.trs_eccerr_st (trs_eccerr_st[0]),
.spc_bclk(spc_bclk)); // Templated
mmu_tsm_ctl tsm1 (/*AUTOINST*/
.tsm_tsb_miss_hw2 (tsm_tsb_miss_hw2[1]), // Templated
.tsm_rqv (tsm_rqv[1]), // Templated
.tsm_waitfortte (tsm_waitfortte[1]), // Templated
.data_rcvd_hw1 (htc_data_rcvd_hw1[1]), // Templated
.thr_valid_m1 (htc_thr_valid_m1[1]), // Templated
.thr_valid_m0 (htc_thr_valid_m0[1]), // Templated
.hwtw_burst (htc_hwtw_burst[1]), // Templated
.tlb_miss_m (htc_tlb_miss_m[1]), // Templated
.cindex_bit0 (htc_cindex_bit0[1]), // Templated
.cindex_bit1 (htc_cindex_bit1[1]), // Templated
.tsb_done_hw2 (htc_tsb_done_hw2[1]), // Templated
.vld_tsbptr_m2 (htc_vld_tsbptr_m2[1]), // Templated
.trs_eperr_st (trs_eperr_st[1]), // Templated
.trs_eccerr_st (trs_eccerr_st[1]),
.spc_bclk(spc_bclk)); // Templated
mmu_tsm_ctl tsm2 (/*AUTOINST*/
.tsm_tsb_miss_hw2 (tsm_tsb_miss_hw2[2]), // Templated
.tsm_rqv (tsm_rqv[2]), // Templated
.tsm_waitfortte (tsm_waitfortte[2]), // Templated
.data_rcvd_hw1 (htc_data_rcvd_hw1[2]), // Templated
.thr_valid_m1 (htc_thr_valid_m1[2]), // Templated
.thr_valid_m0 (htc_thr_valid_m0[2]), // Templated
.hwtw_burst (htc_hwtw_burst[2]), // Templated
.tlb_miss_m (htc_tlb_miss_m[2]), // Templated
.cindex_bit0 (htc_cindex_bit0[2]), // Templated
.cindex_bit1 (htc_cindex_bit1[2]), // Templated
.tsb_done_hw2 (htc_tsb_done_hw2[2]), // Templated
.vld_tsbptr_m2 (htc_vld_tsbptr_m2[2]), // Templated
.trs_eperr_st (trs_eperr_st[2]), // Templated
.trs_eccerr_st (trs_eccerr_st[2]),
.spc_bclk(spc_bclk)); // Templated
mmu_tsm_ctl tsm3 (/*AUTOINST*/
.tsm_tsb_miss_hw2 (tsm_tsb_miss_hw2[3]), // Templated
.tsm_rqv (tsm_rqv[3]), // Templated
.tsm_waitfortte (tsm_waitfortte[3]), // Templated
.data_rcvd_hw1 (htc_data_rcvd_hw1[3]), // Templated
.thr_valid_m1 (htc_thr_valid_m1[3]), // Templated
.thr_valid_m0 (htc_thr_valid_m0[3]), // Templated
.hwtw_burst (htc_hwtw_burst[3]), // Templated
.tlb_miss_m (htc_tlb_miss_m[3]), // Templated
.cindex_bit0 (htc_cindex_bit0[3]), // Templated
.cindex_bit1 (htc_cindex_bit1[3]), // Templated
.tsb_done_hw2 (htc_tsb_done_hw2[3]), // Templated
.vld_tsbptr_m2 (htc_vld_tsbptr_m2[3]), // Templated
.trs_eperr_st (trs_eperr_st[3]), // Templated
.trs_eccerr_st (trs_eccerr_st[3]),
.spc_bclk(spc_bclk)); // Templated
mmu_tsm_ctl tsm4 (/*AUTOINST*/
.tsm_tsb_miss_hw2 (tsm_tsb_miss_hw2[4]), // Templated
.tsm_rqv (tsm_rqv[4]), // Templated
.tsm_waitfortte (tsm_waitfortte[4]), // Templated
.data_rcvd_hw1 (htc_data_rcvd_hw1[4]), // Templated
.thr_valid_m1 (htc_thr_valid_m1[4]), // Templated
.thr_valid_m0 (htc_thr_valid_m0[4]), // Templated
.hwtw_burst (htc_hwtw_burst[4]), // Templated
.tlb_miss_m (htc_tlb_miss_m[4]), // Templated
.cindex_bit0 (htc_cindex_bit0[4]), // Templated
.cindex_bit1 (htc_cindex_bit1[4]), // Templated
.tsb_done_hw2 (htc_tsb_done_hw2[4]), // Templated
.vld_tsbptr_m2 (htc_vld_tsbptr_m2[4]), // Templated
.trs_eperr_st (trs_eperr_st[4]), // Templated
.trs_eccerr_st (trs_eccerr_st[4]),
.spc_bclk(spc_bclk)); // Templated
mmu_tsm_ctl tsm5 (/*AUTOINST*/
.tsm_tsb_miss_hw2 (tsm_tsb_miss_hw2[5]), // Templated
.tsm_rqv (tsm_rqv[5]), // Templated
.tsm_waitfortte (tsm_waitfortte[5]), // Templated
.data_rcvd_hw1 (htc_data_rcvd_hw1[5]), // Templated
.thr_valid_m1 (htc_thr_valid_m1[5]), // Templated
.thr_valid_m0 (htc_thr_valid_m0[5]), // Templated
.hwtw_burst (htc_hwtw_burst[5]), // Templated
.tlb_miss_m (htc_tlb_miss_m[5]), // Templated
.cindex_bit0 (htc_cindex_bit0[5]), // Templated
.cindex_bit1 (htc_cindex_bit1[5]), // Templated
.tsb_done_hw2 (htc_tsb_done_hw2[5]), // Templated
.vld_tsbptr_m2 (htc_vld_tsbptr_m2[5]), // Templated
.trs_eperr_st (trs_eperr_st[5]), // Templated
.trs_eccerr_st (trs_eccerr_st[5]),
.spc_bclk(spc_bclk)); // Templated
mmu_tsm_ctl tsm6 (/*AUTOINST*/
.tsm_tsb_miss_hw2 (tsm_tsb_miss_hw2[6]), // Templated
.tsm_rqv (tsm_rqv[6]), // Templated
.tsm_waitfortte (tsm_waitfortte[6]), // Templated
.data_rcvd_hw1 (htc_data_rcvd_hw1[6]), // Templated
.thr_valid_m1 (htc_thr_valid_m1[6]), // Templated
.thr_valid_m0 (htc_thr_valid_m0[6]), // Templated
.hwtw_burst (htc_hwtw_burst[6]), // Templated
.tlb_miss_m (htc_tlb_miss_m[6]), // Templated
.cindex_bit0 (htc_cindex_bit0[6]), // Templated
.cindex_bit1 (htc_cindex_bit1[6]), // Templated
.tsb_done_hw2 (htc_tsb_done_hw2[6]), // Templated
.vld_tsbptr_m2 (htc_vld_tsbptr_m2[6]), // Templated
.trs_eperr_st (trs_eperr_st[6]), // Templated
.trs_eccerr_st (trs_eccerr_st[6]),
.spc_bclk(spc_bclk)); // Templated
mmu_tsm_ctl tsm7 (/*AUTOINST*/
.tsm_tsb_miss_hw2 (tsm_tsb_miss_hw2[7]), // Templated
.tsm_rqv (tsm_rqv[7]), // Templated
.tsm_waitfortte (tsm_waitfortte[7]), // Templated
.data_rcvd_hw1 (htc_data_rcvd_hw1[7]), // Templated
.thr_valid_m1 (htc_thr_valid_m1[7]), // Templated
.thr_valid_m0 (htc_thr_valid_m0[7]), // Templated
.hwtw_burst (htc_hwtw_burst[7]), // Templated
.tlb_miss_m (htc_tlb_miss_m[7]), // Templated
.cindex_bit0 (htc_cindex_bit0[7]), // Templated
.cindex_bit1 (htc_cindex_bit1[7]), // Templated
.tsb_done_hw2 (htc_tsb_done_hw2[7]), // Templated
.vld_tsbptr_m2 (htc_vld_tsbptr_m2[7]), // Templated
.trs_eperr_st (trs_eperr_st[7]), // Templated
.trs_eccerr_st (trs_eccerr_st[7]),
.spc_bclk(spc_bclk)); // Templated
////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
mmu_tmc_ctl_spare_ctl_macro__num_3 spares (
.scan_out(spares_scanout),
////////////////////////////////////////////////////////
assign tsm0_scanin = scan_in ;
assign tsm1_scanin = tsm0_scanout ;
assign tsm2_scanin = tsm1_scanout ;
assign tsm3_scanin = tsm2_scanout ;
assign tsm4_scanin = tsm3_scanout ;
assign tsm5_scanin = tsm4_scanout ;
assign tsm6_scanin = tsm5_scanout ;
assign tsm7_scanin = tsm6_scanout ;
assign spares_scanin = tsm7_scanout ;
assign scan_out = spares_scanout ;
// verilog-library-directories:("." "v")
// any PARAMS parms go into naming of macro
module mmu_tmc_ctl_l1clkhdr_ctl_macro (
// any PARAMS parms go into naming of macro
module mmu_tmc_ctl_msff_ctl_macro__width_1 (
assign fdin[0:0] = din[0:0];
// any PARAMS parms go into naming of macro
module mmu_tmc_ctl_msff_ctl_macro__width_4 (
assign fdin[3:0] = din[3: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_tmc_ctl_spare_ctl_macro__num_3 (
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;
wire spare2_buf_32x_unused;
wire spare2_nand3_8x_unused;
wire spare2_inv_8x_unused;
wire spare2_aoi22_4x_unused;
wire spare2_buf_8x_unused;
wire spare2_oai22_4x_unused;
wire spare2_inv_16x_unused;
wire spare2_nand2_16x_unused;
wire spare2_nor3_4x_unused;
wire spare2_nand2_8x_unused;
wire spare2_buf_16x_unused;
wire spare2_nor2_16x_unused;
wire spare2_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));
cl_sc1_msff_8x spare2_flop (.l1clk(l1clk),
cl_u1_buf_32x spare2_buf_32x (.in(1'b1),
.out(spare2_buf_32x_unused));
cl_u1_nand3_8x spare2_nand3_8x (.in0(1'b1),
.out(spare2_nand3_8x_unused));
cl_u1_inv_8x spare2_inv_8x (.in(1'b1),
.out(spare2_inv_8x_unused));
cl_u1_aoi22_4x spare2_aoi22_4x (.in00(1'b1),
.out(spare2_aoi22_4x_unused));
cl_u1_buf_8x spare2_buf_8x (.in(1'b1),
.out(spare2_buf_8x_unused));
cl_u1_oai22_4x spare2_oai22_4x (.in00(1'b1),
.out(spare2_oai22_4x_unused));
cl_u1_inv_16x spare2_inv_16x (.in(1'b1),
.out(spare2_inv_16x_unused));
cl_u1_nand2_16x spare2_nand2_16x (.in0(1'b1),
.out(spare2_nand2_16x_unused));
cl_u1_nor3_4x spare2_nor3_4x (.in0(1'b0),
.out(spare2_nor3_4x_unused));
cl_u1_nand2_8x spare2_nand2_8x (.in0(1'b1),
.out(spare2_nand2_8x_unused));
cl_u1_buf_16x spare2_buf_16x (.in(1'b1),
.out(spare2_buf_16x_unused));
cl_u1_nor2_16x spare2_nor2_16x (.in0(1'b0),
.out(spare2_nor2_16x_unused));
cl_u1_inv_32x spare2_inv_32x (.in(1'b1),
.out(spare2_inv_32x_unused));