/* $Id: aeMB2_gprf.v,v 1.4 2008-04-26 17:57:43 sybreon Exp $
|
/* $Id: aeMB2_gprf.v,v 1.4 2008-04-26 17:57:43 sybreon Exp $
|
**
|
**
|
** AEMB2 EDK 6.2 COMPATIBLE CORE
|
** AEMB2 EDK 6.2 COMPATIBLE CORE
|
** Copyright (C) 2004-2008 Shawn Tan <shawn.tan@aeste.net>
|
** Copyright (C) 2004-2008 Shawn Tan <shawn.tan@aeste.net>
|
**
|
**
|
** This file is part of AEMB.
|
** This file is part of AEMB.
|
**
|
**
|
** AEMB is free software: you can redistribute it and/or modify it
|
** AEMB is free software: you can redistribute it and/or modify it
|
** under the terms of the GNU Lesser General Public License as
|
** under the terms of the GNU Lesser General Public License as
|
** published by the Free Software Foundation, either version 3 of the
|
** published by the Free Software Foundation, either version 3 of the
|
** License, or (at your option) any later version.
|
** License, or (at your option) any later version.
|
**
|
**
|
** AEMB is distributed in the hope that it will be useful, but WITHOUT
|
** AEMB is distributed in the hope that it will be useful, but WITHOUT
|
** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
** or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
|
** or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
|
** Public License for more details.
|
** Public License for more details.
|
**
|
**
|
** You should have received a copy of the GNU Lesser General Public
|
** You should have received a copy of the GNU Lesser General Public
|
** License along with AEMB. If not, see <http:**www.gnu.org/licenses/>.
|
** License along with AEMB. If not, see <http:**www.gnu.org/licenses/>.
|
*/
|
*/
|
/**
|
/**
|
* General Purpose Register File
|
* General Purpose Register File
|
* @aeMB2_gprf.v
|
* @aeMB2_gprf.v
|
|
|
* Dual set of 32 general purpose registers for the core. These are
|
* Dual set of 32 general purpose registers for the core. These are
|
R0-R31. A zero is written to R0 for both sets during reset and
|
R0-R31. A zero is written to R0 for both sets during reset and
|
maintained after that.
|
maintained after that.
|
|
|
*/
|
*/
|
|
|
module aeMB2_gprf (/*AUTOARG*/
|
module aeMB2_gprf (/*AUTOARG*/
|
// Outputs
|
// Outputs
|
opa_if, opb_if, opd_if,
|
opa_if, opb_if, opd_if,
|
// Inputs
|
// Inputs
|
mux_of, mux_ex, ich_dat, rd_of, rd_ex, sel_mx, rpc_mx, xwb_mx,
|
mux_of, mux_ex, ich_dat, rd_of, rd_ex, sel_mx, rpc_mx, xwb_mx,
|
dwb_mx, alu_mx, sfr_mx, mul_mx, bsf_mx, gclk, grst, dena, gpha
|
dwb_mx, alu_mx, sfr_mx, mul_mx, bsf_mx, gclk, grst, dena, gpha
|
);
|
);
|
parameter AEMB_HTX = 1;
|
parameter AEMB_HTX = 1;
|
|
|
// INTERNAL
|
// INTERNAL
|
output [31:0] opa_if,
|
output [31:0] opa_if,
|
opb_if,
|
opb_if,
|
opd_if;
|
opd_if;
|
|
|
input [2:0] mux_of,
|
input [2:0] mux_of,
|
mux_ex;
|
mux_ex;
|
input [31:0] ich_dat;
|
input [31:0] ich_dat;
|
input [4:0] rd_of,
|
input [4:0] rd_of,
|
rd_ex;
|
rd_ex;
|
|
|
// DATA SOURCSE
|
// DATA SOURCSE
|
input [3:0] sel_mx;
|
input [3:0] sel_mx;
|
input [31:2] rpc_mx;
|
input [31:2] rpc_mx;
|
input [31:0] xwb_mx,
|
input [31:0] xwb_mx,
|
dwb_mx,
|
dwb_mx,
|
alu_mx,
|
alu_mx,
|
sfr_mx,
|
sfr_mx,
|
mul_mx,
|
mul_mx,
|
bsf_mx;
|
bsf_mx;
|
|
|
// SYSTEM
|
// SYSTEM
|
input gclk,
|
input gclk,
|
grst,
|
grst,
|
dena,
|
dena,
|
gpha;
|
gpha;
|
|
|
/*AUTOWIRE*/
|
/*AUTOWIRE*/
|
/*AUTOREG*/
|
/*AUTOREG*/
|
|
|
wire [31:0] opd_wr;
|
wire [31:0] opd_wr;
|
reg [31:0] rMEMA[63:0],
|
reg [31:0] rMEMA[63:0],
|
rMEMB[63:0],
|
rMEMB[63:0],
|
rMEMD[63:0];
|
rMEMD[63:0];
|
reg [31:0] mem_mx;
|
reg [31:0] mem_mx;
|
reg [31:0] regd;
|
reg [31:0] regd;
|
reg wrb_fb;
|
reg wrb_fb;
|
reg [4:0] rd_mx;
|
reg [4:0] rd_mx;
|
reg [2:0] mux_mx;
|
reg [2:0] mux_mx;
|
|
|
// PIPELINE
|
// PIPELINE
|
always @(posedge gclk)
|
always @(posedge gclk)
|
if (grst) begin
|
if (grst) begin
|
/*AUTORESET*/
|
/*AUTORESET*/
|
// Beginning of autoreset for uninitialized flops
|
// Beginning of autoreset for uninitialized flops
|
mux_mx <= 3'h0;
|
mux_mx <= 3'h0;
|
rd_mx <= 5'h0;
|
rd_mx <= 5'h0;
|
wrb_fb <= 1'h0;
|
wrb_fb <= 1'h0;
|
// End of automatics
|
// End of automatics
|
end else if (dena) begin
|
end else if (dena) begin
|
wrb_fb <= #1 |rd_ex & |mux_ex; // FIXME: check mux
|
wrb_fb <= #1 |rd_ex & |mux_ex; // FIXME: check mux
|
|
|
rd_mx <= #1 rd_ex;
|
rd_mx <= #1 rd_ex;
|
mux_mx <= #1 mux_ex;
|
mux_mx <= #1 mux_ex;
|
end
|
end
|
|
|
// LOAD SIZER
|
// LOAD SIZER
|
always @(/*AUTOSENSE*/dwb_mx or sel_mx or xwb_mx) begin
|
always @(/*AUTOSENSE*/dwb_mx or sel_mx or xwb_mx) begin
|
case (sel_mx)
|
case (sel_mx)
|
// 8'bits
|
// 8'bits
|
4'h8: mem_mx <= #1 {24'd0, dwb_mx[31:24]};
|
4'h8: mem_mx <= #1 {24'd0, dwb_mx[31:24]};
|
4'h4: mem_mx <= #1 {24'd0, dwb_mx[23:16]};
|
4'h4: mem_mx <= #1 {24'd0, dwb_mx[23:16]};
|
4'h2: mem_mx <= #1 {24'd0, dwb_mx[15:8]};
|
4'h2: mem_mx <= #1 {24'd0, dwb_mx[15:8]};
|
4'h1: mem_mx <= #1 {24'd0, dwb_mx[7:0]};
|
4'h1: mem_mx <= #1 {24'd0, dwb_mx[7:0]};
|
// 16'bits
|
// 16'bits
|
4'hC: mem_mx <= #1 {16'd0, dwb_mx[31:16]};
|
4'hC: mem_mx <= #1 {16'd0, dwb_mx[31:16]};
|
4'h3: mem_mx <= #1 {16'd0, dwb_mx[15:0]};
|
4'h3: mem_mx <= #1 {16'd0, dwb_mx[15:0]};
|
// 32'bits
|
// 32'bits
|
4'hF: mem_mx <= #1 dwb_mx;
|
4'hF: mem_mx <= #1 dwb_mx;
|
// XSL bus
|
// XSL bus
|
4'h0: mem_mx <= #1 xwb_mx;
|
4'h0: mem_mx <= #1 xwb_mx;
|
default: mem_mx <= 32'hX;
|
default: mem_mx <= 32'hX;
|
endcase // case (sel_mx)
|
endcase // case (sel_mx)
|
end // always @ (...
|
end // always @ (...
|
|
|
// SELECT SOURCE
|
// SELECT SOURCE
|
localparam [2:0] MUX_SFR = 3'o7,
|
localparam [2:0] MUX_SFR = 3'o7,
|
MUX_BSF = 3'o6,
|
MUX_BSF = 3'o6,
|
MUX_MUL = 3'o5,
|
MUX_MUL = 3'o5,
|
MUX_MEM = 3'o4,
|
MUX_MEM = 3'o4,
|
|
|
MUX_RPC = 3'o2,
|
MUX_RPC = 3'o2,
|
MUX_ALU = 3'o1,
|
MUX_ALU = 3'o1,
|
MUX_NOP = 3'o0;
|
MUX_NOP = 3'o0;
|
|
|
always @(/*AUTOSENSE*/alu_mx or bsf_mx or mem_mx or mul_mx
|
always @(/*AUTOSENSE*/alu_mx or bsf_mx or mem_mx or mul_mx
|
or mux_mx or rpc_mx or sfr_mx)
|
or mux_mx or rpc_mx or sfr_mx)
|
case (mux_mx)
|
case (mux_mx)
|
MUX_ALU: regd <= #1 alu_mx; // ALU
|
MUX_ALU: regd <= #1 alu_mx; // ALU
|
MUX_RPC: regd <= #1 {rpc_mx[31:2], 2'o0}; // PC Link
|
MUX_RPC: regd <= #1 {rpc_mx[31:2], 2'o0}; // PC Link
|
MUX_MEM: regd <= #1 mem_mx; // RAM/FSL
|
MUX_MEM: regd <= #1 mem_mx; // RAM/FSL
|
MUX_MUL: regd <= #1 mul_mx; // MULTIPLIER
|
MUX_MUL: regd <= #1 mul_mx; // MULTIPLIER
|
MUX_BSF: regd <= #1 bsf_mx; // SHIFTER
|
MUX_BSF: regd <= #1 bsf_mx; // SHIFTER
|
MUX_NOP: regd <= #1 32'h0;
|
MUX_NOP: regd <= #1 32'h0;
|
MUX_SFR: regd <= #1 sfr_mx;
|
MUX_SFR: regd <= #1 sfr_mx;
|
default: regd <= #1 32'hX;
|
default: regd <= #1 32'hX;
|
endcase // case (mux_mx)
|
endcase // case (mux_mx)
|
|
|
// REGISTER FILE - Infer LUT memory
|
// REGISTER FILE - Infer LUT memory
|
wire [5:0] wRD0 = {gpha, ich_dat[25:21]};
|
wire [5:0] wRD0 = {gpha, ich_dat[25:21]};
|
wire [5:0] wRA0 = {gpha, ich_dat[20:16]};
|
wire [5:0] wRA0 = {gpha, ich_dat[20:16]};
|
wire [5:0] wRB0 = {gpha, ich_dat[15:11]};
|
wire [5:0] wRB0 = {gpha, ich_dat[15:11]};
|
wire [5:0] wRW0 = {!gpha, rd_mx};
|
wire [5:0] wRW0 = {!gpha, rd_mx};
|
wire wWRE = grst | wrb_fb;
|
wire wWRE = grst | wrb_fb;
|
|
|
wire [31:0] wDA0,
|
wire [31:0] wDA0,
|
wDB0,
|
wDB0,
|
wDD0;
|
wDD0;
|
|
|
assign opa_if = wDA0;
|
assign opa_if = wDA0;
|
assign opb_if = wDB0;
|
assign opb_if = wDB0;
|
assign opd_if = wDD0;
|
assign opd_if = wDD0;
|
|
|
/* aeMB2_dparam AUTO_TEMPLATE "_\([a-z,0-9]+\)" (
|
/* aeMB2_dparam AUTO_TEMPLATE "_\([a-z,0-9]+\)" (
|
.AW(6'd6),
|
.AW(6'd6),
|
.DW(6'd32),
|
.DW(6'd32),
|
|
|
.clk_i(gclk),
|
.clk_i(gclk),
|
.ena_i(dena),
|
.ena_i(dena),
|
|
|
.dat_i(regd),
|
.dat_i(regd),
|
.adr_i(wRW0[5:0]),
|
.adr_i(wRW0[5:0]),
|
.wre_i(wWRE),
|
.wre_i(wWRE),
|
.dat_o(),
|
.dat_o(),
|
|
|
.xwre_i(),
|
.xwre_i(),
|
.xdat_i(),
|
.xdat_i(),
|
.xadr_i(wR@[5:0]),
|
.xadr_i(wR@[5:0]),
|
.xdat_o(wD@[31:0]),
|
.xdat_o(wD@[31:0]),
|
) */
|
) */
|
|
|
aeMB2_dparam
|
aeMB2_dparam
|
#(/*AUTOINSTPARAM*/
|
#(/*AUTOINSTPARAM*/
|
// Parameters
|
// Parameters
|
.AW (6'd6), // Templated
|
.AW (6'd6), // Templated
|
.DW (6'd32)) // Templated
|
.DW (6'd32)) // Templated
|
bank_A0
|
bank_A0
|
(/*AUTOINST*/
|
(/*AUTOINST*/
|
// Outputs
|
// Outputs
|
.dat_o (), // Templated
|
.dat_o (), // Templated
|
.xdat_o (wDA0[31:0]), // Templated
|
.xdat_o (wDA0[31:0]), // Templated
|
// Inputs
|
// Inputs
|
.adr_i (wRW0[5:0]), // Templated
|
.adr_i (wRW0[5:0]), // Templated
|
.dat_i (regd), // Templated
|
.dat_i (regd), // Templated
|
.wre_i (wWRE), // Templated
|
.wre_i (wWRE), // Templated
|
.xadr_i (wRA0[5:0]), // Templated
|
.xadr_i (wRA0[5:0]), // Templated
|
.xdat_i (), // Templated
|
.xdat_i (), // Templated
|
.xwre_i (), // Templated
|
.xwre_i (), // Templated
|
.clk_i (gclk), // Templated
|
.clk_i (gclk), // Templated
|
.ena_i (dena)); // Templated
|
.ena_i (dena)); // Templated
|
|
|
aeMB2_dparam
|
aeMB2_dparam
|
#(/*AUTOINSTPARAM*/
|
#(/*AUTOINSTPARAM*/
|
// Parameters
|
// Parameters
|
.AW (6'd6), // Templated
|
.AW (6'd6), // Templated
|
.DW (6'd32)) // Templated
|
.DW (6'd32)) // Templated
|
bank_B0
|
bank_B0
|
(/*AUTOINST*/
|
(/*AUTOINST*/
|
// Outputs
|
// Outputs
|
.dat_o (), // Templated
|
.dat_o (), // Templated
|
.xdat_o (wDB0[31:0]), // Templated
|
.xdat_o (wDB0[31:0]), // Templated
|
// Inputs
|
// Inputs
|
.adr_i (wRW0[5:0]), // Templated
|
.adr_i (wRW0[5:0]), // Templated
|
.dat_i (regd), // Templated
|
.dat_i (regd), // Templated
|
.wre_i (wWRE), // Templated
|
.wre_i (wWRE), // Templated
|
.xadr_i (wRB0[5:0]), // Templated
|
.xadr_i (wRB0[5:0]), // Templated
|
.xdat_i (), // Templated
|
.xdat_i (), // Templated
|
.xwre_i (), // Templated
|
.xwre_i (), // Templated
|
.clk_i (gclk), // Templated
|
.clk_i (gclk), // Templated
|
.ena_i (dena)); // Templated
|
.ena_i (dena)); // Templated
|
|
|
aeMB2_dparam
|
aeMB2_dparam
|
#(/*AUTOINSTPARAM*/
|
#(/*AUTOINSTPARAM*/
|
// Parameters
|
// Parameters
|
.AW (6'd6), // Templated
|
.AW (6'd6), // Templated
|
.DW (6'd32)) // Templated
|
.DW (6'd32)) // Templated
|
bank_D0
|
bank_D0
|
(/*AUTOINST*/
|
(/*AUTOINST*/
|
// Outputs
|
// Outputs
|
.dat_o (), // Templated
|
.dat_o (), // Templated
|
.xdat_o (wDD0[31:0]), // Templated
|
.xdat_o (wDD0[31:0]), // Templated
|
// Inputs
|
// Inputs
|
.adr_i (wRW0[5:0]), // Templated
|
.adr_i (wRW0[5:0]), // Templated
|
.dat_i (regd), // Templated
|
.dat_i (regd), // Templated
|
.wre_i (wWRE), // Templated
|
.wre_i (wWRE), // Templated
|
.xadr_i (wRD0[5:0]), // Templated
|
.xadr_i (wRD0[5:0]), // Templated
|
.xdat_i (), // Templated
|
.xdat_i (), // Templated
|
.xwre_i (), // Templated
|
.xwre_i (), // Templated
|
.clk_i (gclk), // Templated
|
.clk_i (gclk), // Templated
|
.ena_i (dena)); // Templated
|
.ena_i (dena)); // Templated
|
|
|
endmodule // aeMB2_gprf
|
endmodule // aeMB2_gprf
|
|
|
/*
|
/*
|
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
Revision 1.3 2008/04/26 01:09:06 sybreon
|
Revision 1.3 2008/04/26 01:09:06 sybreon
|
Passes basic tests. Minor documentation changes to make it compatible with iverilog pre-processor.
|
Passes basic tests. Minor documentation changes to make it compatible with iverilog pre-processor.
|
|
|
Revision 1.2 2008/04/20 16:34:32 sybreon
|
Revision 1.2 2008/04/20 16:34:32 sybreon
|
Basic version with some features left out.
|
Basic version with some features left out.
|
|
|
Revision 1.1 2008/04/18 00:21:52 sybreon
|
Revision 1.1 2008/04/18 00:21:52 sybreon
|
Initial import.
|
Initial import.
|
*/
|
*/
|
|
|
`ifdef XXX
|
`ifdef XXX
|
|
|
wire [4:0] wRD0 = (gpha) ? ich_dat[25:21] : 5'd0;
|
wire [4:0] wRD0 = (gpha) ? ich_dat[25:21] : 5'd0;
|
wire [4:0] wRA0 = (gpha) ? ich_dat[20:16] : 5'd0;
|
wire [4:0] wRA0 = (gpha) ? ich_dat[20:16] : 5'd0;
|
wire [4:0] wRB0 = (gpha) ? ich_dat[15:11] : 5'd0;
|
wire [4:0] wRB0 = (gpha) ? ich_dat[15:11] : 5'd0;
|
|
|
wire [4:0] wRD1 = (!gpha) ? ich_dat[25:21] : 5'd0;
|
wire [4:0] wRD1 = (!gpha) ? ich_dat[25:21] : 5'd0;
|
wire [4:0] wRA1 = (!gpha) ? ich_dat[20:16] : 5'd0;
|
wire [4:0] wRA1 = (!gpha) ? ich_dat[20:16] : 5'd0;
|
wire [4:0] wRB1 = (!gpha) ? ich_dat[15:11] : 5'd0;
|
wire [4:0] wRB1 = (!gpha) ? ich_dat[15:11] : 5'd0;
|
|
|
wire [4:0] wRW = rd_mx;
|
wire [4:0] wRW = rd_mx;
|
|
|
wire wWR0 = (!gpha & dena & wrb_fb) | grst;
|
wire wWR0 = (!gpha & dena & wrb_fb) | grst;
|
wire wWR1 = (gpha & dena & wrb_fb) | grst;
|
wire wWR1 = (gpha & dena & wrb_fb) | grst;
|
|
|
wire wWA0 = wWR0;
|
wire wWA0 = wWR0;
|
wire wWB0 = wWR0;
|
wire wWB0 = wWR0;
|
wire wWD0 = wWR0;
|
wire wWD0 = wWR0;
|
wire wWA1 = wWR1;
|
wire wWA1 = wWR1;
|
wire wWB1 = wWR1;
|
wire wWB1 = wWR1;
|
wire wWD1 = wWR1;
|
wire wWD1 = wWR1;
|
|
|
wire [31:0] wDA0,
|
wire [31:0] wDA0,
|
wDA1,
|
wDA1,
|
wDB0,
|
wDB0,
|
wDB1,
|
wDB1,
|
wDD0,
|
wDD0,
|
wDD1;
|
wDD1;
|
|
|
assign opa_if = wDA0 | wDA1;
|
assign opa_if = wDA0 | wDA1;
|
assign opb_if = wDB0 | wDB1;
|
assign opb_if = wDB0 | wDB1;
|
assign opd_if = wDD0 | wDD1;
|
assign opd_if = wDD0 | wDD1;
|
|
|
/* aeMB2_dparam AUTO_TEMPLATE "_\([a-z,0-9]+\)" (
|
/* aeMB2_dparam AUTO_TEMPLATE "_\([a-z,0-9]+\)" (
|
.AW(6'd5),
|
.AW(6'd5),
|
.DW(6'd32),
|
.DW(6'd32),
|
|
|
.clk_i(gclk),
|
.clk_i(gclk),
|
.ena_i(dena),
|
.ena_i(dena),
|
|
|
.dat_i(regd),
|
.dat_i(regd),
|
.adr_i(wRW[4:0]),
|
.adr_i(wRW[4:0]),
|
.wre_i(wW@),
|
.wre_i(wW@),
|
.dat_o(),
|
.dat_o(),
|
|
|
.xwre_i(),
|
.xwre_i(),
|
.xdat_i(),
|
.xdat_i(),
|
.xadr_i(wR@[4:0]),
|
.xadr_i(wR@[4:0]),
|
.xdat_o(wD@[31:0]),
|
.xdat_o(wD@[31:0]),
|
) */
|
) */
|
|
|
aeMB2_dparam
|
aeMB2_dparam
|
#(/*AUTOINSTPARAM*/
|
#(/*AUTOINSTPARAM*/
|
// Parameters
|
// Parameters
|
.AW (6'd5), // Templated
|
.AW (6'd5), // Templated
|
.DW (6'd32)) // Templated
|
.DW (6'd32)) // Templated
|
bank_A0
|
bank_A0
|
(/*AUTOINST*/
|
(/*AUTOINST*/
|
// Outputs
|
// Outputs
|
.dat_o (), // Templated
|
.dat_o (), // Templated
|
.xdat_o (wDA0[31:0]), // Templated
|
.xdat_o (wDA0[31:0]), // Templated
|
// Inputs
|
// Inputs
|
.adr_i (wRW[4:0]), // Templated
|
.adr_i (wRW[4:0]), // Templated
|
.dat_i (regd), // Templated
|
.dat_i (regd), // Templated
|
.wre_i (wWA0), // Templated
|
.wre_i (wWA0), // Templated
|
.xadr_i (wRA0[4:0]), // Templated
|
.xadr_i (wRA0[4:0]), // Templated
|
.xdat_i (), // Templated
|
.xdat_i (), // Templated
|
.xwre_i (), // Templated
|
.xwre_i (), // Templated
|
.clk_i (gclk), // Templated
|
.clk_i (gclk), // Templated
|
.ena_i (dena)); // Templated
|
.ena_i (dena)); // Templated
|
|
|
aeMB2_dparam
|
aeMB2_dparam
|
#(/*AUTOINSTPARAM*/
|
#(/*AUTOINSTPARAM*/
|
// Parameters
|
// Parameters
|
.AW (6'd5), // Templated
|
.AW (6'd5), // Templated
|
.DW (6'd32)) // Templated
|
.DW (6'd32)) // Templated
|
bank_B0
|
bank_B0
|
(/*AUTOINST*/
|
(/*AUTOINST*/
|
// Outputs
|
// Outputs
|
.dat_o (), // Templated
|
.dat_o (), // Templated
|
.xdat_o (wDB0[31:0]), // Templated
|
.xdat_o (wDB0[31:0]), // Templated
|
// Inputs
|
// Inputs
|
.adr_i (wRW[4:0]), // Templated
|
.adr_i (wRW[4:0]), // Templated
|
.dat_i (regd), // Templated
|
.dat_i (regd), // Templated
|
.wre_i (wWB0), // Templated
|
.wre_i (wWB0), // Templated
|
.xadr_i (wRB0[4:0]), // Templated
|
.xadr_i (wRB0[4:0]), // Templated
|
.xdat_i (), // Templated
|
.xdat_i (), // Templated
|
.xwre_i (), // Templated
|
.xwre_i (), // Templated
|
.clk_i (gclk), // Templated
|
.clk_i (gclk), // Templated
|
.ena_i (dena)); // Templated
|
.ena_i (dena)); // Templated
|
|
|
aeMB2_dparam
|
aeMB2_dparam
|
#(/*AUTOINSTPARAM*/
|
#(/*AUTOINSTPARAM*/
|
// Parameters
|
// Parameters
|
.AW (6'd5), // Templated
|
.AW (6'd5), // Templated
|
.DW (6'd32)) // Templated
|
.DW (6'd32)) // Templated
|
bank_D0
|
bank_D0
|
(/*AUTOINST*/
|
(/*AUTOINST*/
|
// Outputs
|
// Outputs
|
.dat_o (), // Templated
|
.dat_o (), // Templated
|
.xdat_o (wDD0[31:0]), // Templated
|
.xdat_o (wDD0[31:0]), // Templated
|
// Inputs
|
// Inputs
|
.adr_i (wRW[4:0]), // Templated
|
.adr_i (wRW[4:0]), // Templated
|
.dat_i (regd), // Templated
|
.dat_i (regd), // Templated
|
.wre_i (wWD0), // Templated
|
.wre_i (wWD0), // Templated
|
.xadr_i (wRD0[4:0]), // Templated
|
.xadr_i (wRD0[4:0]), // Templated
|
.xdat_i (), // Templated
|
.xdat_i (), // Templated
|
.xwre_i (), // Templated
|
.xwre_i (), // Templated
|
.clk_i (gclk), // Templated
|
.clk_i (gclk), // Templated
|
.ena_i (dena)); // Templated
|
.ena_i (dena)); // Templated
|
|
|
aeMB2_dparam
|
aeMB2_dparam
|
#(/*AUTOINSTPARAM*/
|
#(/*AUTOINSTPARAM*/
|
// Parameters
|
// Parameters
|
.AW (6'd5), // Templated
|
.AW (6'd5), // Templated
|
.DW (6'd32)) // Templated
|
.DW (6'd32)) // Templated
|
bank_A1
|
bank_A1
|
(/*AUTOINST*/
|
(/*AUTOINST*/
|
// Outputs
|
// Outputs
|
.dat_o (), // Templated
|
.dat_o (), // Templated
|
.xdat_o (wDA1[31:0]), // Templated
|
.xdat_o (wDA1[31:0]), // Templated
|
// Inputs
|
// Inputs
|
.adr_i (wRW[4:0]), // Templated
|
.adr_i (wRW[4:0]), // Templated
|
.dat_i (regd), // Templated
|
.dat_i (regd), // Templated
|
.wre_i (wWA1), // Templated
|
.wre_i (wWA1), // Templated
|
.xadr_i (wRA1[4:0]), // Templated
|
.xadr_i (wRA1[4:0]), // Templated
|
.xdat_i (), // Templated
|
.xdat_i (), // Templated
|
.xwre_i (), // Templated
|
.xwre_i (), // Templated
|
.clk_i (gclk), // Templated
|
.clk_i (gclk), // Templated
|
.ena_i (dena)); // Templated
|
.ena_i (dena)); // Templated
|
|
|
aeMB2_dparam
|
aeMB2_dparam
|
#(/*AUTOINSTPARAM*/
|
#(/*AUTOINSTPARAM*/
|
// Parameters
|
// Parameters
|
.AW (6'd5), // Templated
|
.AW (6'd5), // Templated
|
.DW (6'd32)) // Templated
|
.DW (6'd32)) // Templated
|
bank_B1
|
bank_B1
|
(/*AUTOINST*/
|
(/*AUTOINST*/
|
// Outputs
|
// Outputs
|
.dat_o (), // Templated
|
.dat_o (), // Templated
|
.xdat_o (wDB1[31:0]), // Templated
|
.xdat_o (wDB1[31:0]), // Templated
|
// Inputs
|
// Inputs
|
.adr_i (wRW[4:0]), // Templated
|
.adr_i (wRW[4:0]), // Templated
|
.dat_i (regd), // Templated
|
.dat_i (regd), // Templated
|
.wre_i (wWB1), // Templated
|
.wre_i (wWB1), // Templated
|
.xadr_i (wRB1[4:0]), // Templated
|
.xadr_i (wRB1[4:0]), // Templated
|
.xdat_i (), // Templated
|
.xdat_i (), // Templated
|
.xwre_i (), // Templated
|
.xwre_i (), // Templated
|
.clk_i (gclk), // Templated
|
.clk_i (gclk), // Templated
|
.ena_i (dena)); // Templated
|
.ena_i (dena)); // Templated
|
|
|
aeMB2_dparam
|
aeMB2_dparam
|
#(/*AUTOINSTPARAM*/
|
#(/*AUTOINSTPARAM*/
|
// Parameters
|
// Parameters
|
.AW (6'd5), // Templated
|
.AW (6'd5), // Templated
|
.DW (6'd32)) // Templated
|
.DW (6'd32)) // Templated
|
bank_D1
|
bank_D1
|
(/*AUTOINST*/
|
(/*AUTOINST*/
|
// Outputs
|
// Outputs
|
.dat_o (), // Templated
|
.dat_o (), // Templated
|
.xdat_o (wDD1[31:0]), // Templated
|
.xdat_o (wDD1[31:0]), // Templated
|
// Inputs
|
// Inputs
|
.adr_i (wRW[4:0]), // Templated
|
.adr_i (wRW[4:0]), // Templated
|
.dat_i (regd), // Templated
|
.dat_i (regd), // Templated
|
.wre_i (wWD1), // Templated
|
.wre_i (wWD1), // Templated
|
.xadr_i (wRD1[4:0]), // Templated
|
.xadr_i (wRD1[4:0]), // Templated
|
.xdat_i (), // Templated
|
.xdat_i (), // Templated
|
.xwre_i (), // Templated
|
.xwre_i (), // Templated
|
.clk_i (gclk), // Templated
|
.clk_i (gclk), // Templated
|
.ena_i (dena)); // Templated
|
.ena_i (dena)); // Templated
|
`endif
|
`endif
|
|
|