blob: f20f541433e563b760b35c6e44dd4a051f5ba323 [file] [log] [blame] [edit]
// ========== Copyright Header Begin ==========================================
//
// OpenSPARC T1 Processor File: scdata_subbank.v
// 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 ============================================
module scdata_subbank(/*AUTOARG*/
// Outputs
scdata_scbuf_decc_c6_top_buf,
scdata_scbuf_decc_c6_bot_buf, scbuf_scdata_fbdecc_top_buf,
scbuf_scdata_fbdecc_bot_buf, l2d_fuse_data_out,
decc_out, se_buf, so,
// Inputs
wr_en, word_en, set, sehold, se, scdata_scbuf_decc_top,
scdata_scbuf_decc_bot, scbuf_scdata_fbdecc_top,
scbuf_scdata_fbdecc_bot, rclk, mem_write_disable,
fuse_read_data_in, fuse_l2d_wren, fuse_l2d_rid, fuse_l2d_rden,
fuse_l2d_data_in, efc_scdata_fuse_clk2, efc_scdata_fuse_clk1,
decc_in, col_offset, arst_l, way_sel, si
);
input [11:0] way_sel; // To block_1 of bw_r_l2d.v, ...
input si;
/*AUTOINPUT*/
// Beginning of automatic inputs (from unused autoinst inputs)
input arst_l; // To data_array_2 of bw_r_l2d.v
input col_offset; // To data_array_2 of bw_r_l2d.v
input [155:0] decc_in; // To data_array_2 of bw_r_l2d.v
input efc_scdata_fuse_clk1; // To data_array_2 of bw_r_l2d.v
input efc_scdata_fuse_clk2; // To data_array_2 of bw_r_l2d.v
input fuse_l2d_data_in; // To data_array_2 of bw_r_l2d.v
input fuse_l2d_rden; // To data_array_2 of bw_r_l2d.v
input [2:0] fuse_l2d_rid; // To data_array_2 of bw_r_l2d.v
input [5:0] fuse_l2d_wren; // To data_array_2 of bw_r_l2d.v
input fuse_read_data_in; // To data_array_2 of bw_r_l2d.v
input mem_write_disable; // To data_array_2 of bw_r_l2d.v
input rclk; // To data_array_0 of bw_r_l2d.v, ...
input [155:0] scbuf_scdata_fbdecc_bot;// To data_array_0 of bw_r_l2d.v
input [155:0] scbuf_scdata_fbdecc_top;// To data_array_0 of bw_r_l2d.v
input [155:0] scdata_scbuf_decc_bot; // To data_array_2 of bw_r_l2d.v
input [155:0] scdata_scbuf_decc_top; // To data_array_2 of bw_r_l2d.v
input se; // To data_array_2 of bw_r_l2d.v
input sehold; // To data_array_2 of bw_r_l2d.v
input [9:0] set; // To data_array_2 of bw_r_l2d.v
input [3:0] word_en; // To data_array_2 of bw_r_l2d.v
input wr_en; // To data_array_2 of bw_r_l2d.v
// End of automatics
output se_buf;
output so;
/*AUTOOUTPUT*/
// Beginning of automatic outputs (from unused autoinst outputs)
output [155:0] decc_out; // From data_array_2 of bw_r_l2d.v
output l2d_fuse_data_out; // From data_array_0 of bw_r_l2d.v
output [155:0] scbuf_scdata_fbdecc_bot_buf;// From data_array_2 of bw_r_l2d.v
output [155:0] scbuf_scdata_fbdecc_top_buf;// From data_array_2 of bw_r_l2d.v
output [155:0] scdata_scbuf_decc_c6_bot_buf;// From data_array_0 of bw_r_l2d.v
output [155:0] scdata_scbuf_decc_c6_top_buf;// From data_array_0 of bw_r_l2d.v
// End of automatics
wire [11:0] way_sel_buf_1; // From data_array_1 of bw_r_l2d.v
wire [11:0] way_sel_buf_2; // From data_array_2 of bw_r_l2d.v
wire [5:0] fuse_l2d_wren_buf_1; // From data_array_1 of bw_r_l2d.v
wire [5:0] fuse_l2d_wren_buf_2; // From data_array_2 of bw_r_l2d.v
/*AUTOWIRE*/
// Beginning of automatic wires (for undeclared instantiated-module outputs)
wire arst_l_buf_1; // From data_array_1 of bw_r_l2d.v
wire arst_l_buf_2; // From data_array_2 of bw_r_l2d.v
wire col_offset_buf_1; // From data_array_1 of bw_r_l2d.v
wire col_offset_buf_2; // From data_array_2 of bw_r_l2d.v
wire [155:0] decc_in_buf_1; // From data_array_1 of bw_r_l2d.v
wire [155:0] decc_in_buf_2; // From data_array_2 of bw_r_l2d.v
wire [155:0] decc_out_0; // From data_array_0 of bw_r_l2d.v
wire [155:0] decc_out_1; // From data_array_1 of bw_r_l2d.v
wire fuse_clk1_buf_1; // From data_array_1 of bw_r_l2d.v
wire fuse_clk1_buf_2; // From data_array_2 of bw_r_l2d.v
wire fuse_clk2_buf_1; // From data_array_1 of bw_r_l2d.v
wire fuse_clk2_buf_2; // From data_array_2 of bw_r_l2d.v
wire fuse_l2d_data_in_buf_1; // From data_array_1 of bw_r_l2d.v
wire fuse_l2d_data_in_buf_2; // From data_array_2 of bw_r_l2d.v
wire fuse_l2d_rden_buf_1; // From data_array_1 of bw_r_l2d.v
wire fuse_l2d_rden_buf_2; // From data_array_2 of bw_r_l2d.v
wire [2:0] fuse_l2d_rid_buf_1; // From data_array_1 of bw_r_l2d.v
wire [2:0] fuse_l2d_rid_buf_2; // From data_array_2 of bw_r_l2d.v
wire l2d_fuse_data_out_1; // From data_array_1 of bw_r_l2d.v
wire l2d_fuse_data_out_2; // From data_array_2 of bw_r_l2d.v
wire mem_write_disable_buf_1;// From data_array_1 of bw_r_l2d.v
wire mem_write_disable_buf_2;// From data_array_2 of bw_r_l2d.v
wire scan_out_1; // From data_array_1 of bw_r_l2d.v
wire scan_out_2; // From data_array_2 of bw_r_l2d.v
wire [155:0] scbuf_scdata_fbdecc_bot_buf_0;// From data_array_0 of bw_r_l2d.v
wire [155:0] scbuf_scdata_fbdecc_bot_buf_1;// From data_array_1 of bw_r_l2d.v
wire [155:0] scbuf_scdata_fbdecc_top_buf_0;// From data_array_0 of bw_r_l2d.v
wire [155:0] scbuf_scdata_fbdecc_top_buf_1;// From data_array_1 of bw_r_l2d.v
wire [155:0] scdata_scbuf_decc_bot_buf_1;// From data_array_1 of bw_r_l2d.v
wire [155:0] scdata_scbuf_decc_bot_buf_2;// From data_array_2 of bw_r_l2d.v
wire [155:0] scdata_scbuf_decc_top_buf_1;// From data_array_1 of bw_r_l2d.v
wire [155:0] scdata_scbuf_decc_top_buf_2;// From data_array_2 of bw_r_l2d.v
wire se_buf_1; // From data_array_1 of bw_r_l2d.v
wire se_buf_2; // From data_array_2 of bw_r_l2d.v
wire sehold_buf_1; // From data_array_1 of bw_r_l2d.v
wire sehold_buf_2; // From data_array_2 of bw_r_l2d.v
wire [9:0] set_buf_1; // From data_array_1 of bw_r_l2d.v
wire [9:0] set_buf_2; // From data_array_2 of bw_r_l2d.v
wire [3:0] word_en_buf_1; // From data_array_1 of bw_r_l2d.v
wire [3:0] word_en_buf_2; // From data_array_2 of bw_r_l2d.v
wire wr_en_buf_1; // From data_array_1 of bw_r_l2d.v
wire wr_en_buf_2; // From data_array_2 of bw_r_l2d.v
// End of automatics
/*
bw_r_l2d AUTO_TEMPLATE(
.decc_in(decc_in_buf_@"(+ @ 1)"[155:0]),
.decc_read_in(decc_out_@"(- @ 1)"[155:0]),
.word_en(word_en_buf_@"(+ @ 1)"[3:0]),
.set(set_buf_@"(+ @ 1)"[9:0]),
.col_offset(col_offset_buf_@"(+ @ 1)"),
.wr_en(wr_en_buf_@"(+ @ 1)"),
.decc_in_buf(decc_in_buf_@[155:0]),
.word_en_buf(word_en_buf_@[3:0]),
.set_buf(set_buf_@[9:0]),
.col_offset_buf(col_offset_buf_@),
.wr_en_buf(wr_en_buf_@),
.way_sel_buf(way_sel_buf_@[11:0]),
.decc_out(decc_out_@[155:0]),
.mem_write_disable(mem_write_disable_buf_@"(+ @ 1)"),
.l2d_fuse_data_out(l2d_fuse_data_out_@),
.fuse_read_data_in(l2d_fuse_data_out_@"(+ @ 1)"),
.fuse_l2d_rden(fuse_l2d_rden_buf_@"(+ @ 1)"),
.efc_scdata_fuse_clk1(fuse_clk1_buf_@"(+ @ 1)"),
.efc_scdata_fuse_clk2(fuse_clk2_buf_@"(+ @ 1)"),
.fuse_l2d_rid(fuse_l2d_rid_buf_@"(+ @ 1)"[2:0]),
.fuse_l2d_data_in(fuse_l2d_data_in_buf_@"(+ @ 1)"),
.arst_l(arst_l_buf_@"(+ @ 1)"),
.se(se_buf_@"(+ @ 1)"),
.sehold(sehold_buf_@"(+ @ 1)"),
.fuse_l2d_wren_buf(fuse_l2d_wren_buf_@[5:0]),
.fuse_l2d_rden_buf(fuse_l2d_rden_buf_@),
.fuse_clk1_buf(fuse_clk1_buf_@),
.fuse_clk2_buf(fuse_clk2_buf_@),
.fuse_l2d_rid_buf(fuse_l2d_rid_buf_@[2:0]),
.fuse_l2d_data_in_buf(fuse_l2d_data_in_buf_@),
.arst_l_buf(arst_l_buf_@),
.se_buf(se_buf_@),
.sehold_buf(sehold_buf_@),
.mem_write_disable_buf(mem_write_disable_buf_@),
.scbuf_scdata_fbdecc_top_buf(scbuf_scdata_fbdecc_top_buf_@[155:0]),
.scbuf_scdata_fbdecc_bot_buf(scbuf_scdata_fbdecc_bot_buf_@[155:0]),
.scdata_scbuf_decc_top_buf(scdata_scbuf_decc_top_buf_@[155:0]),
.scdata_scbuf_decc_bot_buf(scdata_scbuf_decc_bot_buf_@[155:0]),
.scbuf_scdata_fbdecc_top(scbuf_scdata_fbdecc_top_buf_@"(- @ 1)"[155:0]),
.scbuf_scdata_fbdecc_bot(scbuf_scdata_fbdecc_bot_buf_@"(- @ 1)"[155:0]),
.scdata_scbuf_decc_top(scdata_scbuf_decc_top_buf_@"(+ @ 1)"[155:0]),
.scdata_scbuf_decc_bot(scdata_scbuf_decc_bot_buf_@"(+ @ 1)"[155:0]),
.si(scan_out_@"(+ @ 1)"),
.so(scan_out_@));
*/
bw_r_l2d data_array_0(
// Inputs
.scbuf_scdata_fbdecc_top(scbuf_scdata_fbdecc_top[155:0]),
.scbuf_scdata_fbdecc_bot(scbuf_scdata_fbdecc_bot[155:0]),
.decc_read_in(156'b0),
.way_sel({way_sel_buf_1[7:0],4'b0}),
.fuse_l2d_wren({fuse_l2d_wren_buf_1[3:0],2'b0}),
// Outputs
.scdata_scbuf_decc_top_buf(scdata_scbuf_decc_c6_top_buf[155:0]),
.scdata_scbuf_decc_bot_buf(scdata_scbuf_decc_c6_bot_buf[155:0]),
.word_en_buf (),
.way_sel_buf (),
.set_buf (),
.col_offset_buf(),
.wr_en_buf (),
.decc_in_buf (),
.so(so),
.l2d_fuse_data_out(l2d_fuse_data_out),
.fuse_clk1_buf(),
.fuse_clk2_buf(),
.fuse_l2d_rid_buf(),
.fuse_l2d_rden_buf(),
.fuse_l2d_wren_buf(),
.fuse_l2d_data_in_buf(),
.arst_l_buf(),
.se_buf(se_buf),
.sehold_buf(),
.mem_write_disable_buf (),
/*AUTOINST*/
// Outputs
.decc_out (decc_out_0[155:0]), // Templated
.scbuf_scdata_fbdecc_bot_buf(scbuf_scdata_fbdecc_bot_buf_0[155:0]), // Templated
.scbuf_scdata_fbdecc_top_buf(scbuf_scdata_fbdecc_top_buf_0[155:0]), // Templated
// Inputs
.arst_l (arst_l_buf_1), // Templated
.col_offset (col_offset_buf_1), // Templated
.decc_in (decc_in_buf_1[155:0]), // Templated
.efc_scdata_fuse_clk1(fuse_clk1_buf_1), // Templated
.efc_scdata_fuse_clk2(fuse_clk2_buf_1), // Templated
.fuse_l2d_data_in(fuse_l2d_data_in_buf_1), // Templated
.fuse_l2d_rden(fuse_l2d_rden_buf_1), // Templated
.fuse_l2d_rid (fuse_l2d_rid_buf_1[2:0]), // Templated
.fuse_read_data_in(l2d_fuse_data_out_1), // Templated
.mem_write_disable(mem_write_disable_buf_1), // Templated
.rclk (rclk),
.scdata_scbuf_decc_bot(scdata_scbuf_decc_bot_buf_1[155:0]), // Templated
.scdata_scbuf_decc_top(scdata_scbuf_decc_top_buf_1[155:0]), // Templated
.se (se_buf_1), // Templated
.sehold (sehold_buf_1), // Templated
.set (set_buf_1[9:0]), // Templated
.si (scan_out_1), // Templated
.word_en (word_en_buf_1[3:0]), // Templated
.wr_en (wr_en_buf_1)); // Templated
bw_r_l2d data_array_1(
// Inputs
.way_sel({way_sel_buf_2[7:0],4'b0}),
.fuse_l2d_wren({fuse_l2d_wren_buf_2[3:0],2'b0}),
/*AUTOINST*/
// Outputs
.fuse_l2d_rid_buf(fuse_l2d_rid_buf_1[2:0]), // Templated
.fuse_l2d_data_in_buf(fuse_l2d_data_in_buf_1), // Templated
.arst_l_buf (arst_l_buf_1), // Templated
.se_buf (se_buf_1), // Templated
.sehold_buf (sehold_buf_1), // Templated
.fuse_l2d_rden_buf(fuse_l2d_rden_buf_1), // Templated
.fuse_l2d_wren_buf(fuse_l2d_wren_buf_1[5:0]), // Templated
.fuse_clk1_buf(fuse_clk1_buf_1), // Templated
.fuse_clk2_buf(fuse_clk2_buf_1), // Templated
.mem_write_disable_buf(mem_write_disable_buf_1), // Templated
.col_offset_buf(col_offset_buf_1), // Templated
.decc_in_buf (decc_in_buf_1[155:0]), // Templated
.decc_out (decc_out_1[155:0]), // Templated
.l2d_fuse_data_out(l2d_fuse_data_out_1), // Templated
.scbuf_scdata_fbdecc_bot_buf(scbuf_scdata_fbdecc_bot_buf_1[155:0]), // Templated
.scbuf_scdata_fbdecc_top_buf(scbuf_scdata_fbdecc_top_buf_1[155:0]), // Templated
.scdata_scbuf_decc_bot_buf(scdata_scbuf_decc_bot_buf_1[155:0]), // Templated
.scdata_scbuf_decc_top_buf(scdata_scbuf_decc_top_buf_1[155:0]), // Templated
.set_buf (set_buf_1[9:0]), // Templated
.so (scan_out_1), // Templated
.way_sel_buf (way_sel_buf_1[11:0]), // Templated
.word_en_buf (word_en_buf_1[3:0]), // Templated
.wr_en_buf (wr_en_buf_1), // Templated
// Inputs
.arst_l (arst_l_buf_2), // Templated
.col_offset (col_offset_buf_2), // Templated
.decc_in (decc_in_buf_2[155:0]), // Templated
.decc_read_in (decc_out_0[155:0]), // Templated
.efc_scdata_fuse_clk1(fuse_clk1_buf_2), // Templated
.efc_scdata_fuse_clk2(fuse_clk2_buf_2), // Templated
.fuse_l2d_data_in(fuse_l2d_data_in_buf_2), // Templated
.fuse_l2d_rden(fuse_l2d_rden_buf_2), // Templated
.fuse_l2d_rid (fuse_l2d_rid_buf_2[2:0]), // Templated
.fuse_read_data_in(l2d_fuse_data_out_2), // Templated
.mem_write_disable(mem_write_disable_buf_2), // Templated
.rclk (rclk),
.scbuf_scdata_fbdecc_bot(scbuf_scdata_fbdecc_bot_buf_0[155:0]), // Templated
.scbuf_scdata_fbdecc_top(scbuf_scdata_fbdecc_top_buf_0[155:0]), // Templated
.scdata_scbuf_decc_bot(scdata_scbuf_decc_bot_buf_2[155:0]), // Templated
.scdata_scbuf_decc_top(scdata_scbuf_decc_top_buf_2[155:0]), // Templated
.se (se_buf_2), // Templated
.sehold (sehold_buf_2), // Templated
.set (set_buf_2[9:0]), // Templated
.si (scan_out_2), // Templated
.word_en (word_en_buf_2[3:0]), // Templated
.wr_en (wr_en_buf_2)); // Templated
bw_r_l2d data_array_2(
// Inputs
.word_en(word_en[3:0]),
.way_sel(way_sel[11:0]),
.set(set[9:0]),
.col_offset(col_offset),
.wr_en(wr_en),
.decc_in(decc_in[155:0]),
.scdata_scbuf_decc_top(scdata_scbuf_decc_top[155:0]),
.scdata_scbuf_decc_bot(scdata_scbuf_decc_bot[155:0]),
.fuse_read_data_in(fuse_read_data_in),
.si(si),
.efc_scdata_fuse_clk1(efc_scdata_fuse_clk1),
.efc_scdata_fuse_clk2(efc_scdata_fuse_clk2),
.fuse_l2d_rid(fuse_l2d_rid[2:0]),
.fuse_l2d_rden(fuse_l2d_rden),
.fuse_l2d_wren(fuse_l2d_wren[5:0]),
.fuse_l2d_data_in(fuse_l2d_data_in),
.arst_l(arst_l),
.se(se),
.sehold(sehold),
.mem_write_disable(mem_write_disable),
// Outputs
.decc_out(decc_out[155:0]),
.scbuf_scdata_fbdecc_top_buf(scbuf_scdata_fbdecc_top_buf[155:0]),
.scbuf_scdata_fbdecc_bot_buf(scbuf_scdata_fbdecc_bot_buf[155:0]),
/*AUTOINST*/
// Outputs
.fuse_l2d_rid_buf(fuse_l2d_rid_buf_2[2:0]), // Templated
.fuse_l2d_data_in_buf(fuse_l2d_data_in_buf_2), // Templated
.arst_l_buf (arst_l_buf_2), // Templated
.se_buf (se_buf_2), // Templated
.sehold_buf (sehold_buf_2), // Templated
.fuse_l2d_rden_buf(fuse_l2d_rden_buf_2), // Templated
.fuse_l2d_wren_buf(fuse_l2d_wren_buf_2[5:0]), // Templated
.fuse_clk1_buf(fuse_clk1_buf_2), // Templated
.fuse_clk2_buf(fuse_clk2_buf_2), // Templated
.mem_write_disable_buf(mem_write_disable_buf_2), // Templated
.col_offset_buf(col_offset_buf_2), // Templated
.decc_in_buf (decc_in_buf_2[155:0]), // Templated
.l2d_fuse_data_out(l2d_fuse_data_out_2), // Templated
.scdata_scbuf_decc_bot_buf(scdata_scbuf_decc_bot_buf_2[155:0]), // Templated
.scdata_scbuf_decc_top_buf(scdata_scbuf_decc_top_buf_2[155:0]), // Templated
.set_buf (set_buf_2[9:0]), // Templated
.so (scan_out_2), // Templated
.way_sel_buf (way_sel_buf_2[11:0]), // Templated
.word_en_buf (word_en_buf_2[3:0]), // Templated
.wr_en_buf (wr_en_buf_2), // Templated
// Inputs
.decc_read_in (decc_out_1[155:0]), // Templated
.rclk (rclk),
.scbuf_scdata_fbdecc_bot(scbuf_scdata_fbdecc_bot_buf_1[155:0]), // Templated
.scbuf_scdata_fbdecc_top(scbuf_scdata_fbdecc_top_buf_1[155:0])); // Templated
endmodule // scdata_subbank
// Local Variables:
// verilog-library-directories:("." "../../srams/rtl")
// verilog-library-files: ("../../srams/rtl/bw_r_l2d.v")
// verilog-auto-sense-defines-constant:t
// End: