// ========== Copyright Header Begin ==========================================
// OpenSPARC T2 Processor File: MDIO2P_IO.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 ============================================
////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2003 Texas Instruments, Inc.
// This is an unpublished work created in the year stated above.
// Texas Instruments owns all rights in and to the work and intends to
// maintain it and protect it as unpublished copyright. In the event
// of either inadvertant or deliberate publication, the above stated
// date shall be treated as the year of first publication. In the event
// of such publication, Texas Instruments intends to enforce its rights
// in the work under the copyright laws as a published work.
// These commodities are under U.S. Government distribution license
// control. As such, they are not be re-exported without prior approval
// from the U.S. Department of Commerce.
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// FUNCTION: MDIO Clock muxing and CFG decode
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
input RESET; // Global reset
input tcu_clk_stop; // For N2 DFT clock control
input tcu_scan_mode; // For N2 DFT clock control
input SCANEN; // Bypass MDIO2P clocks for scan
input SCANCLK; // Scan clock source
// Configuration Interface
input[15:0] CFG; // Configuration
output IO_CLAUSE45; // Clause45
output[4:0] IO_PRTID; // Port address ID
output[4:0] IO_DEVID; // Device address ID
output[4:0] IO_BASEAD; // Base address
output[3:0] IO_ACRAD; // AddrCtl register address
output[3:0] IO_IPRAD; // Indirect port register address
output IO_MDCLK; // Internal clock, after DFT muxing
output IO_RESET; // Internal reset, after DFT override
////////////////////////////////////////////////////////////////////////////////
// Clock muxing and reset control for test
////////////////////////////////////////////////////////////////////////////////
wire tcu_clk_stop_sync_mux;
cl_a1_clk_mux2_8x hedwig_mdio2p_io_mux (
// assign IO_MDCLK_mux = tcu_scan_mode ? SCANCLK : MDCLK;
assign IO_RESET = ~SCANEN & RESET;
SYNC_CELL SYNC_CELL_mdio (.D(tcu_clk_stop),.CP(IO_MDCLK_mux),.Q(tcu_clk_stop_sync));
assign tcu_clk_stop_sync_mux = tcu_scan_mode ? tcu_clk_stop : tcu_clk_stop_sync;
cl_a1_l1hdr_12x hedwig_mdio2p_io_l1 (
.stop(tcu_clk_stop_sync_mux),
////////////////////////////////////////////////////////////////////////////////
// - CFG bus fields are extracted and named for clarity
// - vsmmdbase identifies LS 16 register locations, which must be readable if
// mapped to DEVID 30 or 31 (Clause 45 only).
////////////////////////////////////////////////////////////////////////////////
assign IO_CLAUSE45 = CFG[15];
assign IO_PRTID = CFG[14:10];
assign IO_DEVID = CFG[9:5];
assign IO_BASEAD = CFG[4:0];
assign IO_ACRAD = CFG[8:5];
assign IO_IPRAD = CFG[3:0];