// ========== Copyright Header Begin ==========================================
// OpenSPARC T2 Processor File: niu_pio_ldgim_decoder.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 ============================================
/*****************************************************************
* File Name : niu_pio_ldgim_decoder.v
* Description : It contains logical device group interrupt
* management register read/write decoder,
* Parent Module: niu_pio_ldgim_decoder.v
* Copyright (c) 2020, Sun Microsystems, Inc.
* Sun Proprietary and Confidential
****************************************************************/
module niu_pio_ldgim_decoder (/*AUTOARG*/
ldgim_ack, ldgim_rdata, ldgim_err, ld_ldgim0, ld_ldgim1,
ld_ldgim2, ld_ldgim3, ld_ldgim4, ld_ldgim5, ld_ldgim6, ld_ldgim7,
ld_ldgim8, ld_ldgim9, ld_ldgim10, ld_ldgim11, ld_ldgim12,
ld_ldgim13, ld_ldgim14, ld_ldgim15, ld_ldgim16, ld_ldgim17,
ld_ldgim18, ld_ldgim19, ld_ldgim20, ld_ldgim21, ld_ldgim22,
ld_ldgim23, ld_ldgim24, ld_ldgim25, ld_ldgim26, ld_ldgim27,
ld_ldgim28, ld_ldgim29, ld_ldgim30, ld_ldgim31, ld_ldgim32,
ld_ldgim33, ld_ldgim34, ld_ldgim35, ld_ldgim36, ld_ldgim37,
ld_ldgim38, ld_ldgim39, ld_ldgim40, ld_ldgim41, ld_ldgim42,
ld_ldgim43, ld_ldgim44, ld_ldgim45, ld_ldgim46, ld_ldgim47,
ld_ldgim48, ld_ldgim49, ld_ldgim50, ld_ldgim51, ld_ldgim52,
ld_ldgim53, ld_ldgim54, ld_ldgim55, ld_ldgim56, ld_ldgim57,
ld_ldgim58, ld_ldgim59, ld_ldgim60, ld_ldgim61, ld_ldgim62,
ld_ldgim63, intr_reg_sel,
clk, reset, ldgim_sel_reg, addr, rd, arm0, arm1, arm2,
arm3, arm4, arm5, arm6, arm7, arm8, arm9, arm10, arm11, arm12,
arm13, arm14, arm15, arm16, arm17, arm18, arm19, arm20, arm21,
arm22, arm23, arm24, arm25, arm26, arm27, arm28, arm29, arm30,
arm31, arm32, arm33, arm34, arm35, arm36, arm37, arm38, arm39,
arm40, arm41, arm42, arm43, arm44, arm45, arm46, arm47, arm48,
arm49, arm50, arm51, arm52, arm53, arm54, arm55, arm56, arm57,
arm58, arm59, arm60, arm61, arm62, arm63, timer0, timer1, timer2,
timer3, timer4, timer5, timer6, timer7, timer8, timer9, timer10,
timer11, timer12, timer13, timer14, timer15, timer16, timer17,
timer18, timer19, timer20, timer21, timer22, timer23, timer24,
timer25, timer26, timer27, timer28, timer29, timer30, timer31,
timer32, timer33, timer34, timer35, timer36, timer37, timer38,
timer39, timer40, timer41, timer42, timer43, timer44, timer45,
timer46, timer47, timer48, timer49, timer50, timer51, timer52,
timer53, timer54, timer55, timer56, timer57, timer58, timer59,
timer60, timer61, timer62, timer63
output [63:0] ldgim_rdata;
// common reg declaration
reg non_qualified_addr_err;
// common wrie declaration
// output reg declaration
/* ---------------------------------------------------------- */
ldgim_sel_reg_int <= 1'b0;
ldgim_sel_reg_int <= ldgim_sel_reg ;
/* ---------------------------------------------------------- */
assign ldgim_sel_reg_int = ldgim_sel_reg ;
/* ----------------------------------------------------------- */
.rdata (ldgim_rdata[63:0]),
.sel (ldgim_sel_reg_int),
.rd_data (rd_data[63:0]),
.non_qualified_addr_err(non_qualified_addr_err));
always @ (/*AUTOSENSE*/addr_int or arm0 or arm1 or arm10 or arm11 or arm12
or arm13 or arm14 or arm15 or arm16 or arm17 or arm18
or arm19 or arm2 or arm20 or arm21 or arm22 or arm23
or arm24 or arm25 or arm26 or arm27 or arm28 or arm29
or arm3 or arm30 or arm31 or arm32 or arm33 or arm34
or arm35 or arm36 or arm37 or arm38 or arm39 or arm4
or arm40 or arm41 or arm42 or arm43 or arm44 or arm45
or arm46 or arm47 or arm48 or arm49 or arm5 or arm50
or arm51 or arm52 or arm53 or arm54 or arm55 or arm56
or arm57 or arm58 or arm59 or arm6 or arm60 or arm61
or arm62 or arm63 or arm7 or arm8 or arm9 or timer0
or timer1 or timer10 or timer11 or timer12 or timer13
or timer14 or timer15 or timer16 or timer17 or timer18
or timer19 or timer2 or timer20 or timer21 or timer22
or timer23 or timer24 or timer25 or timer26 or timer27
or timer28 or timer29 or timer3 or timer30 or timer31
or timer32 or timer33 or timer34 or timer35 or timer36
or timer37 or timer38 or timer39 or timer4 or timer40
or timer41 or timer42 or timer43 or timer44 or timer45
or timer46 or timer47 or timer48 or timer49 or timer5
or timer50 or timer51 or timer52 or timer53 or timer54
or timer55 or timer56 or timer57 or timer58 or timer59
or timer6 or timer60 or timer61 or timer62 or timer63
or timer7 or timer8 or timer9 or wr_en)
non_qualified_addr_err = 0;
rd_data = 64'hdead_beef_dead_beef;
case({addr_int[18:3],3'b0}) //synopsys parallel_case full_case
rd_data = {32'b0,arm0,25'b0,timer0};
rd_data = {32'b0,arm1,25'b0,timer1};
rd_data = {32'b0,arm2,25'b0,timer2};
rd_data = {32'b0,arm3,25'b0,timer3};
rd_data = {32'b0,arm4,25'b0,timer4};
rd_data = {32'b0,arm5,25'b0,timer5};
rd_data = {32'b0,arm6,25'b0,timer6};
rd_data = {32'b0,arm7,25'b0,timer7};
rd_data = {32'b0,arm8,25'b0,timer8};
rd_data = {32'b0,arm9,25'b0,timer9};
rd_data = {32'b0,arm10,25'b0,timer10};
rd_data = {32'b0,arm11,25'b0,timer11};
rd_data = {32'b0,arm12,25'b0,timer12};
rd_data = {32'b0,arm13,25'b0,timer13};
rd_data = {32'b0,arm14,25'b0,timer14};
rd_data = {32'b0,arm15,25'b0,timer15};
rd_data = {32'b0,arm16,25'b0,timer16};
rd_data = {32'b0,arm17,25'b0,timer17};
rd_data = {32'b0,arm18,25'b0,timer18};
rd_data = {32'b0,arm19,25'b0,timer19};
rd_data = {32'b0,arm20,25'b0,timer20};
rd_data = {32'b0,arm21,25'b0,timer21};
rd_data = {32'b0,arm22,25'b0,timer22};
rd_data = {32'b0,arm23,25'b0,timer23};
rd_data = {32'b0,arm24,25'b0,timer24};
rd_data = {32'b0,arm25,25'b0,timer25};
rd_data = {32'b0,arm26,25'b0,timer26};
rd_data = {32'b0,arm27,25'b0,timer27};
rd_data = {32'b0,arm28,25'b0,timer28};
rd_data = {32'b0,arm29,25'b0,timer29};
rd_data = {32'b0,arm30,25'b0,timer30};
rd_data = {32'b0,arm31,25'b0,timer31};
rd_data = {32'b0,arm32,25'b0,timer32};
rd_data = {32'b0,arm33,25'b0,timer33};
rd_data = {32'b0,arm34,25'b0,timer34};
rd_data = {32'b0,arm35,25'b0,timer35};
rd_data = {32'b0,arm36,25'b0,timer36};
rd_data = {32'b0,arm37,25'b0,timer37};
rd_data = {32'b0,arm38,25'b0,timer38};
rd_data = {32'b0,arm39,25'b0,timer39};
rd_data = {32'b0,arm40,25'b0,timer40};
rd_data = {32'b0,arm41,25'b0,timer41};
rd_data = {32'b0,arm42,25'b0,timer42};
rd_data = {32'b0,arm43,25'b0,timer43};
rd_data = {32'b0,arm44,25'b0,timer44};
rd_data = {32'b0,arm45,25'b0,timer45};
rd_data = {32'b0,arm46,25'b0,timer46};
rd_data = {32'b0,arm47,25'b0,timer47};
rd_data = {32'b0,arm48,25'b0,timer48};
rd_data = {32'b0,arm49,25'b0,timer49};
rd_data = {32'b0,arm50,25'b0,timer50};
rd_data = {32'b0,arm51,25'b0,timer51};
rd_data = {32'b0,arm52,25'b0,timer52};
rd_data = {32'b0,arm53,25'b0,timer53};
rd_data = {32'b0,arm54,25'b0,timer54};
rd_data = {32'b0,arm55,25'b0,timer55};
rd_data = {32'b0,arm56,25'b0,timer56};
rd_data = {32'b0,arm57,25'b0,timer57};
rd_data = {32'b0,arm58,25'b0,timer58};
rd_data = {32'b0,arm59,25'b0,timer59};
rd_data = {32'b0,arm60,25'b0,timer60};
rd_data = {32'b0,arm61,25'b0,timer61};
rd_data = {32'b0,arm62,25'b0,timer62};
rd_data = {32'b0,arm63,25'b0,timer63};
rd_data = 64'hdead_beef_dead_beef;
non_qualified_addr_err = 0;
endcase // case({addr[18:3],3'b0})
endmodule // niu_pio_ldgim_decoder