// ========== Copyright Header Begin ==========================================
// OpenSPARC T2 Processor File: l2t_vuad_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 ============================================
arbadr_idx_c1c2comp_c1_n,
arbadr_idx_c1c3comp_c1_n,
arbadr_idx_c1c4comp_c1_n,
arbadr_idx_c1c5comp_c1_n,
arbdec_arbdp_inst_way_c2,
arb_arbdp_vuadctl_pst_no_ctrue_c2,
arb_arbdp_pst_with_ctrue_c2,
arb_vuadctl_no_bypass_px2,
vuaddp_vuad_tagd_sel_c2_d1,
vuaddp_alloc_set_cond_c3,
vuaddp_alloc_rst_cond_c3,
vuaddp_bistordiag_wr_vd_c4,
vuaddp_bistordiag_wr_ua_c4,
vuaddp_sel_ua_wr_data_byp,
vuaddp_sel_vd_wr_data_byp,
vuaddp_sel_diag0_data_wr_c3,
vuaddp_sel_diag1_data_wr_c3,
vuaddp_vuad_array_wr_en0_c4,
vuaddp_vuad_array_wr_en1_c4,
vuad_usaloc_mux_used_and_alloc_comb_sel0,
vuad_usaloc_mux_used_and_alloc_comb_sel1,
vuad_usaloc_mux_used_and_alloc_comb_sel2,
vuad_usaloc_mux_used_and_alloc_comb_sel3,
vuad_usaloc_mux_used_and_alloc_comb_sel4,
vuad_usaloc_mux_used_and_alloc_comb_sel5,
mux_valid_dirty_c1_sel2);
wire [4:0] wr_addr_entry;
wire ff_addr1to0_c1_scanin;
wire ff_addr1to0_c1_scanout;
wire ff_addr8_c1_scanout;
wire ff_addr7_c1_scanout;
wire ff_vuadctl_no_bypass_c1_scanin;
wire ff_vuadctl_no_bypass_c1_scanout;
wire vuaddp_vuad_sel_c2orc3;
wire vuaddp_vuad_sel_rd_c2;
wire vuadctl_no_bypass_c1_1;
wire ff_vuadctl_no_bypass_c1_1_scanin;
wire ff_vuadctl_no_bypass_c1_1_scanout;
wire ff_vuaddp_vuad_sel_c2_scanin;
wire ff_vuaddp_vuad_sel_c2_scanout;
wire ff_vuaddp_vuad_sel_c2_d1_scanin;
wire ff_vuaddp_vuad_sel_c2_d1_scanout;
wire ff_vuad_sel_wr_d1_scanin;
wire ff_vuad_sel_wr_d1_scanout;
wire ff_vuad_tagd_sel_c2_d1_scanin;
wire ff_vuad_tagd_sel_c2_d1_scanout;
wire ff_wr64_inst_c3_scanin;
wire ff_wr64_inst_c3_scanout;
wire ff_arb_acc_vd_c3_scanin;
wire ff_arb_acc_vd_c3_scanout;
wire ff_arb_acc_ua_c3_scanin;
wire ff_arb_acc_ua_c3_scanout;
wire ff_inst_vld_c3_scanin;
wire ff_inst_vld_c3_scanout;
wire ff_inst_vld_c4_scanin;
wire ff_inst_vld_c4_scanout;
wire ff_inst_vld_c5_scanin;
wire ff_inst_vld_c5_scanout;
wire ff_arb_inst_diag_c2_scanin;
wire ff_arb_inst_diag_c2_scanout;
wire ff_arb_inst_diag_c3_scanin;
wire ff_arb_inst_diag_c3_scanout;
wire ff_arb_inst_diag_c4_scanin;
wire ff_arb_inst_diag_c4_scanout;
wire ff_mux_idx_c4_scanin;
wire ff_mux_idx_c4_scanout;
wire ff_l2_bypass_mode_on_d1_scanin;
wire ff_l2_bypass_mode_on_d1_scanout;
wire ff_bistordiag_wr_vd_c4_scanin;
wire ff_bistordiag_wr_vd_c4_scanout;
wire ff_bistordiag_wr_ua_c4_scanin;
wire ff_bistordiag_wr_ua_c4_scanout;
wire ff_vuad_array_wr_en0_c4_scanin;
wire ff_vuad_array_wr_en0_c4_scanout;
wire ff_vuad_array_wr_en1_c4_scanin;
wire ff_vuad_array_wr_en1_c4_scanout;
wire ff_vuad_array_wr_en0_c5_scanin;
wire ff_vuad_array_wr_en0_c5_scanout;
wire ff_vuad_array_wr_en1_c5_scanin;
wire ff_vuad_array_wr_en1_c5_scanout;
wire ff_vuad_array_wr_en0_c52_scanin;
wire ff_vuad_array_wr_en0_c52_scanout;
wire ff_vuad_array_wr_en1_c52_scanin;
wire ff_vuad_array_wr_en1_c52_scanout;
wire ff_inst_int_c2_scanin;
wire ff_inst_int_c2_scanout;
wire ff_inst_int_c3_scanin;
wire ff_inst_int_c3_scanout;
wire ff_inst_int_c4_scanin;
wire ff_inst_int_c4_scanout;
wire ff_inst_int_c5_scanin;
wire ff_inst_int_c5_scanout;
wire ff_vuad_error_c5_scanin;
wire ff_vuad_error_c5_scanout;
wire ff_vuad_error_c52_scanin;
wire ff_vuad_error_c52_scanout;
wire ff_vuad_error_c6_scanin;
wire ff_vuad_error_c6_scanout;
wire ff_vuad_error_c7_scanin;
wire ff_vuad_error_c7_scanout;
wire ff_vuad_error_c8_scanin;
wire ff_vuad_error_c8_scanout;
wire ff_fill_way_c3_scanin;
wire ff_fill_way_c3_scanout;
wire ff_alloc_set_cond_c3_scanin;
wire ff_alloc_set_cond_c3_scanout;
wire ff_alloc_rst_cond_c3_scanin;
wire ff_alloc_rst_cond_c3_scanout;
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
input [8:0] bist_vuad_idx_c3 ;
input [8:0] evctag_vuad_idx_c3;
//input [15:0] tag_hit_way_vld_c3;
//input [15:0] tagdp_lru_way_sel_c3;
//input tag_st_to_data_array_c3;
input arb_decdp_wr64_inst_c2;
input arb_acc_vd_c2; // Top // diagnostic access only
input arb_acc_ua_c2; // Top // diagnostic access only
input arbadr_idx_c1c2comp_c1_n ; // from arbaddr Top
input arbadr_idx_c1c3comp_c1_n ; // from arbaddr Top
input arbadr_idx_c1c4comp_c1_n ; // from arbaddr Top
input arbadr_idx_c1c5comp_c1_n ; // from arbaddr. POST_3.0 Top
input arb_decdp_inst_int_c1; // Top // int 5.0 changes
input csr_l2_bypass_mode_on; // Top
input arb_inst_diag_c1; // Top
input bist_vuad_wr_en; // Top // This is a C3 signal.
input arb_inst_vld_c2; // Top
input arb_inst_l2vuad_vld_c3; // Top
input arb_decdp_st_inst_c3; // Top
input arbdec_arbdp_inst_fb_c2; // Top
//input arb_vuad_ce_err_c3;
input [3:0] arbdec_arbdp_inst_way_c2;
input arb_arbdp_vuadctl_pst_no_ctrue_c2; // Top
input arb_decdp_cas1_inst_c2; // Top
input arb_arbdp_pst_with_ctrue_c2; // Top
input arb_decdp_cas2_inst_c2; // Top
input arbdec_arbdp_inst_mb_c2; // Top
input arb_vuadctl_no_bypass_px2; // Top
output vuaddp_vuad_sel_c2; // Bottom
output vuaddp_vuad_sel_c2_d1; // Bottom
output vuaddp_vuad_sel_c4; // Bottom
output vuaddp_vuad_sel_rd; // Bottom
output vuaddp_vuad_tagd_sel_c2_d1; // Top
//output vuaddp_st_to_data_array_c3; // Bottom
output vuaddp_wr64_inst_c3 ; // Bottom
output vuaddp_alloc_set_cond_c3; // Bottom
output vuaddp_alloc_rst_cond_c3; // Bottom
output vuaddp_vuad_error_c8; // Bottom
//output [15:0] vuaddp_hit_wayvld_c3; // Bottom
output [15:0] vuaddp_fill_way_c3; // Bottom
//output [15:0] vuaddp_lru_way_c3; // Bottom
output vuaddp_bistordiag_wr_vd_c4 ; // Bottom // bist or diag access
output vuaddp_bistordiag_wr_ua_c4 ; // Bottom // bist or diag access
output vuaddp_sel_ua_wr_data_byp; // Bottom
output vuaddp_sel_vd_wr_data_byp; // Bottom
output vuaddp_sel_diag0_data_wr_c3; // Bottom sel between diagnostic and bist data
output vuaddp_sel_diag1_data_wr_c3; // Bottom sel between diagnostic and bist data
output vuaddp_vuad_array_wr_en0_c4; // Bottom // Change to C4
output vuaddp_vuad_array_wr_en1_c4; // Bottom // Change to C4
output [8:0] vuaddp_vuad_idx_c4; // NEW PIN
output [4:0] vuad_rd_addr1_r0;
output [4:0] vuad_rd_addr2_r0;
output vuad_rd_addr_sel_r0;
output [4:0] vuad_wr_addr_r0; // address bits 6:2
output [3:0] vuad_word_en_r0; // decoded address bits 1:0
output vuad_wr_en_r0c0; // decoded address bits 8:7
output vuad_wr_en_r0c1; // decoded address bits 8:7
output [3:0] vuad_mux1_h_sel_r0;
output [3:0] vuad_mux1_l_sel_r0;
output vuad_mux2_sel_r0; //int 5.0 change
output [4:0] vuad_rd_addr1_r1;
output [4:0] vuad_rd_addr2_r1;
output vuad_rd_addr_sel_r1;
output [4:0] vuad_wr_addr_r1; // address bits 6:2
output [3:0] vuad_word_en_r1; // decoded address bits 1:0
output vuad_wr_en_r1c0; // decoded address bits 8:7
output vuad_wr_en_r1c1; // decoded address bits 8:7
output [4:0] vuad_rd_addr1_r2;
output [4:0] vuad_rd_addr2_r2;
output vuad_rd_addr_sel_r2;
output [4:0] vuad_wr_addr_r2; // address bits 6:2
output [3:0] vuad_word_en_r2; // decoded address bits 1:0
output vuad_wr_en_r2c0; // decoded address bits 8:7
output vuad_wr_en_r2c1; // decoded address bits 8:7
output [3:0] vuad_mux1_h_sel_r2;
output [3:0] vuad_mux1_l_sel_r2;
output vuad_mux2_sel_r2; // int 5.0 changes
output [4:0] vuad_rd_addr1_r3;
output [4:0] vuad_rd_addr2_r3;
output vuad_rd_addr_sel_r3;
output [4:0] vuad_wr_addr_r3; // address bits 6:2
output [3:0] vuad_word_en_r3; // decoded address bits 1:0
output vuad_wr_en_r3c0; // decoded address bits 8:7
output vuad_wr_en_r3c1; // decoded address bits 8:7
output [1:0] vuad_mux_sel; // middle mux select.
output vuad_usaloc_mux_used_and_alloc_comb_sel0;
output vuad_usaloc_mux_used_and_alloc_comb_sel1;
output vuad_usaloc_mux_used_and_alloc_comb_sel2;
output vuad_usaloc_mux_used_and_alloc_comb_sel3;
output vuad_usaloc_mux_used_and_alloc_comb_sel4;
output vuad_usaloc_mux_used_and_alloc_comb_sel5;
output mux_valid_dirty_c1_sel0;
output mux_valid_dirty_c1_sel1;
output mux_valid_dirty_c1_sel2;
wire vuad_array_wr_en0_c3, vuad_array_wr_en0_c5, vuad_array_wr_en0_c52;
// BS 03/11/04 extra cycle for mem access
wire vuad_array_wr_en1_c3, vuad_array_wr_en1_c5, vuad_array_wr_en1_c52;
// BS 03/11/04 extra cycle for mem access
wire vuad_sel_wr, vuad_sel_c4orc5;
wire l2_bypass_mode_on_d1;
wire inst_int_c2; // int 5.0 changes
wire inst_int_c3; // int 5.0 changes
wire inst_int_c4; // int 5.0 changes
wire inst_int_c5; // int 5.0 changes
wire vuad_error_c4, vuad_error_c5, vuad_error_c52; // BS 03/11/04 extra cycle for mem access
wire vuad_error_c6, vuad_error_c7;
wire [3:0] dec_lo_fill_way_c2;
wire [3:0] dec_hi_fill_way_c2;
wire bistordiag_wr_vd_c3, bistordiag_wr_ua_c3 ;
wire [8:0] vuad_acc_idx_c3;
wire vuadctl_no_bypass_c1;
//////////////////////////////////////////////////
//////////////////////////////////////////////////
assign wr_addr_entry = wr_addr[6:2] ;
assign wr_word_en[0] = ~wr_addr[1] & ~wr_addr[0] ;
assign wr_word_en[1] = ~wr_addr[1] & wr_addr[0] ;
assign wr_word_en[2] = wr_addr[1] & ~wr_addr[0] ;
assign wr_word_en[3] = wr_addr[1] & wr_addr[0] ;
assign wr_en[0] = ~wr_addr[8] & ~wr_addr[7] ;
assign wr_en[1] = ~wr_addr[8] & wr_addr[7] ;
assign wr_en[2] = wr_addr[8] & ~wr_addr[7] ;
assign wr_en[3] = wr_addr[8] & wr_addr[7] ;
assign rd_addr_sel_n = ~rd_addr_sel;
l2t_vuad_ctl_mux_ctl_macro__mux_aonpe__ports_2__width_2 mux_addr1to0_px2
(.dout (addr1to0_px2[1:0] ) ,
l2t_vuad_ctl_msff_ctl_macro__width_2 ff_addr1to0_c1 // int 5.0 change
(.din(addr1to0_px2[1:0]),
.scan_in(ff_addr1to0_c1_scanin),
.scan_out(ff_addr1to0_c1_scanout),
l2t_vuad_ctl_mux_ctl_macro__mux_aonpe__ports_2__width_1 mux_addr8_px2
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_addr8_c1
.scan_in(ff_addr8_c1_scanin),
.scan_out(ff_addr8_c1_scanout),
l2t_vuad_ctl_mux_ctl_macro__mux_aonpe__ports_2__width_1 mux_addr7_px2
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_addr7_c1 // int 5.0 change
.scan_in(ff_addr7_c1_scanin),
.scan_out(ff_addr7_c1_scanout),
// Mux2 of the read address.
// Buffer appropriately to get the following
assign vuad_rd_addr1_r0 = rd_addr1[6:2];
assign vuad_rd_addr2_r0 = rd_addr2[6:2];
assign vuad_rd_addr_sel_r0 = rd_addr_sel ;
assign vuad_wr_addr_r0[4:0] = wr_addr_entry[4:0] ;
assign vuad_word_en_r0 = wr_word_en ;
assign vuad_wr_en_r0c0 = wr_en[0] & wr_en0 ;
assign vuad_wr_en_r0c1 = wr_en[0] & wr_en1 ;
assign vuad_mux1_h_sel_r0[0] = ~addr1to0_c1[1] & ~addr1to0_c1[0] ;
assign vuad_mux1_h_sel_r0[1] = ~addr1to0_c1[1] & addr1to0_c1[0] ;
assign vuad_mux1_h_sel_r0[2] = addr1to0_c1[1] & ~addr1to0_c1[0] ;
assign vuad_mux1_h_sel_r0[3] = addr1to0_c1[1] & addr1to0_c1[0] ;
assign vuad_mux1_l_sel_r0 = vuad_mux1_h_sel_r0 ;
assign vuad_mux2_sel_r0= addr7_c1; // int 5.0 change
assign vuad_rd_en_r0 = ~addr7_px2 & array_rd_en;
assign vuad_rd_addr1_r1 = rd_addr1[6:2];
assign vuad_rd_addr2_r1 = rd_addr2[6:2];
assign vuad_rd_addr_sel_r1 = rd_addr_sel ;
assign vuad_wr_addr_r1[4:0] = wr_addr_entry[4:0] ;
assign vuad_word_en_r1 = wr_word_en ;
assign vuad_wr_en_r1c0 = wr_en[1] & wr_en0 ;
assign vuad_wr_en_r1c1 = wr_en[1] & wr_en1 ;
assign vuad_rd_en_r1 = addr7_px2 & array_rd_en ;
assign vuad_rd_addr1_r2 = rd_addr1[6:2];
assign vuad_rd_addr2_r2 = rd_addr2[6:2];
assign vuad_rd_addr_sel_r2 = rd_addr_sel ;
assign vuad_wr_addr_r2[4:0] = wr_addr_entry[4:0] ;
assign vuad_word_en_r2 = wr_word_en ;
assign vuad_wr_en_r2c0 = wr_en[2] & wr_en0 ;
assign vuad_wr_en_r2c1 = wr_en[2] & wr_en1 ;
assign vuad_mux1_h_sel_r2[0] = ~addr1to0_c1[1] & ~addr1to0_c1[0] ;
assign vuad_mux1_h_sel_r2[1] = ~addr1to0_c1[1] & addr1to0_c1[0] ;
assign vuad_mux1_h_sel_r2[2] = addr1to0_c1[1] & ~addr1to0_c1[0] ;
assign vuad_mux1_h_sel_r2[3] = addr1to0_c1[1] & addr1to0_c1[0] ;
assign vuad_mux1_l_sel_r2 = vuad_mux1_h_sel_r2 ;
assign vuad_mux2_sel_r2 = addr7_c1;
assign vuad_rd_en_r2 = ~addr7_px2 & array_rd_en;
assign vuad_rd_addr1_r3 = rd_addr1[6:2];
assign vuad_rd_addr2_r3 = rd_addr2[6:2];
assign vuad_rd_addr_sel_r3 = rd_addr_sel ;
assign vuad_wr_addr_r3[4:0] = wr_addr_entry[4:0] ;
assign vuad_word_en_r3 = wr_word_en ;
assign vuad_wr_en_r3c0 = wr_en[3] & wr_en0 ;
assign vuad_wr_en_r3c1 = wr_en[3] & wr_en1 ;
assign vuad_rd_en_r3 = addr7_px2 & array_rd_en;
assign vuad_mux_sel[0] = ~addr8_c1 ;
assign vuad_mux_sel[1] = addr8_c1 ;
//////////////////////////////////////////////////
//////////////////////////////////////////////////
assign pce_ov = tcu_pce_ov;
assign stop = tcu_clk_stop;
l2t_vuad_ctl_l1clkhdr_ctl_macro clkgen (
//////////////////////////////////////////////////
//////////////////////////////////////////
//////////////////////////////////////////
l2t_vuad_ctl_spare_ctl_macro__num_4 spares (
.scan_out(spares_scanout),
//////////////////////////////////////////
//assign vuaddp_st_to_data_array_c3 = tag_st_to_data_array_c3;
//assign vuaddp_lru_way_c3 = tagdp_lru_way_sel_c3;
//assign vuaddp_hit_wayvld_c3 = tag_hit_way_vld_c3 & ~{16{arb_vuad_ce_err_c3}};
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuadctl_no_bypass_c1
(.din(arb_vuadctl_no_bypass_px2),
.scan_in(ff_vuadctl_no_bypass_c1_scanin),
.scan_out(ff_vuadctl_no_bypass_c1_scanout),
.dout(vuadctl_no_bypass_c1),
////////////////////////////////////////////////////////////////////////
// index compares to for vuad mux selects.
////////////////////////////////////////////////////////////////////////
assign vuaddp_vuad_sel_c2 = ~arbadr_idx_c1c2comp_c1_n & arb_inst_vld_c2 &
~( arb_decdp_inst_int_c1 | inst_int_c2 ) ; // int 5.0 changes
assign vuaddp_vuad_sel_c4 = ~arbadr_idx_c1c4comp_c1_n & inst_vld_c4 &
~( arb_decdp_inst_int_c1 | inst_int_c4) ; // int 5.0 changes
assign vuaddp_vuad_sel_c2orc3 = ((( ~arbadr_idx_c1c3comp_c1_n & inst_vld_c3) &
~( arb_decdp_inst_int_c1 | inst_int_c3) ) |
vuaddp_vuad_sel_c2 ); // int 5.0 change
assign vuad_sel_wr = ~arbadr_idx_c1c5comp_c1_n & inst_vld_c5 &
~( arb_decdp_inst_int_c1 | inst_int_c5); // int 5.0 change
assign vuad_sel_c4orc5 = vuaddp_vuad_sel_c4 | vuad_sel_wr ;
assign vuaddp_vuad_sel_rd = ~( vuaddp_vuad_sel_c2orc3 | vuad_sel_c4orc5 ) | // int 5.0 changes
vuadctl_no_bypass_c1; // BIST or DECC read of VUAD
assign vuad_usaloc_mux_used_and_alloc_comb_sel0 = vuaddp_vuad_sel_rd_c2 & ~vuaddp_vuad_sel_c2_d1 &
vuaddp_vuad_sel_c2 & vuaddp_vuad_sel_c2orc3 & ~vuaddp_vuad_sel_rd;
assign vuad_usaloc_mux_used_and_alloc_comb_sel1 = ~vuaddp_vuad_sel_rd_c2 & ~vuaddp_vuad_sel_c2_d1 &
vuaddp_vuad_sel_c2 & vuaddp_vuad_sel_c2orc3 & ~vuaddp_vuad_sel_rd;
assign vuad_usaloc_mux_used_and_alloc_comb_sel2 = vuaddp_vuad_sel_c2_d1 & vuaddp_vuad_sel_c2 & vuaddp_vuad_sel_c2orc3 &
assign vuad_usaloc_mux_used_and_alloc_comb_sel3 = ~vuaddp_vuad_sel_c2 & vuaddp_vuad_sel_c2orc3 & ~vuaddp_vuad_sel_rd ;
assign vuad_usaloc_mux_used_and_alloc_comb_sel4 = ~vuaddp_vuad_sel_c2orc3 & ~vuaddp_vuad_sel_rd;
assign vuad_usaloc_mux_used_and_alloc_comb_sel5 = vuaddp_vuad_sel_rd;
//assign mux_valid_dirty_c1_sel0 = vuaddp_vuad_sel_rd;
//assign mux_valid_dirty_c1_sel1 = ~vuaddp_vuad_sel_rd & vuaddp_vuad_sel_c2orc3;
//assign mux_valid_dirty_c1_sel2 = ~vuaddp_vuad_sel_rd & ~vuaddp_vuad_sel_c2orc3;
assign mux_valid_dirty_c1_sel0 = ~( vuaddp_vuad_sel_c2orc3 | vuad_sel_c4orc5 ) | vuadctl_no_bypass_c1_1;
assign mux_valid_dirty_c1_sel1 = ~(~( vuaddp_vuad_sel_c2orc3 | vuad_sel_c4orc5 ) | vuadctl_no_bypass_c1_1) & vuaddp_vuad_sel_c2orc3;
assign mux_valid_dirty_c1_sel2 = ~(~( vuaddp_vuad_sel_c2orc3 | vuad_sel_c4orc5 ) | vuadctl_no_bypass_c1_1) & ~vuaddp_vuad_sel_c2orc3;
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuadctl_no_bypass_c1_1
(.din(arb_vuadctl_no_bypass_px2),
.scan_in(ff_vuadctl_no_bypass_c1_1_scanin),
.scan_out(ff_vuadctl_no_bypass_c1_1_scanout),
.dout(vuadctl_no_bypass_c1_1),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuaddp_vuad_sel_c2
(.din(vuaddp_vuad_sel_rd), .l1clk(l1clk),
.scan_in(ff_vuaddp_vuad_sel_c2_scanin),
.scan_out(ff_vuaddp_vuad_sel_c2_scanout),
.dout(vuaddp_vuad_sel_rd_c2),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuaddp_vuad_sel_c2_d1
(.din(vuaddp_vuad_sel_c2), .l1clk(l1clk),
.scan_in(ff_vuaddp_vuad_sel_c2_d1_scanin),
.scan_out(ff_vuaddp_vuad_sel_c2_d1_scanout),
.dout(vuaddp_vuad_sel_c2_d1),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_sel_wr_d1
(.din(vuad_sel_wr), .l1clk(l1clk),
.scan_in(ff_vuad_sel_wr_d1_scanin),
.scan_out(ff_vuad_sel_wr_d1_scanout),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_tagd_sel_c2_d1
(.din(vuaddp_vuad_sel_c2), .l1clk(l1clk),
.scan_in(ff_vuad_tagd_sel_c2_d1_scanin),
.scan_out(ff_vuad_tagd_sel_c2_d1_scanout),
.dout(vuaddp_vuad_tagd_sel_c2_d1),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_wr64_inst_c3
(.din(arb_decdp_wr64_inst_c2), .l1clk(l1clk),
.scan_in(ff_wr64_inst_c3_scanin),
.scan_out(ff_wr64_inst_c3_scanout),
.dout(vuaddp_wr64_inst_c3),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_arb_acc_vd_c3
(.dout (acc_vd_c3), .din (arb_acc_vd_c2),
.scan_in(ff_arb_acc_vd_c3_scanin),
.scan_out(ff_arb_acc_vd_c3_scanout),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_arb_acc_ua_c3
(.dout (acc_ua_c3), .din (arb_acc_ua_c2),
.scan_in(ff_arb_acc_ua_c3_scanin),
.scan_out(ff_arb_acc_ua_c3_scanout),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_inst_vld_c3
(.dout (inst_vld_c3), .din (arb_inst_vld_c2),
.scan_in(ff_inst_vld_c3_scanin),
.scan_out(ff_inst_vld_c3_scanout),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_inst_vld_c4
(.dout (inst_vld_c4), .din (inst_vld_c3),
.scan_in(ff_inst_vld_c4_scanin),
.scan_out(ff_inst_vld_c4_scanout),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_inst_vld_c5
(.dout (inst_vld_c5), .din (inst_vld_c4),
.scan_in(ff_inst_vld_c5_scanin),
.scan_out(ff_inst_vld_c5_scanout),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_arb_inst_diag_c2
(.dout (arb_inst_diag_c2), .din (arb_inst_diag_c1),
.scan_in(ff_arb_inst_diag_c2_scanin),
.scan_out(ff_arb_inst_diag_c2_scanout),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_arb_inst_diag_c3
(.dout (arb_inst_diag_c3), .din (arb_inst_diag_c2),
.scan_in(ff_arb_inst_diag_c3_scanin),
.scan_out(ff_arb_inst_diag_c3_scanout),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_arb_inst_diag_c4
(.dout (arb_inst_diag_c4), .din (arb_inst_diag_c3),
.scan_in(ff_arb_inst_diag_c4_scanin),
.scan_out(ff_arb_inst_diag_c4_scanout),
// msff_ctl_macro ff_filbuf_vuad_bypassed_c3 (width=1)
//(.dout (filbuf_vuad_bypassed_c3), .din (filbuf_vuad_bypassed_c2),
l2t_vuad_ctl_mux_ctl_macro__mux_aonpe__ports_2__width_9 mux_idx_c3
(.dout (vuad_acc_idx_c3[8:0]) ,
.din0(bist_vuad_idx_c3[8:0] ),
.din1(evctag_vuad_idx_c3[8:0]),
.sel0(bist_vuad_wr_en & mbist_run_r1),
.sel1(~bist_vuad_wr_en & ~mbist_run_r1)) ;
l2t_vuad_ctl_msff_ctl_macro__width_9 ff_mux_idx_c4
(.dout (vuaddp_vuad_idx_c4[8:0]), .din (vuad_acc_idx_c3[8:0]),
.scan_in(ff_mux_idx_c4_scanin),
.scan_out(ff_mux_idx_c4_scanout),
//////////////////////////////////////////////////////////////////////////////////////////
// Disable L2 VUAD writes if
// 1. Instruction is an INT.
// 2. L2 is OFF and the instruction is a non-diag instruction.
// 3. diag instruction is not a VUAD store.
// (in implementation disable the write whenever there is Diag Inst and
// enable it if the inst is a Diag write to the VUAD array.)
//////////////////////////////////////////////////////////////////////////////////////////
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_l2_bypass_mode_on_d1
(.dout (l2_bypass_mode_on_d1), .din (csr_l2_bypass_mode_on),
.scan_in(ff_l2_bypass_mode_on_d1_scanin),
.scan_out(ff_l2_bypass_mode_on_d1_scanout),
//////////////////////////////////////////////////////////////////////////////
//If a diagnostic access, normal write is disabled by wr_disable_c3.
//If not a diagnostic access :
// if bypass mode is on, write is disabled by wr_disable_c3
// if bypass mode is off, write is always enabled ( even upon vuad CE)
// hence we dont need to use CE to force the write to happen ??
/////////////////////////////////////////////////////////////////////////////////////
assign wr_disable_c3 = inst_int_c3 | // int 5.0 changes // VUAD ecc changes
(l2_bypass_mode_on_d1 & ~arb_inst_diag_c3) |
//////////////////////////
//////////////////////////
assign vuaddp_sel_diag0_data_wr_c3 = arb_inst_l2vuad_vld_c3 &
arb_decdp_st_inst_c3 & acc_vd_c3 ; // sel diag over bist data
assign bistordiag_wr_vd_c3 = (vuaddp_sel_diag0_data_wr_c3 & ~mbist_run_r1)| // diagorbist over normal data
( bist_vuad_wr_en & bist_wr_vd_c3 & mbist_run_r1 );
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_bistordiag_wr_vd_c4
(.dout (vuaddp_bistordiag_wr_vd_c4), .din (bistordiag_wr_vd_c3),
.scan_in(ff_bistordiag_wr_vd_c4_scanin),
.scan_out(ff_bistordiag_wr_vd_c4_scanout),
//assign vuad_array_wr_en1_c3 = ((inst_vld_c3 & ~wr_disable_c3) &~mbist_run_r1) | // normal write
// (bistordiag_wr_vd_c3 & mbist_run_r1); // bist or diag write
assign vuad_array_wr_en1_c3 = ((inst_vld_c3 & ~wr_disable_c3) &~mbist_run_r1) | // normal write
//////////////////////////
//////////////////////////
assign vuaddp_sel_diag1_data_wr_c3 = arb_inst_l2vuad_vld_c3 &
arb_decdp_st_inst_c3 & acc_ua_c3 ; // sel diag over bist data
assign bistordiag_wr_ua_c3 = (vuaddp_sel_diag1_data_wr_c3 & ~mbist_run_r1)| // diagorbist over normal data
( mbist_run_r1 & bist_vuad_wr_en & ~bist_wr_vd_c3 );
l2t_vuad_ctl_msff_ctl_macro__width_2 ff_bistordiag_wr_ua_c4
(.dout ({mbist_run_r1,vuaddp_bistordiag_wr_ua_c4}),
.scan_in(ff_bistordiag_wr_ua_c4_scanin),
.scan_out(ff_bistordiag_wr_ua_c4_scanout),
.din ({mbist_run,bistordiag_wr_ua_c3}),
assign vuad_array_wr_en0_c3 = (( inst_vld_c3 & ~wr_disable_c3) &~mbist_run_r1) | // normal write
bistordiag_wr_ua_c3; // bist or diag write
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_array_wr_en0_c4
(.din(vuad_array_wr_en0_c3), .l1clk(l1clk),
.scan_in(ff_vuad_array_wr_en0_c4_scanin),
.scan_out(ff_vuad_array_wr_en0_c4_scanout),
.dout(vuaddp_vuad_array_wr_en0_c4),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_array_wr_en1_c4
(.din(vuad_array_wr_en1_c3), .l1clk(l1clk),
.scan_in(ff_vuad_array_wr_en1_c4_scanin),
.scan_out(ff_vuad_array_wr_en1_c4_scanout),
.dout(vuaddp_vuad_array_wr_en1_c4),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_array_wr_en0_c5
(.din(vuaddp_vuad_array_wr_en0_c4), .l1clk(l1clk),
.scan_in(ff_vuad_array_wr_en0_c5_scanin),
.scan_out(ff_vuad_array_wr_en0_c5_scanout),
.dout(vuad_array_wr_en0_c5),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_array_wr_en1_c5
(.din(vuaddp_vuad_array_wr_en1_c4), .l1clk(l1clk),
.scan_in(ff_vuad_array_wr_en1_c5_scanin),
.scan_out(ff_vuad_array_wr_en1_c5_scanout),
.dout(vuad_array_wr_en1_c5),
// BS 03/11/04 extra cycle for mem access
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_array_wr_en0_c52
(.din(vuad_array_wr_en0_c5), .l1clk(l1clk),
.scan_in(ff_vuad_array_wr_en0_c52_scanin),
.scan_out(ff_vuad_array_wr_en0_c52_scanout),
.dout(vuad_array_wr_en0_c52),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_array_wr_en1_c52
(.din(vuad_array_wr_en1_c5), .l1clk(l1clk),
.scan_in(ff_vuad_array_wr_en1_c52_scanin),
.scan_out(ff_vuad_array_wr_en1_c52_scanout),
.dout(vuad_array_wr_en1_c52),
//msff_ctl_macro ff_vuad_array_wr_en0_c6 (width=1)
// (.din(vuad_array_wr_en0_c52), .l1clk(l1clk),
// .scan_in(ff_vuad_array_wr_en0_c6_scanin),
// .scan_out(ff_vuad_array_wr_en0_c6_scanout),
// .dout(vuad_array_wr_en0_c6),
//msff_ctl_macro ff_vuad_array_wr_en1_c6 (width=1)
// (.din(vuad_array_wr_en1_c52), .l1clk(l1clk),
// .scan_in(ff_vuad_array_wr_en1_c6_scanin),
// .scan_out(ff_vuad_array_wr_en1_c6_scanout),
// .dout(vuad_array_wr_en1_c6),
//assign vuaddp_sel_ua_wr_data_byp = vuad_sel_wr_d1
// & vuad_array_wr_en1_c6 ;
//assign vuaddp_sel_vd_wr_data_byp = vuad_sel_wr_d1
// & vuad_array_wr_en0_c6 ;
assign vuaddp_sel_ua_wr_data_byp = vuad_sel_wr_d1
& vuad_array_wr_en1_c52 ;
assign vuaddp_sel_vd_wr_data_byp = vuad_sel_wr_d1
& vuad_array_wr_en0_c52 ;
//* All errors are qualififed in the block that generates them
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_inst_int_c2 // int 5.0 changes
(.dout (inst_int_c2), .din (arb_decdp_inst_int_c1),
.scan_in(ff_inst_int_c2_scanin),
.scan_out(ff_inst_int_c2_scanout),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_inst_int_c3 // int 5.0 changes
(.dout (inst_int_c3), .din (inst_int_c2),
.scan_in(ff_inst_int_c3_scanin),
.scan_out(ff_inst_int_c3_scanout),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_inst_int_c4 // int 5.0 changes
(.dout (inst_int_c4), .din (inst_int_c3),
.scan_in(ff_inst_int_c4_scanin),
.scan_out(ff_inst_int_c4_scanout),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_inst_int_c5 // int 5.0 changes
(.dout (inst_int_c5), .din (inst_int_c4),
.scan_in(ff_inst_int_c5_scanin),
.scan_out(ff_inst_int_c5_scanout),
// Used bit error will not be reported as they are harmless.
assign vuad_error_c4 = ~(arb_inst_diag_c4 | inst_int_c4) &
(vuadpm_vd_ue_c4 | vuadpm_ua_ue_c4) & // int 5.0 changes
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_error_c5
(.dout (vuad_error_c5), .din (vuad_error_c4),
.scan_in(ff_vuad_error_c5_scanin),
.scan_out(ff_vuad_error_c5_scanout),
// BS 03/11/04 extra cycle for mem access
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_error_c52
(.dout (vuad_error_c52), .din (vuad_error_c5),
.scan_in(ff_vuad_error_c52_scanin),
.scan_out(ff_vuad_error_c52_scanout),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_error_c6
(.dout (vuad_error_c6), .din (vuad_error_c52),
.scan_in(ff_vuad_error_c6_scanin),
.scan_out(ff_vuad_error_c6_scanout),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_error_c7
(.dout (vuad_error_c7), .din (vuad_error_c6),
.scan_in(ff_vuad_error_c7_scanin),
.scan_out(ff_vuad_error_c7_scanout),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_vuad_error_c8
(.dout (vuaddp_vuad_error_c8), .din (vuad_error_c7),
.scan_in(ff_vuad_error_c8_scanin),
.scan_out(ff_vuad_error_c8_scanout),
////////////////////////////////////////////////////////////////////////////////
// 4-16 decoder for the fill way
// Conditions for altering the VUAD bits.
////////////////////////////////////////////////////////////////////////////////
assign fill_inst_vld_c2 = arbdec_arbdp_inst_fb_c2 & arb_inst_vld_c2 ;
assign dec_lo_fill_way_c2[0] = ( arbdec_arbdp_inst_way_c2[1:0]==2'd0 )
assign dec_lo_fill_way_c2[1] = ( arbdec_arbdp_inst_way_c2[1:0]==2'd1 )
assign dec_lo_fill_way_c2[2] = ( arbdec_arbdp_inst_way_c2[1:0]==2'd2 )
assign dec_lo_fill_way_c2[3] = ( arbdec_arbdp_inst_way_c2[1:0]==2'd3 )
assign dec_hi_fill_way_c2[0] = ( arbdec_arbdp_inst_way_c2[3:2]==2'd0 ) ;
assign dec_hi_fill_way_c2[1] = ( arbdec_arbdp_inst_way_c2[3:2]==2'd1 ) ;
assign dec_hi_fill_way_c2[2] = ( arbdec_arbdp_inst_way_c2[3:2]==2'd2 ) ;
assign dec_hi_fill_way_c2[3] = ( arbdec_arbdp_inst_way_c2[3:2]==2'd3 ) ;
assign fill_way_c2[0] = dec_hi_fill_way_c2[0] & dec_lo_fill_way_c2[0] ; // 0000
assign fill_way_c2[1] = dec_hi_fill_way_c2[0] & dec_lo_fill_way_c2[1] ; // 0001
assign fill_way_c2[2] = dec_hi_fill_way_c2[0] & dec_lo_fill_way_c2[2] ; // 0010
assign fill_way_c2[3] = dec_hi_fill_way_c2[0] & dec_lo_fill_way_c2[3] ; // 0011
assign fill_way_c2[4] = dec_hi_fill_way_c2[1] & dec_lo_fill_way_c2[0] ; // 0100
assign fill_way_c2[5] = dec_hi_fill_way_c2[1] & dec_lo_fill_way_c2[1] ; // 0101
assign fill_way_c2[6] = dec_hi_fill_way_c2[1] & dec_lo_fill_way_c2[2] ; // 0110
assign fill_way_c2[7] = dec_hi_fill_way_c2[1] & dec_lo_fill_way_c2[3] ; // 0111
assign fill_way_c2[8] = dec_hi_fill_way_c2[2] & dec_lo_fill_way_c2[0] ; // 1000
assign fill_way_c2[9] = dec_hi_fill_way_c2[2] & dec_lo_fill_way_c2[1] ; // 1001
assign fill_way_c2[10] = dec_hi_fill_way_c2[2] & dec_lo_fill_way_c2[2] ; // 1010
assign fill_way_c2[11] = dec_hi_fill_way_c2[2] & dec_lo_fill_way_c2[3] ; // 1011
assign fill_way_c2[12] = dec_hi_fill_way_c2[3] & dec_lo_fill_way_c2[0] ; // 1100
assign fill_way_c2[13] = dec_hi_fill_way_c2[3] & dec_lo_fill_way_c2[1] ; // 1101
assign fill_way_c2[14] = dec_hi_fill_way_c2[3] & dec_lo_fill_way_c2[2] ; // 1110
assign fill_way_c2[15] = dec_hi_fill_way_c2[3] & dec_lo_fill_way_c2[3] ; // 1111
l2t_vuad_ctl_msff_ctl_macro__width_16 ff_fill_way_c3
(.dout (vuaddp_fill_way_c3[15:0]), .din (fill_way_c2[15:0]),
.scan_in(ff_fill_way_c3_scanin),
.scan_out(ff_fill_way_c3_scanout),
assign alloc_set_cond_c2 = (arb_arbdp_vuadctl_pst_no_ctrue_c2 | arb_decdp_cas1_inst_c2) ;
assign alloc_rst_cond_c2 = arb_arbdp_pst_with_ctrue_c2 |
(arb_decdp_cas2_inst_c2 & arbdec_arbdp_inst_mb_c2) |
(arbdec_arbdp_inst_mb_c2 & ~alloc_set_cond_c2) ;
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_alloc_set_cond_c3
(.dout (vuaddp_alloc_set_cond_c3), .din (alloc_set_cond_c2),
.scan_in(ff_alloc_set_cond_c3_scanin),
.scan_out(ff_alloc_set_cond_c3_scanout),
l2t_vuad_ctl_msff_ctl_macro__width_1 ff_alloc_rst_cond_c3
(.dout (vuaddp_alloc_rst_cond_c3), .din (alloc_rst_cond_c2),
.scan_in(ff_alloc_rst_cond_c3_scanin),
.scan_out(ff_alloc_rst_cond_c3_scanout),
assign ff_addr1to0_c1_scanin = scan_in ;
assign ff_addr8_c1_scanin = ff_addr1to0_c1_scanout ;
assign ff_addr7_c1_scanin = ff_addr8_c1_scanout ;
assign spares_scanin = ff_addr7_c1_scanout ;
assign ff_vuadctl_no_bypass_c1_scanin = spares_scanout ;
assign ff_vuadctl_no_bypass_c1_1_scanin = ff_vuadctl_no_bypass_c1_scanout;
assign ff_vuaddp_vuad_sel_c2_scanin = ff_vuadctl_no_bypass_c1_1_scanout;
assign ff_vuaddp_vuad_sel_c2_d1_scanin = ff_vuaddp_vuad_sel_c2_scanout;
assign ff_vuad_sel_wr_d1_scanin = ff_vuaddp_vuad_sel_c2_d1_scanout;
assign ff_vuad_tagd_sel_c2_d1_scanin = ff_vuad_sel_wr_d1_scanout;
assign ff_wr64_inst_c3_scanin = ff_vuad_tagd_sel_c2_d1_scanout;
assign ff_arb_acc_vd_c3_scanin = ff_wr64_inst_c3_scanout ;
assign ff_arb_acc_ua_c3_scanin = ff_arb_acc_vd_c3_scanout ;
assign ff_inst_vld_c3_scanin = ff_arb_acc_ua_c3_scanout ;
assign ff_inst_vld_c4_scanin = ff_inst_vld_c3_scanout ;
assign ff_inst_vld_c5_scanin = ff_inst_vld_c4_scanout ;
assign ff_arb_inst_diag_c2_scanin = ff_inst_vld_c5_scanout ;
assign ff_arb_inst_diag_c3_scanin = ff_arb_inst_diag_c2_scanout;
assign ff_arb_inst_diag_c4_scanin = ff_arb_inst_diag_c3_scanout;
assign ff_mux_idx_c4_scanin = ff_arb_inst_diag_c4_scanout;
assign ff_l2_bypass_mode_on_d1_scanin = ff_mux_idx_c4_scanout ;
assign ff_bistordiag_wr_vd_c4_scanin = ff_l2_bypass_mode_on_d1_scanout;
assign ff_bistordiag_wr_ua_c4_scanin = ff_bistordiag_wr_vd_c4_scanout;
assign ff_vuad_array_wr_en0_c4_scanin = ff_bistordiag_wr_ua_c4_scanout;
assign ff_vuad_array_wr_en1_c4_scanin = ff_vuad_array_wr_en0_c4_scanout;
assign ff_vuad_array_wr_en0_c5_scanin = ff_vuad_array_wr_en1_c4_scanout;
assign ff_vuad_array_wr_en1_c5_scanin = ff_vuad_array_wr_en0_c5_scanout;
assign ff_vuad_array_wr_en0_c52_scanin = ff_vuad_array_wr_en1_c5_scanout;
assign ff_vuad_array_wr_en1_c52_scanin = ff_vuad_array_wr_en0_c52_scanout;
assign ff_inst_int_c2_scanin = ff_vuad_array_wr_en1_c52_scanout;
assign ff_inst_int_c3_scanin = ff_inst_int_c2_scanout ;
assign ff_inst_int_c4_scanin = ff_inst_int_c3_scanout ;
assign ff_inst_int_c5_scanin = ff_inst_int_c4_scanout ;
assign ff_vuad_error_c5_scanin = ff_inst_int_c5_scanout ;
assign ff_vuad_error_c52_scanin = ff_vuad_error_c5_scanout ;
assign ff_vuad_error_c6_scanin = ff_vuad_error_c52_scanout;
assign ff_vuad_error_c7_scanin = ff_vuad_error_c6_scanout ;
assign ff_vuad_error_c8_scanin = ff_vuad_error_c7_scanout ;
assign ff_fill_way_c3_scanin = ff_vuad_error_c8_scanout ;
assign ff_alloc_set_cond_c3_scanin = ff_fill_way_c3_scanout ;
assign ff_alloc_rst_cond_c3_scanin = ff_alloc_set_cond_c3_scanout;
assign scan_out = ff_alloc_rst_cond_c3_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 l2t_vuad_ctl_mux_ctl_macro__mux_aonpe__ports_2__width_2 (
assign dout[1:0] = ( {2{sel0}} & din0[1:0] ) |
( {2{sel1}} & din1[1:0]);
// any PARAMS parms go into naming of macro
module l2t_vuad_ctl_msff_ctl_macro__width_2 (
assign fdin[1:0] = din[1:0];
// 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 l2t_vuad_ctl_mux_ctl_macro__mux_aonpe__ports_2__width_1 (
assign dout[0:0] = ( {1{sel0}} & din0[0:0] ) |
( {1{sel1}} & din1[0:0]);
// any PARAMS parms go into naming of macro
module l2t_vuad_ctl_msff_ctl_macro__width_1 (
assign fdin[0:0] = din[0:0];
// any PARAMS parms go into naming of macro
module l2t_vuad_ctl_l1clkhdr_ctl_macro (
// 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 l2t_vuad_ctl_spare_ctl_macro__num_4 (
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;
wire spare3_buf_32x_unused;
wire spare3_nand3_8x_unused;
wire spare3_inv_8x_unused;
wire spare3_aoi22_4x_unused;
wire spare3_buf_8x_unused;
wire spare3_oai22_4x_unused;
wire spare3_inv_16x_unused;
wire spare3_nand2_16x_unused;
wire spare3_nor3_4x_unused;
wire spare3_nand2_8x_unused;
wire spare3_buf_16x_unused;
wire spare3_nor2_16x_unused;
wire spare3_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));
cl_sc1_msff_8x spare3_flop (.l1clk(l1clk),
cl_u1_buf_32x spare3_buf_32x (.in(1'b1),
.out(spare3_buf_32x_unused));
cl_u1_nand3_8x spare3_nand3_8x (.in0(1'b1),
.out(spare3_nand3_8x_unused));
cl_u1_inv_8x spare3_inv_8x (.in(1'b1),
.out(spare3_inv_8x_unused));
cl_u1_aoi22_4x spare3_aoi22_4x (.in00(1'b1),
.out(spare3_aoi22_4x_unused));
cl_u1_buf_8x spare3_buf_8x (.in(1'b1),
.out(spare3_buf_8x_unused));
cl_u1_oai22_4x spare3_oai22_4x (.in00(1'b1),
.out(spare3_oai22_4x_unused));
cl_u1_inv_16x spare3_inv_16x (.in(1'b1),
.out(spare3_inv_16x_unused));
cl_u1_nand2_16x spare3_nand2_16x (.in0(1'b1),
.out(spare3_nand2_16x_unused));
cl_u1_nor3_4x spare3_nor3_4x (.in0(1'b0),
.out(spare3_nor3_4x_unused));
cl_u1_nand2_8x spare3_nand2_8x (.in0(1'b1),
.out(spare3_nand2_8x_unused));
cl_u1_buf_16x spare3_buf_16x (.in(1'b1),
.out(spare3_buf_16x_unused));
cl_u1_nor2_16x spare3_nor2_16x (.in0(1'b0),
.out(spare3_nor2_16x_unused));
cl_u1_inv_32x spare3_inv_32x (.in(1'b1),
.out(spare3_inv_32x_unused));
// 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 l2t_vuad_ctl_mux_ctl_macro__mux_aonpe__ports_2__width_9 (
assign dout[8:0] = ( {9{sel0}} & din0[8:0] ) |
( {9{sel1}} & din1[8:0]);
// any PARAMS parms go into naming of macro
module l2t_vuad_ctl_msff_ctl_macro__width_9 (
assign fdin[8:0] = din[8:0];
// any PARAMS parms go into naming of macro
module l2t_vuad_ctl_msff_ctl_macro__width_16 (
assign fdin[15:0] = din[15:0];
.so({so[14:0],scan_out}),