// ========== Copyright Header Begin ==========================================
// OpenSPARC T2 Processor File: esr_bscan.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 ============================================
////////////////////////////////////////////////////////////////////////////
// Contacts: john.lo@sun.com / carlos.castil@sun.com
// Description: Boundary scan logic for N2 MAC Serdes
// Block Type: Boundary Scan
// (c) 2005 Sun Microsystems, Inc.
// Sun Proprietary/Confidential
// All rights reserved. No part of this design may be reproduced stored
// in a retrieval system, or transmitted, in any form or by any means,
// electronic, mechanical, photocopying, recording, or otherwise, without
// prior written permission of Sun Microsystems, Inc.
///////////////////////////////////////////////////////////////////////////////
cfgtx0_0_17, // to hedwig
cfgtx1_0_17, // to hedwig
cfgtx2_0_17, // to hedwig
cfgtx3_0_17, // to hedwig
cfgtx0_1_17, // to hedwig
cfgtx1_1_17, // to hedwig
cfgtx2_1_17, // to hedwig
cfgtx3_1_17, // to hedwig
cfgrx0_0_b25_b24, // to hedwig
cfgrx1_0_b25_b24, // to hedwig
cfgrx2_0_b25_b24, // to hedwig
cfgrx3_0_b25_b24, // to hedwig
cfgrx0_1_b25_b24, // to hedwig
cfgrx1_1_b25_b24, // to hedwig
cfgrx2_1_b25_b24, // to hedwig
cfgrx3_1_b25_b24 // to hedwig
output mac_mcu_3_sbs_output;
input tcu_sbs_scan_en; // from tcu
input tcu_sbs_aclk; // from tcu
input tcu_sbs_bclk; // from tcu
input tcu_sbs_clk; // from tcu
input tcu_sbs_uclk; // from tcu
input tcu_sbs_acmode; // from tcu
input tcu_sbs_actestsignal; // from tcu
output cfgtx0_0_17; // to hedwig
output cfgtx1_0_17; // to hedwig
output cfgtx2_0_17; // to hedwig
output cfgtx3_0_17; // to hedwig
output cfgtx0_1_17; // to hedwig
output cfgtx1_1_17; // to hedwig
output cfgtx2_1_17; // to hedwig
output cfgtx3_1_17; // to hedwig
output [1:0] cfgrx0_0_b25_b24; // to hedwig
output [1:0] cfgrx1_0_b25_b24; // to hedwig
output [1:0] cfgrx2_0_b25_b24; // to hedwig
output [1:0] cfgrx3_0_b25_b24; // to hedwig
output [1:0] cfgrx0_1_b25_b24; // to hedwig
output [1:0] cfgrx1_1_b25_b24; // to hedwig
output [1:0] cfgrx2_1_b25_b24; // to hedwig
output [1:0] cfgrx3_1_b25_b24; // to hedwig
// According to Sungabe's spec, the following signals are required to float.
// vlint flag_net_has_no_load off
// vlint flag_dangling_net_within_module off
// vlint flag_net_has_no_load on
// vlint flag_dangling_net_within_module on
// /////////////////////////////////////////////////////////////////////////////
// /////////////////////////////////////////////////////////////////////////////
assign siclk = tcu_sbs_aclk;
assign soclk = tcu_sbs_bclk;
////////////////////////////////////////////////////////////////////////////////
// /////////////////////////////////////////////////////////////////////////////
// /////////////////////////////////////////////////////////////////////////////
// Boundary Scan Initialization per IEEE 1149.6
// /////////////////////////////////////////////////////////////////////////////
assign cfgrx0_0_b25_b24 = {bs_rxn_0_0,bs_rxp_0_0};
assign cfgrx1_0_b25_b24 = {bs_rxn_1_0,bs_rxp_1_0};
assign cfgrx2_0_b25_b24 = {bs_rxn_2_0,bs_rxp_2_0};
assign cfgrx3_0_b25_b24 = {bs_rxn_3_0,bs_rxp_3_0};
assign cfgrx0_1_b25_b24 = {bs_rxn_0_1,bs_rxp_0_1};
assign cfgrx1_1_b25_b24 = {bs_rxn_1_1,bs_rxp_1_1};
assign cfgrx2_1_b25_b24 = {bs_rxn_2_1,bs_rxp_2_1};
assign cfgrx3_1_b25_b24 = {bs_rxn_3_1,bs_rxp_3_1};
// /////////////////////////////////////////////////////////////////////////////
// /////////////////////////////////////////////////////////////////////////////
assign mac_mcu_3_sbs_output = bs_rxn_3_1;
// /////////////////////////////////////////////////////////////////////////////
// Port 0 Channel 0 Boundary scan cells
// /////////////////////////////////////////////////////////////////////////////
cl_a1_bsac_cell_4x inst_bstx_0_0 (
.updateclk (tcu_sbs_uclk),
.ac_mode (tcu_sbs_acmode),
.ac_test_signal (tcu_sbs_actestsignal) );
// vlint flag_null_instance_port off
cl_a1_msffjtag_4x inst_bsrxp_0_0 (
.updateclk (tcu_sbs_uclk) );
// vlint flag_null_instance_port on
// vlint flag_null_instance_port off
cl_a1_msffjtag_4x inst_bsrxn_0_0 (
.updateclk (tcu_sbs_uclk) );
// vlint flag_null_instance_port on
// /////////////////////////////////////////////////////////////////////////////
// Port 0 Channel 1 Boundary scan cells
// /////////////////////////////////////////////////////////////////////////////
cl_a1_bsac_cell_4x inst_bstx_1_0 (
.updateclk (tcu_sbs_uclk),
.ac_mode (tcu_sbs_acmode),
.ac_test_signal (tcu_sbs_actestsignal) );
// vlint flag_null_instance_port off
cl_a1_msffjtag_4x inst_bsrxp_1_0 (
.updateclk (tcu_sbs_uclk) );
// vlint flag_null_instance_port on
// vlint flag_null_instance_port off
cl_a1_msffjtag_4x inst_bsrxn_1_0 (
.updateclk (tcu_sbs_uclk) );
// vlint flag_null_instance_port on
// /////////////////////////////////////////////////////////////////////////////
// Port 0 Channel 2 Boundary scan cells
// /////////////////////////////////////////////////////////////////////////////
cl_a1_bsac_cell_4x inst_bstx_2_0 (
.updateclk (tcu_sbs_uclk),
.ac_mode (tcu_sbs_acmode),
.ac_test_signal (tcu_sbs_actestsignal) );
// vlint flag_null_instance_port off
cl_a1_msffjtag_4x inst_bsrxp_2_0 (
.updateclk (tcu_sbs_uclk) );
// vlint flag_null_instance_port on
// vlint flag_null_instance_port off
cl_a1_msffjtag_4x inst_bsrxn_2_0 (
.updateclk (tcu_sbs_uclk) );
// vlint flag_null_instance_port on
// /////////////////////////////////////////////////////////////////////////////
// Port 0 Channel 3 Boundary scan cells
// /////////////////////////////////////////////////////////////////////////////
cl_a1_bsac_cell_4x inst_bstx_3_0 (
.updateclk (tcu_sbs_uclk),
.ac_mode (tcu_sbs_acmode),
.ac_test_signal (tcu_sbs_actestsignal) );
// vlint flag_null_instance_port off
cl_a1_msffjtag_4x inst_bsrxp_3_0 (
.updateclk (tcu_sbs_uclk) );
// vlint flag_null_instance_port on
// vlint flag_null_instance_port off
cl_a1_msffjtag_4x inst_bsrxn_3_0 (
.updateclk (tcu_sbs_uclk) );
// vlint flag_null_instance_port on
// /////////////////////////////////////////////////////////////////////////////
// Port 1 Channel 0 Boundary scan cells
// /////////////////////////////////////////////////////////////////////////////
cl_a1_bsac_cell_4x inst_bstx_0_1 (
.updateclk (tcu_sbs_uclk),
.ac_mode (tcu_sbs_acmode),
.ac_test_signal (tcu_sbs_actestsignal) );
// vlint flag_null_instance_port off
cl_a1_msffjtag_4x inst_bsrxp_0_1 (
.updateclk (tcu_sbs_uclk) );
// vlint flag_null_instance_port on
// vlint flag_null_instance_port off
cl_a1_msffjtag_4x inst_bsrxn_0_1 (
.updateclk (tcu_sbs_uclk) );
// vlint flag_null_instance_port on
// /////////////////////////////////////////////////////////////////////////////
// Port 1 Channel 1 Boundary scan cells
// /////////////////////////////////////////////////////////////////////////////
cl_a1_bsac_cell_4x inst_bstx_1_1 (
.updateclk (tcu_sbs_uclk),
.ac_mode (tcu_sbs_acmode),
.ac_test_signal (tcu_sbs_actestsignal) );
// vlint flag_null_instance_port off
cl_a1_msffjtag_4x inst_bsrxp_1_1 (
.updateclk (tcu_sbs_uclk) );
// vlint flag_null_instance_port on
// vlint flag_null_instance_port off
cl_a1_msffjtag_4x inst_bsrxn_1_1 (
.updateclk (tcu_sbs_uclk) );
// vlint flag_null_instance_port on
// /////////////////////////////////////////////////////////////////////////////
// Port 1 Channel 2 Boundary scan cells
// /////////////////////////////////////////////////////////////////////////////
cl_a1_bsac_cell_4x inst_bstx_2_1 (
.updateclk (tcu_sbs_uclk),
.ac_mode (tcu_sbs_acmode),
.ac_test_signal (tcu_sbs_actestsignal) );
// vlint flag_null_instance_port off
cl_a1_msffjtag_4x inst_bsrxp_2_1 (
.updateclk (tcu_sbs_uclk) );
// vlint flag_null_instance_port on
// vlint flag_null_instance_port off
cl_a1_msffjtag_4x inst_bsrxn_2_1 (
.updateclk (tcu_sbs_uclk) );
// vlint flag_null_instance_port on
// /////////////////////////////////////////////////////////////////////////////
// Port 1 Channel 3 Boundary scan cells
// /////////////////////////////////////////////////////////////////////////////
cl_a1_bsac_cell_4x inst_bstx_3_1 (
.updateclk (tcu_sbs_uclk),
.ac_mode (tcu_sbs_acmode),
.ac_test_signal (tcu_sbs_actestsignal) );
// vlint flag_null_instance_port off
cl_a1_msffjtag_4x inst_bsrxp_3_1 (
.updateclk (tcu_sbs_uclk) );
// vlint flag_null_instance_port on
// vlint flag_null_instance_port off
cl_a1_msffjtag_4x inst_bsrxn_3_1 (
.updateclk (tcu_sbs_uclk) );
// vlint flag_null_instance_port on