URL
https://opencores.org/ocsvn/s1_core/s1_core/trunk
Subversion Repositories s1_core
Compare Revisions
- This comparison shows the changes necessary to convert path
/s1_core/trunk/hdl/rtl/s1_top
- from Rev 105 to Rev 99
- ↔ Reverse comparison
Rev 105 → Rev 99
/spc2wbm.v
File deleted
spc2wbm.v
Property changes :
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: s1_top.v
===================================================================
--- s1_top.v (revision 105)
+++ s1_top.v (nonexistent)
@@ -1,325 +0,0 @@
-/*
- * Simply RISC S1 Core Top-Level
- *
- * (C) 2007 Simply RISC LLP
- * AUTHOR: Fabrizio Fazzino
- *
- * LICENSE:
- * This is a Free Hardware Design; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
- * The above named 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.
- *
- * DESCRIPTION:
- * This block implements the top-level of the S1 Core.
- * It is just a schematic with four instances:
- * 1) one single SPARC Core of the OpenSPARC T1;
- * 2) a SPARC Core to Wishbone Master bridge;
- * 3) a Reset Controller;
- * 4) an Interrupt Controller.
- *
- */
-
-`include "s1_defs.h"
-
-module s1_top (
- sys_clock_i, sys_reset_i, sys_irq_i,
- wbm_ack_i, wbm_data_i,
- wbm_cycle_o, wbm_strobe_o, wbm_we_o, wbm_addr_o, wbm_data_o, wbm_sel_o
- );
-
- /*
- * Inputs
- */
-
- // System inputs
- input sys_clock_i; // System Clock
- input sys_reset_i; // System Reset
- input[63:0] sys_irq_i; // Interrupt Requests
-
- // Wishbone Interconnect Master Interface inputs
- input wbm_ack_i; // Ack
- input[(`WB_DATA_WIDTH-1):0] wbm_data_i; // Data In
-
- /*
- * Outputs
- */
-
- // Wishbone Interconnect Master Interface outputs
- output wbm_cycle_o; // Cycle Start
- output wbm_strobe_o; // Strobe Request
- output wbm_we_o; // Write Enable
- output[`WB_ADDR_WIDTH-1:0] wbm_addr_o; // Address Bus
- output[`WB_DATA_WIDTH-1:0] wbm_data_o; // Data Out
- output[`WB_DATA_WIDTH/8-1:0] wbm_sel_o; // Select Output
-
- /*
- * Wires
- */
-
- // Wires connected to SPARC Core outputs
-
- // pcx
- wire [4:0] spc_pcx_req_pq; // processor to pcx request
- wire spc_pcx_atom_pq; // processor to pcx atomic request
- wire [`PCX_WIDTH-1:0] spc_pcx_data_pa; // processor to pcx packet
-
- // shadow scan
- wire spc_sscan_so; // From ifu of sparc_ifu.v
- wire spc_scanout0; // From test_stub of test_stub_bist.v
- wire spc_scanout1; // From test_stub of test_stub_bist.v
-
- // bist
- wire tst_ctu_mbist_done; // From test_stub of test_stub_two_bist.v
- wire tst_ctu_mbist_fail; // From test_stub of test_stub_two_bist.v
-
- // fuse
- wire spc_efc_ifuse_data; // From ifu of sparc_ifu.v
- wire spc_efc_dfuse_data; // From ifu of sparc_ifu.v
-
- // Wires connected to SPARC Core inputs
-
- // cpx interface
- wire [4:0] pcx_spc_grant_px; // pcx to processor grant info
- wire cpx_spc_data_rdy_cx2; // cpx data inflight to sparc
- wire [`CPX_WIDTH-1:0] cpx_spc_data_cx2; // cpx to sparc data packet
- wire wbm_spc_stall; // Stall requests
- wire wbm_spc_resume; // Resume requests
-
- wire [3:0] const_cpuid;
- wire [7:0] const_maskid; // To ifu of sparc_ifu.v
-
- // sscan
- wire ctu_tck; // To ifu of sparc_ifu.v
- wire ctu_sscan_se; // To ifu of sparc_ifu.v
- wire ctu_sscan_snap; // To ifu of sparc_ifu.v
- wire [3:0] ctu_sscan_tid; // To ifu of sparc_ifu.v
-
- // bist
- wire ctu_tst_mbist_enable; // To test_stub of test_stub_bist.v
-
- // efuse
- wire efc_spc_fuse_clk1;
- wire efc_spc_fuse_clk2;
- wire efc_spc_ifuse_ashift;
- wire efc_spc_ifuse_dshift;
- wire efc_spc_ifuse_data;
- wire efc_spc_dfuse_ashift;
- wire efc_spc_dfuse_dshift;
- wire efc_spc_dfuse_data;
-
- // scan and macro test
- wire ctu_tst_macrotest; // To test_stub of test_stub_bist.v
- wire ctu_tst_scan_disable; // To test_stub of test_stub_bist.v
- wire ctu_tst_short_chain; // To test_stub of test_stub_bist.v
- wire global_shift_enable; // To test_stub of test_stub_two_bist.v
- wire ctu_tst_scanmode; // To test_stub of test_stub_two_bist.v
- wire spc_scanin0;
- wire spc_scanin1;
-
- // clk
- wire cluster_cken; // To spc_hdr of cluster_header.v
- wire gclk; // To spc_hdr of cluster_header.v
-
- // reset
- wire cmp_grst_l;
- wire cmp_arst_l;
- wire ctu_tst_pre_grst_l; // To test_stub of test_stub_bist.v
-
- wire adbginit_l; // To spc_hdr of cluster_header.v
- wire gdbginit_l; // To spc_hdr of cluster_header.v
-
- // Reset signal from the reset controller to the bridge
- wire sys_reset_final;
-
- // Interrupt Source from the interrupt controller to the bridge
- wire[5:0] sys_interrupt_source;
-
- /*
- * SPARC Core module instance
- */
-
- sparc sparc_0 (
-
- // Wires connected to SPARC Core outputs
- .spc_pcx_req_pq(spc_pcx_req_pq),
- .spc_pcx_atom_pq(spc_pcx_atom_pq),
- .spc_pcx_data_pa(spc_pcx_data_pa),
- .spc_sscan_so(spc_sscan_so),
- .spc_scanout0(spc_scanout0),
- .spc_scanout1(spc_scanout1),
- .tst_ctu_mbist_done(tst_ctu_mbist_done),
- .tst_ctu_mbist_fail(tst_ctu_mbist_fail),
- .spc_efc_ifuse_data(spc_efc_ifuse_data),
- .spc_efc_dfuse_data(spc_efc_dfuse_data),
-
- // Wires connected to SPARC Core inputs
- .pcx_spc_grant_px(pcx_spc_grant_px),
- .cpx_spc_data_rdy_cx2(cpx_spc_data_rdy_cx2),
- .cpx_spc_data_cx2(cpx_spc_data_cx2),
- .wbm_spc_stall(wbm_spc_stall),
- .wbm_spc_resume(wbm_spc_resume),
- .const_cpuid(const_cpuid),
- .const_maskid(const_maskid),
- .ctu_tck(ctu_tck),
- .ctu_sscan_se(ctu_sscan_se),
- .ctu_sscan_snap(ctu_sscan_snap),
- .ctu_sscan_tid(ctu_sscan_tid),
- .ctu_tst_mbist_enable(ctu_tst_mbist_enable),
- .efc_spc_fuse_clk1(efc_spc_fuse_clk1),
- .efc_spc_fuse_clk2(efc_spc_fuse_clk2),
- .efc_spc_ifuse_ashift(efc_spc_ifuse_ashift),
- .efc_spc_ifuse_dshift(efc_spc_ifuse_dshift),
- .efc_spc_ifuse_data(efc_spc_ifuse_data),
- .efc_spc_dfuse_ashift(efc_spc_dfuse_ashift),
- .efc_spc_dfuse_dshift(efc_spc_dfuse_dshift),
- .efc_spc_dfuse_data(efc_spc_dfuse_data),
- .ctu_tst_macrotest(ctu_tst_macrotest),
- .ctu_tst_scan_disable(ctu_tst_scan_disable),
- .ctu_tst_short_chain(ctu_tst_short_chain),
- .global_shift_enable(global_shift_enable),
- .ctu_tst_scanmode(ctu_tst_scanmode),
- .spc_scanin0(spc_scanin0),
- .spc_scanin1(spc_scanin1),
- .cluster_cken(cluster_cken),
- .gclk(gclk),
- .cmp_grst_l(cmp_grst_l),
- .cmp_arst_l(cmp_arst_l),
- .ctu_tst_pre_grst_l(ctu_tst_pre_grst_l),
- .adbginit_l(adbginit_l),
- .gdbginit_l(gdbginit_l)
-
- );
-
- /*
- * SPARC Core to Wishbone Master bridge
- */
-
- spc2wbm spc2wbm_0 (
-
- // Top-level system inputs
- .sys_clock_i(sys_clock_i),
- .sys_reset_i(sys_reset_final),
- .sys_interrupt_source_i(sys_interrupt_source),
-
- // Bridge inputs connected to SPARC Core outputs
- .spc_req_i(spc_pcx_req_pq),
- .spc_atom_i(spc_pcx_atom_pq),
- .spc_packetout_i(spc_pcx_data_pa),
-
- // Bridge outputs connected to SPARC Core inputs
- .spc_grant_o(pcx_spc_grant_px),
- .spc_ready_o(cpx_spc_data_rdy_cx2),
- .spc_packetin_o(cpx_spc_data_cx2),
- .spc_stall_o(wbm_spc_stall),
- .spc_resume_o(wbm_spc_resume),
-
- // Top-level Wishbone Interconnect inputs
- .wbm_ack_i(wbm_ack_i),
- .wbm_data_i(wbm_data_i),
-
- // Top-level Wishbone Interconnect outputs
- .wbm_cycle_o(wbm_cycle_o),
- .wbm_strobe_o(wbm_strobe_o),
- .wbm_we_o(wbm_we_o),
- .wbm_addr_o(wbm_addr_o),
- .wbm_data_o(wbm_data_o),
- .wbm_sel_o(wbm_sel_o)
-
- );
-
- /*
- * Reset Controller
- */
-
- rst_ctrl rst_ctrl_0 (
-
- // Top-level system inputs
- .sys_clock_i(sys_clock_i),
- .sys_reset_i(sys_reset_i),
-
- // Reset Controller outputs connected to SPARC Core inputs
- .cluster_cken_o(cluster_cken),
- .gclk_o(gclk),
- .cmp_grst_o(cmp_grst_l),
- .cmp_arst_o(cmp_arst_l),
- .ctu_tst_pre_grst_o(ctu_tst_pre_grst_l),
- .adbginit_o(adbginit_l),
- .gdbginit_o(gdbginit_l),
- .sys_reset_final_o(sys_reset_final)
-
- );
-
- /*
- * Interrupt Controller
- */
-
- int_ctrl int_ctrl_0 (
-
- // Top-level system inputs
- .sys_clock_i(sys_clock_i),
- .sys_reset_i(sys_reset_final),
- .sys_irq_i(sys_irq_i),
-
- // Interrupt Controller outputs connected to bridge inputs
- .sys_interrupt_source_o(sys_interrupt_source)
-
- );
-
- /*
- * Continuous assignments
- */
-
- assign const_cpuid = 4'h0;
- assign const_maskid = 8'h20;
-
- // sscan
- assign ctu_tck = 1'b0;
- assign ctu_sscan_se = 1'b0;
- assign ctu_sscan_snap = 1'b0;
- assign ctu_sscan_tid = 4'h1;
-
- // bist
- assign ctu_tst_mbist_enable = 1'b0;
-
- // efuse
- assign efc_spc_fuse_clk1 = 1'b0; // Activity
- assign efc_spc_fuse_clk2 = 1'b0; // Activity
- assign efc_spc_ifuse_ashift = 1'b0;
- assign efc_spc_ifuse_dshift = 1'b0;
- assign efc_spc_ifuse_data = 1'b0; // Activity
- assign efc_spc_dfuse_ashift = 1'b0;
- assign efc_spc_dfuse_dshift = 1'b0;
- assign efc_spc_dfuse_data = 1'b0; // Activity
-
- // scan and macro test
- assign ctu_tst_macrotest = 1'b0;
- assign ctu_tst_scan_disable = 1'b0;
- assign ctu_tst_short_chain = 1'b0;
- assign global_shift_enable = 1'b0;
- assign ctu_tst_scanmode = 1'b0;
- assign spc_scanin0 = 1'b0;
- assign spc_scanin1 = 1'b0;
-
- /*
-
- The following signals are handled by the Reset Controller:
-
- // clk
- assign cluster_cken = ...;
- assign gclk = ...;
-
- // reset
- assign cmp_grst_l = ...;
- assign cmp_arst_l = ...;
- assign ctu_tst_pre_grst_l = ...;
-
- assign adbginit_l = ...;
- assign gdbginit_l = ...;
-
- */
-
-endmodule
s1_top.v
Property changes :
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: s1_defs.h
===================================================================
--- s1_defs.h (revision 105)
+++ s1_defs.h (nonexistent)
@@ -1,52 +0,0 @@
-/*
- * Simply RISC S1 Definitions
- *
- * (C) Copyleft 2007 Simply RISC LLP
- * AUTHOR: Fabrizio Fazzino
- *
- * LICENSE:
- * This is a Free Hardware Design; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
- * The above named 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.
- *
- * DESCRIPTION:
- * Simple constant definitions used by the S1 Core design.
- */
-
-`include "t1_defs.h"
-`timescale 1ns/100ps
-
-`define FPGA_SYN
-`define FPGA_SYN_1THREAD
-`define FPGA_SYN_NO_SPU
-
-// Size of the buses
-`define WB_ADDR_WIDTH 64
-`define WB_DATA_WIDTH 64
-
-// States of the FSM of the bridge
-`define STATE_WAKEUP 4'b0000
-`define STATE_IDLE 4'b0001
-`define STATE_REQUEST_LATCHED 4'b0010
-`define STATE_PACKET_LATCHED 4'b0011
-`define STATE_REQUEST_GRANTED 4'b0100
-`define STATE_ACCESS2_BEGIN 4'b0101
-`define STATE_ACCESS2_END 4'b0110
-`define STATE_ACCESS3_BEGIN 4'b0111
-`define STATE_ACCESS3_END 4'b1000
-`define STATE_ACCESS4_BEGIN 4'b1001
-`define STATE_ACCESS4_END 4'b1010
-`define STATE_PACKET_READY 4'b1011
-
-// Constants used by the timer of the Reset Controller
-`define TIMER_BITS 16
-`define RESET_CYCLES_1 100
-`define RESET_CYCLES_2 1000
-`define RESET_CYCLES_3 2000
-`define RESET_CYCLES_4 3000
-`define GCLK_CYCLES 900
-
s1_defs.h
Property changes :
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: rst_ctrl.v
===================================================================
--- rst_ctrl.v (revision 105)
+++ rst_ctrl.v (nonexistent)
@@ -1,166 +0,0 @@
-/*
- * Reset Controller
- *
- * (C) Copyleft 2007 Simply RISC LLP
- * AUTHOR: Fabrizio Fazzino
- *
- * LICENSE:
- * This is a Free Hardware Design; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
- * The above named 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.
- *
- * DESCRIPTION:
- * This block implements the Reset Controller used by the S1 Core
- * to wake up the SPARC Core of the OpenSPARC T1; its behavior was
- * reverse-engineered from the OpenSPARC waveforms.
- */
-
-`include "s1_defs.h"
-
-module rst_ctrl (
- sys_clock_i, sys_reset_i,
- cluster_cken_o, gclk_o, cmp_grst_o, cmp_arst_o,
- ctu_tst_pre_grst_o, adbginit_o, gdbginit_o,
- sys_reset_final_o
- );
-
- /*
- * Inputs
- */
-
- // System inputs
- input sys_clock_i; // System Clock
- input sys_reset_i; // System Reset
-
- /*
- * Registered Outputs
- */
-
- output gclk_o;
-
- /*
- * Registered Outputs
- */
-
- // SPARC Core inputs
- output cluster_cken_o;
- reg cluster_cken_o;
- output cmp_grst_o;
- reg cmp_grst_o;
- output cmp_arst_o;
- reg cmp_arst_o;
- output ctu_tst_pre_grst_o;
- reg ctu_tst_pre_grst_o;
- output adbginit_o;
- reg adbginit_o;
- output gdbginit_o;
- reg gdbginit_o;
- output sys_reset_final_o;
- reg sys_reset_final_o;
-
- /*
- * Registers
- */
-
- // Counter used as a timer to strobe the reset signals
- reg[`TIMER_BITS-1:0] cycle_counter;
-
- /*
- * Procedural blocks
- */
-
- // This process handles the timer counter
- always @(posedge sys_clock_i)
- begin
- if(sys_reset_i==1'b1)
- begin
- cycle_counter = 0;
- end
- else
- begin
- if(cycle_counter[`TIMER_BITS-1]==1'b0)
- begin
- cycle_counter = cycle_counter+1;
- end
- end
- end
-
- // This other process assigns the proper values to the outputs
- // (that are used as system inputs by the SPARC Core)
- always @(posedge sys_clock_i)
- begin
- if(sys_reset_i==1)
- begin
- cluster_cken_o <= 0;
- cmp_grst_o <= 0;
- cmp_arst_o <= 0;
- ctu_tst_pre_grst_o <= 0;
- adbginit_o <= 0;
- gdbginit_o <= 0;
- sys_reset_final_o <= 1;
- end
- else
- begin
- if(cycle_counter<`RESET_CYCLES_1)
- begin
- cluster_cken_o <= 0;
- cmp_grst_o <= 0;
- cmp_arst_o <= 0;
- ctu_tst_pre_grst_o <= 0;
- adbginit_o <= 0;
- gdbginit_o <= 0;
- sys_reset_final_o <= 1;
- end
- else
- if(cycle_counter<`RESET_CYCLES_2)
- begin
- cluster_cken_o <= 0;
- cmp_grst_o <= 0;
- cmp_arst_o <= 1; // <--
- ctu_tst_pre_grst_o <= 0;
- adbginit_o <= 1; // <--
- gdbginit_o <= 0;
- sys_reset_final_o <= 1;
- end
- else
- if(cycle_counter<`RESET_CYCLES_3)
- begin
- cluster_cken_o <= 1; // <--
- cmp_grst_o <= 0;
- cmp_arst_o <= 1;
- ctu_tst_pre_grst_o <= 1; // <--
- adbginit_o <= 1;
- gdbginit_o <= 0;
- sys_reset_final_o <= 1;
- end
- else
- if(cycle_counter<`RESET_CYCLES_4)
- begin
- cluster_cken_o <= 1;
- cmp_grst_o <= 1; // <--
- cmp_arst_o <= 1;
- ctu_tst_pre_grst_o <= 1;
- adbginit_o <= 1;
- gdbginit_o <= 1; // <--
- sys_reset_final_o <= 1;
- end
- else
- begin
- cluster_cken_o <= 1;
- cmp_grst_o <= 1;
- cmp_arst_o <= 1;
- ctu_tst_pre_grst_o <= 1;
- adbginit_o <= 1;
- gdbginit_o <= 1;
- sys_reset_final_o <= 0; // <--
- end
- end
- end
-
- assign gclk_o = (cycle_counter>`GCLK_CYCLES) & sys_clock_i;
-
-endmodule
rst_ctrl.v
Property changes :
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: int_ctrl.v
===================================================================
--- int_ctrl.v (revision 105)
+++ int_ctrl.v (nonexistent)
@@ -1,114 +0,0 @@
-/*
- * Interrupt Controller
- *
- * (C) 2007 Simply RISC LLP
- * AUTHOR: Fabrizio Fazzino
- *
- * LICENSE:
- * This is a Free Hardware Design; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
- * The above named 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.
- *
- * DESCRIPTION:
- * This block implements the Interrupt Controller used by the S1
- * to detect if some peripheral raised an interrupt request.
- * A proper interrupt packet is sent to the SPARC Core by the
- * bridge with one of the 64 interrupt sources (provided by this
- * controller) encoded in the 6-bit Interrupt Source field.
- * Please note that IRQ 0 is reserved for Power-On Reset (handled
- * directly by the bridge) so up to 63 external peripherals can be
- * connected to the S1.
- * Note also that currently the interrupt vector is hardwired to
- * all zeroes.
- */
-
-module int_ctrl (
- sys_clock_i, sys_reset_i, sys_irq_i,
- sys_interrupt_source_o
- );
-
- // System inputs
- input sys_clock_i;
- input sys_reset_i;
-
- // Incoming Interrupt Requests
- input[63:0] sys_irq_i;
-
- // Encoded Interrupt Source
- output[5:0] sys_interrupt_source_o;
- reg[5:0] sys_interrupt_source_o;
-
- // Encoding of the source using priority and ignoring IRQ 0
- always @(posedge sys_clock_i) begin
- if(sys_reset_i==1) sys_interrupt_source_o = 0;
- else if(sys_irq_i[63]) sys_interrupt_source_o = 63;
- else if(sys_irq_i[62]) sys_interrupt_source_o = 62;
- else if(sys_irq_i[61]) sys_interrupt_source_o = 61;
- else if(sys_irq_i[60]) sys_interrupt_source_o = 60;
- else if(sys_irq_i[59]) sys_interrupt_source_o = 59;
- else if(sys_irq_i[58]) sys_interrupt_source_o = 58;
- else if(sys_irq_i[57]) sys_interrupt_source_o = 57;
- else if(sys_irq_i[56]) sys_interrupt_source_o = 56;
- else if(sys_irq_i[55]) sys_interrupt_source_o = 55;
- else if(sys_irq_i[54]) sys_interrupt_source_o = 54;
- else if(sys_irq_i[53]) sys_interrupt_source_o = 53;
- else if(sys_irq_i[52]) sys_interrupt_source_o = 52;
- else if(sys_irq_i[51]) sys_interrupt_source_o = 51;
- else if(sys_irq_i[50]) sys_interrupt_source_o = 50;
- else if(sys_irq_i[49]) sys_interrupt_source_o = 49;
- else if(sys_irq_i[48]) sys_interrupt_source_o = 48;
- else if(sys_irq_i[47]) sys_interrupt_source_o = 47;
- else if(sys_irq_i[46]) sys_interrupt_source_o = 46;
- else if(sys_irq_i[45]) sys_interrupt_source_o = 45;
- else if(sys_irq_i[44]) sys_interrupt_source_o = 44;
- else if(sys_irq_i[43]) sys_interrupt_source_o = 43;
- else if(sys_irq_i[42]) sys_interrupt_source_o = 42;
- else if(sys_irq_i[41]) sys_interrupt_source_o = 41;
- else if(sys_irq_i[40]) sys_interrupt_source_o = 40;
- else if(sys_irq_i[39]) sys_interrupt_source_o = 39;
- else if(sys_irq_i[38]) sys_interrupt_source_o = 38;
- else if(sys_irq_i[37]) sys_interrupt_source_o = 37;
- else if(sys_irq_i[36]) sys_interrupt_source_o = 36;
- else if(sys_irq_i[35]) sys_interrupt_source_o = 35;
- else if(sys_irq_i[34]) sys_interrupt_source_o = 34;
- else if(sys_irq_i[33]) sys_interrupt_source_o = 33;
- else if(sys_irq_i[32]) sys_interrupt_source_o = 32;
- else if(sys_irq_i[31]) sys_interrupt_source_o = 31;
- else if(sys_irq_i[30]) sys_interrupt_source_o = 30;
- else if(sys_irq_i[29]) sys_interrupt_source_o = 29;
- else if(sys_irq_i[28]) sys_interrupt_source_o = 28;
- else if(sys_irq_i[27]) sys_interrupt_source_o = 27;
- else if(sys_irq_i[26]) sys_interrupt_source_o = 26;
- else if(sys_irq_i[25]) sys_interrupt_source_o = 25;
- else if(sys_irq_i[24]) sys_interrupt_source_o = 24;
- else if(sys_irq_i[23]) sys_interrupt_source_o = 23;
- else if(sys_irq_i[22]) sys_interrupt_source_o = 22;
- else if(sys_irq_i[21]) sys_interrupt_source_o = 21;
- else if(sys_irq_i[20]) sys_interrupt_source_o = 20;
- else if(sys_irq_i[19]) sys_interrupt_source_o = 19;
- else if(sys_irq_i[18]) sys_interrupt_source_o = 18;
- else if(sys_irq_i[17]) sys_interrupt_source_o = 17;
- else if(sys_irq_i[16]) sys_interrupt_source_o = 16;
- else if(sys_irq_i[15]) sys_interrupt_source_o = 15;
- else if(sys_irq_i[14]) sys_interrupt_source_o = 14;
- else if(sys_irq_i[13]) sys_interrupt_source_o = 13;
- else if(sys_irq_i[12]) sys_interrupt_source_o = 12;
- else if(sys_irq_i[11]) sys_interrupt_source_o = 11;
- else if(sys_irq_i[10]) sys_interrupt_source_o = 10;
- else if(sys_irq_i[9]) sys_interrupt_source_o = 9;
- else if(sys_irq_i[8]) sys_interrupt_source_o = 8;
- else if(sys_irq_i[7]) sys_interrupt_source_o = 7;
- else if(sys_irq_i[6]) sys_interrupt_source_o = 6;
- else if(sys_irq_i[5]) sys_interrupt_source_o = 5;
- else if(sys_irq_i[4]) sys_interrupt_source_o = 4;
- else if(sys_irq_i[3]) sys_interrupt_source_o = 3;
- else if(sys_irq_i[2]) sys_interrupt_source_o = 2;
- else if(sys_irq_i[1]) sys_interrupt_source_o = 1;
- else sys_interrupt_source_o = 0;
- end
-
-endmodule
int_ctrl.v
Property changes :
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: t1_defs.h
===================================================================
--- t1_defs.h (revision 105)
+++ t1_defs.h (nonexistent)
@@ -1,839 +0,0 @@
-/*
-* ========== Copyright Header Begin ==========================================
-*
-* OpenSPARC T1 Processor File: iop.h
-* Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
-* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
-*
-* The above named program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public
-* License version 2 as published by the Free Software Foundation.
-*
-* The above named 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 work; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
-*
-* ========== Copyright Header End ============================================
-*/
-//-*- verilog -*-
-////////////////////////////////////////////////////////////////////////
-/*
-//
-// Description: Global header file that contain definitions that
-// are common/shared at the IOP chip level
-*/
-////////////////////////////////////////////////////////////////////////
-
-
-// Address Map Defines
-// ===================
-`define ADDR_MAP_HI 39
-`define ADDR_MAP_LO 32
-`define IO_ADDR_BIT 39
-
-// CMP space
-`define DRAM_DATA_LO 8'h00
-`define DRAM_DATA_HI 8'h7f
-
-// IOP space
-`define JBUS1 8'h80
-`define RESERVED_5 8'h81 //`define HASH_TBL_NRAM_CSR 8'h81
-`define RESERVED_1 8'h82
-`define RESERVED_6_LO 8'h83 //`define ENET_MAC_CSR 8'h83
- //`define ENET_ING_CSR 8'h84
- //`define ENET_EGR_CMD_CSR 8'h85
-`define RESERVED_6_HI 8'h86 //`define ENET_EGR_DP_CSR 8'h86
-`define RESERVED_2_LO 8'h87
-`define RESERVED_2_HI 8'h92
-`define RESERVED_7 8'h93 //`define BSC_CSR 8'h93
-`define RESERVED_3 8'h94
-`define RESERVED_8 8'h95 //`define RAND_GEN_CSR 8'h95
-`define CLOCK_UNIT_CSR 8'h96
-`define DRAM_CSR 8'h97
-`define IOB_MAN_CSR 8'h98
-`define TAP_CSR 8'h99
-`define RESERVED_4_L0 8'h9a
-`define RESERVED_4_HI 8'h9d
-`define CPU_ASI 8'h9e
-`define IOB_INT_CSR 8'h9f
-
-// L2 space
-`define L2C_CSR_LO 8'ha0
-`define L2C_CSR_HI 8'hbf
-
-// More IOP space
-`define JBUS2_LO 8'hc0
-`define JBUS2_HI 8'hfe
-`define SPI_CSR 8'hff
-
-
-//Cache Crossbar Width and Field Defines
-//======================================
-`define PCX_WIDTH 124 //PCX payload packet width
-`define CPX_WIDTH 145 //CPX payload packet width
-
-`define PCX_VLD 123 //PCX packet valid
-`define PCX_RQ_HI 122 //PCX request type field
-`define PCX_RQ_LO 118
-`define PCX_NC 117 //PCX non-cacheable bit
-`define PCX_R 117 //PCX read/!write bit
-`define PCX_CP_HI 116 //PCX cpu_id field
-`define PCX_CP_LO 114
-`define PCX_TH_HI 113 //PCX Thread field
-`define PCX_TH_LO 112
-`define PCX_BF_HI 111 //PCX buffer id field
-`define PCX_INVALL 111
-`define PCX_BF_LO 109
-`define PCX_WY_HI 108 //PCX replaced L1 way field
-`define PCX_WY_LO 107
-`define PCX_P_HI 108 //PCX packet ID, 1st STQ - 10, 2nd - 01
-`define PCX_P_LO 107
-`define PCX_SZ_HI 106 //PCX load/store size field
-`define PCX_SZ_LO 104
-`define PCX_ERR_HI 106 //PCX error field
-`define PCX_ERR_LO 104
-`define PCX_AD_HI 103 //PCX address field
-`define PCX_AD_LO 64
-`define PCX_DA_HI 63 //PCX Store data
-`define PCX_DA_LO 0
-
-`define PCX_SZ_1B 3'b000 // encoding for 1B access
-`define PCX_SZ_2B 3'b001 // encoding for 2B access
-`define PCX_SZ_4B 3'b010 // encoding for 4B access
-`define PCX_SZ_8B 3'b011 // encoding for 8B access
-`define PCX_SZ_16B 3'b111 // encoding for 16B access
-
-`define CPX_VLD 144 //CPX payload packet valid
-
-`define CPX_RQ_HI 143 //CPX Request type
-`define CPX_RQ_LO 140
-`define CPX_ERR_HI 139 //CPX error field
-`define CPX_ERR_LO 137
-`define CPX_NC 136 //CPX non-cacheable
-`define CPX_R 136 //CPX read/!write bit
-`define CPX_TH_HI 135 //CPX thread ID field
-`define CPX_TH_LO 134
-
-//bits 133:128 are shared by different fields
-//for different packet types.
-
-`define CPX_IN_HI 133 //CPX Interrupt source
-`define CPX_IN_LO 128
-
-`define CPX_WYVLD 133 //CPX replaced way valid
-`define CPX_WY_HI 132 //CPX replaced I$/D$ way
-`define CPX_WY_LO 131
-`define CPX_BF_HI 130 //CPX buffer ID field - 3 bits
-`define CPX_BF_LO 128
-
-`define CPX_SI_HI 132 //L1 set ID - PA[10:6]- 5 bits
-`define CPX_SI_LO 128 //used for invalidates
-
-`define CPX_P_HI 131 //CPX packet ID, 1st STQ - 10, 2nd - 01
-`define CPX_P_LO 130
-
-`define CPX_ASI 130 //CPX forward request to ASI
-`define CPX_IF4B 130
-`define CPX_IINV 124
-`define CPX_DINV 123
-`define CPX_INVPA5 122
-`define CPX_INVPA4 121
-`define CPX_CPUID_HI 120
-`define CPX_CPUID_LO 118
-`define CPX_INV_PA_HI 116
-`define CPX_INV_PA_LO 112
-`define CPX_INV_IDX_HI 117
-`define CPX_INV_IDX_LO 112
-
-`define CPX_DA_HI 127 //CPX data payload
-`define CPX_DA_LO 0
-
-`define LOAD_RQ 5'b00000
-`define IMISS_RQ 5'b10000
-`define STORE_RQ 5'b00001
-`define CAS1_RQ 5'b00010
-`define CAS2_RQ 5'b00011
-`define SWAP_RQ 5'b00110
-`define STRLOAD_RQ 5'b00100
-`define STRST_RQ 5'b00101
-`define STQ_RQ 5'b00111
-`define INT_RQ 5'b01001
-`define FWD_RQ 5'b01101
-`define FWD_RPY 5'b01110
-`define RSVD_RQ 5'b11111
-
-`define LOAD_RET 4'b0000
-`define INV_RET 4'b0011
-`define ST_ACK 4'b0100
-`define AT_ACK 4'b0011
-`define INT_RET 4'b0111
-`define TEST_RET 4'b0101
-`define FP_RET 4'b1000
-`define IFILL_RET 4'b0001
-`define EVICT_REQ 4'b0011
-`define ERR_RET 4'b1100
-`define STRLOAD_RET 4'b0010
-`define STRST_ACK 4'b0110
-`define FWD_RQ_RET 4'b1010
-`define FWD_RPY_RET 4'b1011
-`define RSVD_RET 4'b1111
-
-//End cache crossbar defines
-
-
-// Number of COS supported by EECU
-`define EECU_COS_NUM 2
-
-
-//
-// BSC bus sizes
-// =============
-//
-
-// General
-`define BSC_ADDRESS 40
-`define MAX_XFER_LEN 7'b0
-`define XFER_LEN_WIDTH 6
-
-// CTags
-`define BSC_CTAG_SZ 12
-`define EICU_CTAG_PRE 5'b11101
-`define EICU_CTAG_REM 7
-`define EIPU_CTAG_PRE 3'b011
-`define EIPU_CTAG_REM 9
-`define EECU_CTAG_PRE 8'b11010000
-`define EECU_CTAG_REM 4
-`define EEPU_CTAG_PRE 6'b010000
-`define EEPU_CTAG_REM 6
-`define L2C_CTAG_PRE 2'b00
-`define L2C_CTAG_REM 10
-`define JBI_CTAG_PRE 2'b10
-`define JBI_CTAG_REM 10
-// reinstated temporarily
-`define PCI_CTAG_PRE 7'b1101100
-`define PCI_CTAG_REM 5
-
-
-// CoS
-`define EICU_COS 1'b0
-`define EIPU_COS 1'b1
-`define EECU_COS 1'b0
-`define EEPU_COS 1'b1
-`define PCI_COS 1'b0
-
-// L2$ Bank
-`define BSC_L2_BNK_HI 8
-`define BSC_L2_BNK_LO 6
-
-// L2$ Req
-`define BSC_L2_REQ_SZ 62
-`define BSC_L2_REQ `BSC_L2_REQ_SZ // used by rams in L2 code
-`define BSC_L2_BUS 64
-`define BSC_L2_CTAG_HI 61
-`define BSC_L2_CTAG_LO 50
-`define BSC_L2_ADD_HI 49
-`define BSC_L2_ADD_LO 10
-`define BSC_L2_LEN_HI 9
-`define BSC_L2_LEN_LO 3
-`define BSC_L2_ALLOC 2
-`define BSC_L2_COS 1
-`define BSC_L2_READ 0
-
-// L2$ Ack
-`define L2_BSC_ACK_SZ 16
-`define L2_BSC_BUS 64
-`define L2_BSC_CBA_HI 14 // CBA - Critical Byte Address
-`define L2_BSC_CBA_LO 13
-`define L2_BSC_READ 12
-`define L2_BSC_CTAG_HI 11
-`define L2_BSC_CTAG_LO 0
-
-// Enet Egress Command Unit
-`define EECU_REQ_BUS 44
-`define EECU_REQ_SZ 44
-`define EECU_R_QID_HI 43
-`define EECU_R_QID_LO 40
-`define EECU_R_ADD_HI 39
-`define EECU_R_ADD_LO 0
-
-`define EECU_ACK_BUS 64
-`define EECU_ACK_SZ 5
-`define EECU_A_NACK 4
-`define EECU_A_QID_HI 3
-`define EECU_A_QID_LO 0
-
-
-// Enet Egress Packet Unit
-`define EEPU_REQ_BUS 55
-`define EEPU_REQ_SZ 55
-`define EEPU_R_TLEN_HI 54
-`define EEPU_R_TLEN_LO 48
-`define EEPU_R_SOF 47
-`define EEPU_R_EOF 46
-`define EEPU_R_PORT_HI 45
-`define EEPU_R_PORT_LO 44
-`define EEPU_R_QID_HI 43
-`define EEPU_R_QID_LO 40
-`define EEPU_R_ADD_HI 39
-`define EEPU_R_ADD_LO 0
-
-// This is cleaved in between Egress Datapath Ack's
-`define EEPU_ACK_BUS 6
-`define EEPU_ACK_SZ 6
-`define EEPU_A_EOF 5
-`define EEPU_A_NACK 4
-`define EEPU_A_QID_HI 3
-`define EEPU_A_QID_LO 0
-
-
-// Enet Egress Datapath
-`define EEDP_ACK_BUS 128
-`define EEDP_ACK_SZ 28
-`define EEDP_A_NACK 27
-`define EEDP_A_QID_HI 26
-`define EEDP_A_QID_LO 21
-`define EEDP_A_SOF 20
-`define EEDP_A_EOF 19
-`define EEDP_A_LEN_HI 18
-`define EEDP_A_LEN_LO 12
-`define EEDP_A_TAG_HI 11
-`define EEDP_A_TAG_LO 0
-`define EEDP_A_PORT_HI 5
-`define EEDP_A_PORT_LO 4
-`define EEDP_A_PORT_WIDTH 2
-
-
-// In-Order / Ordered Queue: EEPU
-// Tag is: TLEN, SOF, EOF, QID = 15
-`define EEPU_TAG_ARY (7+1+1+6)
-`define EEPU_ENTRIES 16
-`define EEPU_E_IDX 4
-`define EEPU_PORTS 4
-`define EEPU_P_IDX 2
-
-// Nack + Tag Info + CTag
-`define IOQ_TAG_ARY (1+`EEPU_TAG_ARY+12)
-`define EEPU_TAG_LOC (`EEPU_P_IDX+`EEPU_E_IDX)
-
-
-// ENET Ingress Queue Management Req
-`define EICU_REQ_BUS 64
-`define EICU_REQ_SZ 62
-`define EICU_R_CTAG_HI 61
-`define EICU_R_CTAG_LO 50
-`define EICU_R_ADD_HI 49
-`define EICU_R_ADD_LO 10
-`define EICU_R_LEN_HI 9
-`define EICU_R_LEN_LO 3
-`define EICU_R_COS 1
-`define EICU_R_READ 0
-
-
-// ENET Ingress Queue Management Ack
-`define EICU_ACK_BUS 64
-`define EICU_ACK_SZ 14
-`define EICU_A_NACK 13
-`define EICU_A_READ 12
-`define EICU_A_CTAG_HI 11
-`define EICU_A_CTAG_LO 0
-
-
-// Enet Ingress Packet Unit
-`define EIPU_REQ_BUS 128
-`define EIPU_REQ_SZ 59
-`define EIPU_R_CTAG_HI 58
-`define EIPU_R_CTAG_LO 50
-`define EIPU_R_ADD_HI 49
-`define EIPU_R_ADD_LO 10
-`define EIPU_R_LEN_HI 9
-`define EIPU_R_LEN_LO 3
-`define EIPU_R_COS 1
-`define EIPU_R_READ 0
-
-
-// ENET Ingress Packet Unit Ack
-`define EIPU_ACK_BUS 10
-`define EIPU_ACK_SZ 10
-`define EIPU_A_NACK 9
-`define EIPU_A_CTAG_HI 8
-`define EIPU_A_CTAG_LO 0
-
-
-// In-Order / Ordered Queue: PCI
-// Tag is: CTAG
-`define PCI_TAG_ARY 12
-`define PCI_ENTRIES 16
-`define PCI_E_IDX 4
-`define PCI_PORTS 2
-
-// PCI-X Request
-`define PCI_REQ_BUS 64
-`define PCI_REQ_SZ 62
-`define PCI_R_CTAG_HI 61
-`define PCI_R_CTAG_LO 50
-`define PCI_R_ADD_HI 49
-`define PCI_R_ADD_LO 10
-`define PCI_R_LEN_HI 9
-`define PCI_R_LEN_LO 3
-`define PCI_R_COS 1
-`define PCI_R_READ 0
-
-// PCI_X Acknowledge
-`define PCI_ACK_BUS 64
-`define PCI_ACK_SZ 14
-`define PCI_A_NACK 13
-`define PCI_A_READ 12
-`define PCI_A_CTAG_HI 11
-`define PCI_A_CTAG_LO 0
-
-
-`define BSC_MAX_REQ_SZ 62
-
-
-//
-// BSC array sizes
-//================
-//
-`define BSC_REQ_ARY_INDEX 6
-`define BSC_REQ_ARY_DEPTH 64
-`define BSC_REQ_ARY_WIDTH 62
-`define BSC_REQ_NXT_WIDTH 12
-`define BSC_ACK_ARY_INDEX 6
-`define BSC_ACK_ARY_DEPTH 64
-`define BSC_ACK_ARY_WIDTH 14
-`define BSC_ACK_NXT_WIDTH 12
-`define BSC_PAY_ARY_INDEX 6
-`define BSC_PAY_ARY_DEPTH 64
-`define BSC_PAY_ARY_WIDTH 256
-
-// ECC syndrome bits per memory element
-`define BSC_PAY_ECC 10
-`define BSC_PAY_MEM_WIDTH (`BSC_PAY_ECC+`BSC_PAY_ARY_WIDTH)
-
-
-//
-// BSC Port Definitions
-// ====================
-//
-// Bits 7 to 4 of curr_port_id
-`define BSC_PORT_NULL 4'h0
-`define BSC_PORT_SC 4'h1
-`define BSC_PORT_EICU 4'h2
-`define BSC_PORT_EIPU 4'h3
-`define BSC_PORT_EECU 4'h4
-`define BSC_PORT_EEPU 4'h8
-`define BSC_PORT_PCI 4'h9
-
-// Number of ports of each type
-`define BSC_PORT_SC_CNT 8
-
-// Bits needed to represent above
-`define BSC_PORT_SC_IDX 3
-
-// How wide the linked list pointers are
-// 60b for no payload (2CoS)
-// 80b for payload (2CoS)
-
-//`define BSC_OBJ_PTR 80
-//`define BSC_HD1_HI 69
-//`define BSC_HD1_LO 60
-//`define BSC_TL1_HI 59
-//`define BSC_TL1_LO 50
-//`define BSC_CT1_HI 49
-//`define BSC_CT1_LO 40
-//`define BSC_HD0_HI 29
-//`define BSC_HD0_LO 20
-//`define BSC_TL0_HI 19
-//`define BSC_TL0_LO 10
-//`define BSC_CT0_HI 9
-//`define BSC_CT0_LO 0
-
-`define BSC_OBJP_PTR 48
-`define BSC_PYP1_HI 47
-`define BSC_PYP1_LO 42
-`define BSC_HDP1_HI 41
-`define BSC_HDP1_LO 36
-`define BSC_TLP1_HI 35
-`define BSC_TLP1_LO 30
-`define BSC_CTP1_HI 29
-`define BSC_CTP1_LO 24
-`define BSC_PYP0_HI 23
-`define BSC_PYP0_LO 18
-`define BSC_HDP0_HI 17
-`define BSC_HDP0_LO 12
-`define BSC_TLP0_HI 11
-`define BSC_TLP0_LO 6
-`define BSC_CTP0_HI 5
-`define BSC_CTP0_LO 0
-
-`define BSC_PTR_WIDTH 192
-`define BSC_PTR_REQ_HI 191
-`define BSC_PTR_REQ_LO 144
-`define BSC_PTR_REQP_HI 143
-`define BSC_PTR_REQP_LO 96
-`define BSC_PTR_ACK_HI 95
-`define BSC_PTR_ACK_LO 48
-`define BSC_PTR_ACKP_HI 47
-`define BSC_PTR_ACKP_LO 0
-
-`define BSC_PORT_SC_PTR 96 // R, R+P
-`define BSC_PORT_EECU_PTR 48 // A+P
-`define BSC_PORT_EICU_PTR 96 // A, A+P
-`define BSC_PORT_EIPU_PTR 48 // A
-
-// I2C STATES in DRAMctl
-`define I2C_CMD_NOP 4'b0000
-`define I2C_CMD_START 4'b0001
-`define I2C_CMD_STOP 4'b0010
-`define I2C_CMD_WRITE 4'b0100
-`define I2C_CMD_READ 4'b1000
-
-
-//
-// IOB defines
-// ===========
-//
-`define IOB_ADDR_WIDTH 40
-`define IOB_LOCAL_ADDR_WIDTH 32
-
-`define IOB_CPU_INDEX 3
-`define IOB_CPU_WIDTH 8
-`define IOB_THR_INDEX 2
-`define IOB_THR_WIDTH 4
-`define IOB_CPUTHR_INDEX 5
-`define IOB_CPUTHR_WIDTH 32
-
-`define IOB_MONDO_DATA_INDEX 5
-`define IOB_MONDO_DATA_DEPTH 32
-`define IOB_MONDO_DATA_WIDTH 64
-`define IOB_MONDO_SRC_WIDTH 5
-`define IOB_MONDO_BUSY 5
-
-`define IOB_INT_TAB_INDEX 2
-`define IOB_INT_TAB_DEPTH 4
-
-//`define IOB_INT_STAT_WIDTH 32
-//`define IOB_INT_STAT_HI 31
-//`define IOB_INT_STAT_LO 0
-
-`define IOB_INT_VEC_WIDTH 6
-`define IOB_INT_VEC_HI 5
-`define IOB_INT_VEC_LO 0
-
-`define IOB_INT_CPU_WIDTH 5
-`define IOB_INT_CPU_HI 12
-`define IOB_INT_CPU_LO 8
-
-`define IOB_INT_MASK 2
-`define IOB_INT_CLEAR 1
-`define IOB_INT_PEND 0
-
-`define IOB_DISP_TYPE_HI 17
-`define IOB_DISP_TYPE_LO 16
-`define IOB_DISP_THR_HI 12
-`define IOB_DISP_THR_LO 8
-`define IOB_DISP_VEC_HI 5
-`define IOB_DISP_VEC_LO 0
-
-`define IOB_JBI_RESET 1
-`define IOB_ENET_RESET 0
-
-`define IOB_RESET_STAT_WIDTH 3
-`define IOB_RESET_STAT_HI 3
-`define IOB_RESET_STAT_LO 1
-
-`define IOB_SERNUM_WIDTH 64
-
-`define IOB_FUSE_WIDTH 22
-
-`define IOB_TMSTAT_THERM 63
-
-`define IOB_POR_TT 6'b01 // power-on-reset trap type
-
-`define IOB_CPU_BUF_INDEX 4
-
-`define IOB_INT_BUF_INDEX 4
-`define IOB_INT_BUF_WIDTH 153 // interrupt table read result buffer width
-
-`define IOB_IO_BUF_INDEX 4
-`define IOB_IO_BUF_WIDTH 153 // io-2-cpu return buffer width
-
-`define IOB_L2_VIS_BUF_INDEX 5
-`define IOB_L2_VIS_BUF_WIDTH 48 // l2 visibility buffer width
-
-`define IOB_INT_AVEC_WIDTH 9 // availibility vector width
-`define IOB_ACK_AVEC_WIDTH 9 // availibility vector width
-
-// fixme - double check address mapping
-// CREG in `IOB_INT_CSR space
-`define IOB_DEV_ADDR_MASK 32'hffffffe7
-`define IOB_CREG_INTSTAT 32'h00000000
-`define IOB_CREG_MDATA0 32'h00000400
-`define IOB_CREG_MDATA1 32'h00000500
-`define IOB_CREG_MBUSY 32'h00000900
-`define IOB_THR_ADDR_MASK 32'hffffff07
-`define IOB_CREG_MDATA0_ALIAS 32'h00000600
-`define IOB_CREG_MDATA1_ALIAS 32'h00000700
-`define IOB_CREG_MBUSY_ALIAS 32'h00000b00
-
-// CREG in `IOB_MAN_CSR space
-`define IOB_CREG_INTMAN 32'h00000000
-`define IOB_CREG_INTCTL 32'h00000400
-`define IOB_CREG_INTVECDISP 32'h00000800
-`define IOB_CREG_RESETSTAT 32'h00000810
-`define IOB_CREG_SERNUM 32'h00000820
-`define IOB_CREG_TMSTATCTRL 32'h00000828
-`define IOB_CREG_COREAVAIL 32'h00000830
-`define IOB_CREG_SSYSRESET 32'h00000838
-`define IOB_CREG_FUSESTAT 32'h00000840
-`define IOB_CREG_MARGIN 32'h00000850
-`define IOB_CREG_JINTV 32'h00000a00
-
-`define IOB_CREG_DBG_L2VIS_CTRL 32'h00001800
-`define IOB_CREG_DBG_L2VIS_MASKA 32'h00001820
-`define IOB_CREG_DBG_L2VIS_MASKB 32'h00001828
-`define IOB_CREG_DBG_L2VIS_CMPA 32'h00001830
-`define IOB_CREG_DBG_L2VIS_CMPB 32'h00001838
-`define IOB_CREG_DBG_L2VIS_TRIG 32'h00001840
-`define IOB_CREG_DBG_IOBVIS_CTRL 32'h00001000
-`define IOB_CREG_DBG_ENET_CTRL 32'h00002000
-`define IOB_CREG_DBG_ENET_IDLEVAL 32'h00002008
-`define IOB_CREG_DBG_JBUS_CTRL 32'h00002100
-`define IOB_CREG_DBG_JBUS_LO_MASK0 32'h00002140
-`define IOB_CREG_DBG_JBUS_LO_MASK1 32'h00002160
-`define IOB_CREG_DBG_JBUS_LO_CMP0 32'h00002148
-`define IOB_CREG_DBG_JBUS_LO_CMP1 32'h00002168
-`define IOB_CREG_DBG_JBUS_LO_CNT0 32'h00002150
-`define IOB_CREG_DBG_JBUS_LO_CNT1 32'h00002170
-`define IOB_CREG_DBG_JBUS_HI_MASK0 32'h00002180
-`define IOB_CREG_DBG_JBUS_HI_MASK1 32'h000021a0
-`define IOB_CREG_DBG_JBUS_HI_CMP0 32'h00002188
-`define IOB_CREG_DBG_JBUS_HI_CMP1 32'h000021a8
-`define IOB_CREG_DBG_JBUS_HI_CNT0 32'h00002190
-`define IOB_CREG_DBG_JBUS_HI_CNT1 32'h000021b0
-
-`define IOB_CREG_TESTSTUB 32'h80000000
-
-// Address map for TAP access of SPARC ASI
-`define IOB_ASI_PC 4'b0000
-`define IOB_ASI_BIST 4'b0001
-`define IOB_ASI_MARGIN 4'b0010
-`define IOB_ASI_DEFEATURE 4'b0011
-`define IOB_ASI_L1DD 4'b0100
-`define IOB_ASI_L1ID 4'b0101
-`define IOB_ASI_L1DT 4'b0110
-
-`define IOB_INT 2'b00
-`define IOB_RESET 2'b01
-`define IOB_IDLE 2'b10
-`define IOB_RESUME 2'b11
-
-//
-// CIOP UCB Bus Width
-// ==================
-//
-//`define IOB_EECU_WIDTH 16 // ethernet egress command
-//`define EECU_IOB_WIDTH 16
-
-//`define IOB_NRAM_WIDTH 16 // NRAM (RLDRAM previously)
-//`define NRAM_IOB_WIDTH 4
-
-`define IOB_JBI_WIDTH 64 // JBI
-`define JBI_IOB_WIDTH 16
-
-//`define IOB_ENET_ING_WIDTH 32 // ethernet ingress
-//`define ENET_ING_IOB_WIDTH 8
-
-//`define IOB_ENET_EGR_WIDTH 4 // ethernet egress
-//`define ENET_EGR_IOB_WIDTH 4
-
-//`define IOB_ENET_MAC_WIDTH 4 // ethernet MAC
-//`define ENET_MAC_IOB_WIDTH 4
-
-`define IOB_DRAM_WIDTH 4 // DRAM controller
-`define DRAM_IOB_WIDTH 4
-
-//`define IOB_BSC_WIDTH 4 // BSC
-//`define BSC_IOB_WIDTH 4
-
-`define IOB_SPI_WIDTH 4 // SPI (Boot ROM)
-`define SPI_IOB_WIDTH 4
-
-`define IOB_CLK_WIDTH 4 // clk unit
-`define CLK_IOB_WIDTH 4
-
-//`define IOB_CLSP_WIDTH 4 // clk spine unit
-//`define CLSP_IOB_WIDTH 4
-
-`define IOB_TAP_WIDTH 8 // TAP
-`define TAP_IOB_WIDTH 8
-
-
-//
-// CIOP UCB Buf ID Type
-// ====================
-//
-`define UCB_BID_CMP 2'b00
-`define UCB_BID_TAP 2'b01
-
-//
-// Interrupt Device ID
-// ===================
-//
-// Caution: DUMMY_DEV_ID has to be 9 bit wide
-// for fields to line up properly in the IOB.
-`define DUMMY_DEV_ID 9'h00 // 0
-`define UNCOR_ECC_DEV_ID 7'd1 // 1
-
-//
-// Soft Error related definitions
-// ==============================
-//
-`define COR_ECC_CNT_WIDTH 16
-
-
-//
-// CMP clock
-// =========
-//
-
-`define CMP_CLK_PERIOD 1333
-
-
-//
-// NRAM/IO Interface
-// =================
-//
-
-`define DRAM_CLK_PERIOD 6000
-
-`define NRAM_IO_DQ_WIDTH 32
-`define IO_NRAM_DQ_WIDTH 32
-
-`define NRAM_IO_ADDR_WIDTH 15
-`define NRAM_IO_BA_WIDTH 2
-
-
-//
-// NRAM/ENET Interface
-// ===================
-//
-
-`define NRAM_ENET_DATA_WIDTH 64
-`define ENET_NRAM_ADDR_WIDTH 20
-
-`define NRAM_DBG_DATA_WIDTH 40
-
-
-//
-// IO/FCRAM Interface
-// ==================
-//
-
-`define FCRAM_DATA1_HI 63
-`define FCRAM_DATA1_LO 32
-`define FCRAM_DATA0_HI 31
-`define FCRAM_DATA0_LO 0
-
-//
-// PCI Interface
-// ==================
-// Load/store size encodings
-// -------------------------
-// Size encoding
-// 000 - byte
-// 001 - half-word
-// 010 - word
-// 011 - double-word
-// 100 - quad
-`define LDST_SZ_BYTE 3'b000
-`define LDST_SZ_HALF_WORD 3'b001
-`define LDST_SZ_WORD 3'b010
-`define LDST_SZ_DOUBLE_WORD 3'b011
-`define LDST_SZ_QUAD 3'b100
-
-//
-// JBI<->SCTAG Interface
-// =======================
-// Outbound Header Format
-`define JBI_BTU_OUT_ADDR_LO 0
-`define JBI_BTU_OUT_ADDR_HI 42
-`define JBI_BTU_OUT_RSV0_LO 43
-`define JBI_BTU_OUT_RSV0_HI 43
-`define JBI_BTU_OUT_TYPE_LO 44
-`define JBI_BTU_OUT_TYPE_HI 48
-`define JBI_BTU_OUT_RSV1_LO 49
-`define JBI_BTU_OUT_RSV1_HI 51
-`define JBI_BTU_OUT_REPLACE_LO 52
-`define JBI_BTU_OUT_REPLACE_HI 56
-`define JBI_BTU_OUT_RSV2_LO 57
-`define JBI_BTU_OUT_RSV2_HI 59
-`define JBI_BTU_OUT_BTU_ID_LO 60
-`define JBI_BTU_OUT_BTU_ID_HI 71
-`define JBI_BTU_OUT_DATA_RTN 72
-`define JBI_BTU_OUT_RSV3_LO 73
-`define JBI_BTU_OUT_RSV3_HI 75
-`define JBI_BTU_OUT_CE 76
-`define JBI_BTU_OUT_RSV4_LO 77
-`define JBI_BTU_OUT_RSV4_HI 79
-`define JBI_BTU_OUT_UE 80
-`define JBI_BTU_OUT_RSV5_LO 81
-`define JBI_BTU_OUT_RSV5_HI 83
-`define JBI_BTU_OUT_DRAM 84
-`define JBI_BTU_OUT_RSV6_LO 85
-`define JBI_BTU_OUT_RSV6_HI 127
-
-// Inbound Header Format
-`define JBI_SCTAG_IN_ADDR_LO 0
-`define JBI_SCTAG_IN_ADDR_HI 39
-`define JBI_SCTAG_IN_SZ_LO 40
-`define JBI_SCTAG_IN_SZ_HI 42
-`define JBI_SCTAG_IN_RSV0 43
-`define JBI_SCTAG_IN_TAG_LO 44
-`define JBI_SCTAG_IN_TAG_HI 55
-`define JBI_SCTAG_IN_REQ_LO 56
-`define JBI_SCTAG_IN_REQ_HI 58
-`define JBI_SCTAG_IN_POISON 59
-`define JBI_SCTAG_IN_RSV1_LO 60
-`define JBI_SCTAG_IN_RSV1_HI 63
-
-`define JBI_SCTAG_REQ_WRI 3'b100
-`define JBI_SCTAG_REQ_WR8 3'b010
-`define JBI_SCTAG_REQ_RDD 3'b001
-`define JBI_SCTAG_REQ_WRI_BIT 2
-`define JBI_SCTAG_REQ_WR8_BIT 1
-`define JBI_SCTAG_REQ_RDD_BIT 0
-
-//
-// JBI->IOB Mondo Header Format
-// ============================
-//
-`define JBI_IOB_MONDO_RSV1_HI 15 // reserved 1
-`define JBI_IOB_MONDO_RSV1_LO 13
-`define JBI_IOB_MONDO_TRG_HI 12 // interrupt target
-`define JBI_IOB_MONDO_TRG_LO 8
-`define JBI_IOB_MONDO_RSV0_HI 7 // reserved 0
-`define JBI_IOB_MONDO_RSV0_LO 5
-`define JBI_IOB_MONDO_SRC_HI 4 // interrupt source
-`define JBI_IOB_MONDO_SRC_LO 0
-
-`define JBI_IOB_MONDO_RSV1_WIDTH 3
-`define JBI_IOB_MONDO_TRG_WIDTH 5
-`define JBI_IOB_MONDO_RSV0_WIDTH 3
-`define JBI_IOB_MONDO_SRC_WIDTH 5
-
-// JBI->IOB Mondo Bus Width/Cycle
-// ==============================
-// Cycle 1 Header[15:8]
-// Cycle 2 Header[ 7:0]
-// Cycle 3 J_AD[127:120]
-// Cycle 4 J_AD[119:112]
-// .....
-// Cycle 18 J_AD[ 7: 0]
-`define JBI_IOB_MONDO_BUS_WIDTH 8
-`define JBI_IOB_MONDO_BUS_CYCLE 18 // 2 header + 16 data