blob: 001efa09560145f27b644ff9b132b5edce1c2713 [file] [log] [blame]
// Copyright (C) 2019-2022 The SymbiFlow Authors
//
// Use of this source code is governed by a ISC-style
// license that can be found in the LICENSE file or at
// https://opensource.org/licenses/ISC
//
// SPDX-License-Identifier: ISC
module BRAM_TDP_SPLIT #(parameter AWIDTH = 9,
parameter DWIDTH = 32)(
clk_a,
rce_a,
ra_a,
rq_a,
wce_a,
wa_a,
wd_a,
clk_b,
rce_b,
ra_b,
rq_b,
wce_b,
wa_b,
wd_b
);
input clk_a;
input rce_a;
input [AWIDTH-1:0] ra_a;
output reg [DWIDTH-1:0] rq_a;
input wce_a;
input [AWIDTH-1:0] wa_a;
input [DWIDTH-1:0] wd_a;
input clk_b;
input rce_b;
input [AWIDTH-1:0] ra_b;
output reg [DWIDTH-1:0] rq_b;
input wce_b;
input [AWIDTH-1:0] wa_b;
input [DWIDTH-1:0] wd_b;
reg [DWIDTH-1:0] memory[0:(1<<AWIDTH)-1];
always @(posedge clk_a) begin
if (rce_a)
rq_a <= memory[ra_a];
if (wce_a)
memory[wa_a] <= wd_a;
end
always @(posedge clk_b) begin
if (rce_b)
rq_b <= memory[ra_b];
if (wce_b)
memory[wa_b] <= wd_b;
end
integer i;
initial
begin
for(i = 0; i < (1<<AWIDTH)-1; i = i + 1)
memory[i] = 0;
end
endmodule
module BRAM_TDP_SPLIT_2x18K #(parameter AWIDTH = 10, parameter DWIDTH = 18)(
clk_a_0,
rce_a_0,
ra_a_0,
rq_a_0,
wce_a_0,
wa_a_0,
wd_a_0,
clk_a_1,
rce_a_1,
ra_a_1,
rq_a_1,
wce_a_1,
wa_a_1,
wd_a_1,
clk_b_0,
rce_b_0,
ra_b_0,
rq_b_0,
wce_b_0,
wa_b_0,
wd_b_0,
clk_b_1,
rce_b_1,
ra_b_1,
rq_b_1,
wce_b_1,
wa_b_1,
wd_b_1
);
input clk_a_0;
input rce_a_0;
input [AWIDTH-1:0] ra_a_0;
output [DWIDTH-1:0] rq_a_0;
input wce_a_0;
input [AWIDTH-1:0] wa_a_0;
input [DWIDTH-1:0] wd_a_0;
input clk_b_0;
input rce_b_0;
input [AWIDTH-1:0] ra_b_0;
output [DWIDTH-1:0] rq_b_0;
input wce_b_0;
input [AWIDTH-1:0] wa_b_0;
input [DWIDTH-1:0] wd_b_0;
input clk_a_1;
input rce_a_1;
input [AWIDTH-1:0] ra_a_1;
output [DWIDTH-1:0] rq_a_1;
input wce_a_1;
input [AWIDTH-1:0] wa_a_1;
input [DWIDTH-1:0] wd_a_1;
input clk_b_1;
input rce_b_1;
input [AWIDTH-1:0] ra_b_1;
output [DWIDTH-1:0] rq_b_1;
input wce_b_1;
input [AWIDTH-1:0] wa_b_1;
input [DWIDTH-1:0] wd_b_1;
BRAM_TDP_SPLIT #(.AWIDTH(AWIDTH), .DWIDTH(DWIDTH))
BRAM_TDP_SPLIT_0 (.clk_a(clk_a_0),
.rce_a(rce_a_0),
.ra_a(ra_a_0),
.rq_a(rq_a_0),
.wce_a(wce_a_0),
.wa_a(wa_a_0),
.wd_a(wd_a_0),
.clk_b(clk_b_0),
.rce_b(rce_b_0),
.ra_b(ra_b_0),
.rq_b(rq_b_0),
.wce_b(wce_b_0),
.wa_b(wa_b_0),
.wd_b(wd_b_0));
BRAM_TDP_SPLIT #(.AWIDTH(AWIDTH), .DWIDTH(DWIDTH))
BRAM_TDP_SPLIT_1 (.clk_a(clk_a_1),
.rce_a(rce_a_1),
.ra_a(ra_a_1),
.rq_a(rq_a_1),
.wce_a(wce_a_1),
.wa_a(wa_a_1),
.wd_a(wd_a_1),
.clk_b(clk_b_1),
.rce_b(rce_b_1),
.ra_b(ra_b_1),
.rq_b(rq_b_1),
.wce_b(wce_b_1),
.wa_b(wa_b_1),
.wd_b(wd_b_1));
endmodule
module BRAM_TDP_SPLIT_2x18x1024 (
clk_a_0,
rce_a_0,
ra_a_0,
rq_a_0,
wce_a_0,
wa_a_0,
wd_a_0,
clk_a_1,
rce_a_1,
ra_a_1,
rq_a_1,
wce_a_1,
wa_a_1,
wd_a_1,
clk_b_0,
rce_b_0,
ra_b_0,
rq_b_0,
wce_b_0,
wa_b_0,
wd_b_0,
clk_b_1,
rce_b_1,
ra_b_1,
rq_b_1,
wce_b_1,
wa_b_1,
wd_b_1
);
parameter AWIDTH = 10;
parameter DWIDTH = 18;
input clk_a_0;
input rce_a_0;
input [AWIDTH-1:0] ra_a_0;
output [DWIDTH-1:0] rq_a_0;
input wce_a_0;
input [AWIDTH-1:0] wa_a_0;
input [DWIDTH-1:0] wd_a_0;
input clk_b_0;
input rce_b_0;
input [AWIDTH-1:0] ra_b_0;
output [DWIDTH-1:0] rq_b_0;
input wce_b_0;
input [AWIDTH-1:0] wa_b_0;
input [DWIDTH-1:0] wd_b_0;
input clk_a_1;
input rce_a_1;
input [AWIDTH-1:0] ra_a_1;
output [DWIDTH-1:0] rq_a_1;
input wce_a_1;
input [AWIDTH-1:0] wa_a_1;
input [DWIDTH-1:0] wd_a_1;
input clk_b_1;
input rce_b_1;
input [AWIDTH-1:0] ra_b_1;
output [DWIDTH-1:0] rq_b_1;
input wce_b_1;
input [AWIDTH-1:0] wa_b_1;
input [DWIDTH-1:0] wd_b_1;
BRAM_TDP_SPLIT_2x18K #(.AWIDTH(AWIDTH), .DWIDTH(DWIDTH))
BRAM_TDP_SPLIT_2x18x1024 (
.clk_a_0(clk_a_0),
.rce_a_0(rce_a_0),
.ra_a_0(ra_a_0),
.rq_a_0(rq_a_0),
.wce_a_0(wce_a_0),
.wa_a_0(wa_a_0),
.wd_a_0(wd_a_0),
.clk_b_0(clk_b_0),
.rce_b_0(rce_b_0),
.ra_b_0(ra_b_0),
.rq_b_0(rq_b_0),
.wce_b_0(wce_b_0),
.wa_b_0(wa_b_0),
.wd_b_0(wd_b_0),
.clk_a_1(clk_a_1),
.rce_a_1(rce_a_1),
.ra_a_1(ra_a_1),
.rq_a_1(rq_a_1),
.wce_a_1(wce_a_1),
.wa_a_1(wa_a_1),
.wd_a_1(wd_a_1),
.clk_b_1(clk_b_1),
.rce_b_1(rce_b_1),
.ra_b_1(ra_b_1),
.rq_b_1(rq_b_1),
.wce_b_1(wce_b_1),
.wa_b_1(wa_b_1),
.wd_b_1(wd_b_1));
endmodule
module BRAM_TDP_SPLIT_2x16x1024 (
clk_a_0,
rce_a_0,
ra_a_0,
rq_a_0,
wce_a_0,
wa_a_0,
wd_a_0,
clk_a_1,
rce_a_1,
ra_a_1,
rq_a_1,
wce_a_1,
wa_a_1,
wd_a_1,
clk_b_0,
rce_b_0,
ra_b_0,
rq_b_0,
wce_b_0,
wa_b_0,
wd_b_0,
clk_b_1,
rce_b_1,
ra_b_1,
rq_b_1,
wce_b_1,
wa_b_1,
wd_b_1
);
parameter AWIDTH = 10;
parameter DWIDTH = 16;
input clk_a_0;
input rce_a_0;
input [AWIDTH-1:0] ra_a_0;
output [DWIDTH-1:0] rq_a_0;
input wce_a_0;
input [AWIDTH-1:0] wa_a_0;
input [DWIDTH-1:0] wd_a_0;
input clk_b_0;
input rce_b_0;
input [AWIDTH-1:0] ra_b_0;
output [DWIDTH-1:0] rq_b_0;
input wce_b_0;
input [AWIDTH-1:0] wa_b_0;
input [DWIDTH-1:0] wd_b_0;
input clk_a_1;
input rce_a_1;
input [AWIDTH-1:0] ra_a_1;
output [DWIDTH-1:0] rq_a_1;
input wce_a_1;
input [AWIDTH-1:0] wa_a_1;
input [DWIDTH-1:0] wd_a_1;
input clk_b_1;
input rce_b_1;
input [AWIDTH-1:0] ra_b_1;
output [DWIDTH-1:0] rq_b_1;
input wce_b_1;
input [AWIDTH-1:0] wa_b_1;
input [DWIDTH-1:0] wd_b_1;
BRAM_TDP_SPLIT_2x18K #(.AWIDTH(AWIDTH), .DWIDTH(DWIDTH))
BRAM_TDP_SPLIT_2x16x1024 (
.clk_a_0(clk_a_0),
.rce_a_0(rce_a_0),
.ra_a_0(ra_a_0),
.rq_a_0(rq_a_0),
.wce_a_0(wce_a_0),
.wa_a_0(wa_a_0),
.wd_a_0(wd_a_0),
.clk_b_0(clk_b_0),
.rce_b_0(rce_b_0),
.ra_b_0(ra_b_0),
.rq_b_0(rq_b_0),
.wce_b_0(wce_b_0),
.wa_b_0(wa_b_0),
.wd_b_0(wd_b_0),
.clk_a_1(clk_a_1),
.rce_a_1(rce_a_1),
.ra_a_1(ra_a_1),
.rq_a_1(rq_a_1),
.wce_a_1(wce_a_1),
.wa_a_1(wa_a_1),
.wd_a_1(wd_a_1),
.clk_b_1(clk_b_1),
.rce_b_1(rce_b_1),
.ra_b_1(ra_b_1),
.rq_b_1(rq_b_1),
.wce_b_1(wce_b_1),
.wa_b_1(wa_b_1),
.wd_b_1(wd_b_1));
endmodule
module BRAM_TDP_SPLIT_2x9x2048 (
clk_a_0,
rce_a_0,
ra_a_0,
rq_a_0,
wce_a_0,
wa_a_0,
wd_a_0,
clk_a_1,
rce_a_1,
ra_a_1,
rq_a_1,
wce_a_1,
wa_a_1,
wd_a_1,
clk_b_0,
rce_b_0,
ra_b_0,
rq_b_0,
wce_b_0,
wa_b_0,
wd_b_0,
clk_b_1,
rce_b_1,
ra_b_1,
rq_b_1,
wce_b_1,
wa_b_1,
wd_b_1
);
parameter AWIDTH = 11;
parameter DWIDTH = 9;
input clk_a_0;
input rce_a_0;
input [AWIDTH-1:0] ra_a_0;
output [DWIDTH-1:0] rq_a_0;
input wce_a_0;
input [AWIDTH-1:0] wa_a_0;
input [DWIDTH-1:0] wd_a_0;
input clk_b_0;
input rce_b_0;
input [AWIDTH-1:0] ra_b_0;
output [DWIDTH-1:0] rq_b_0;
input wce_b_0;
input [AWIDTH-1:0] wa_b_0;
input [DWIDTH-1:0] wd_b_0;
input clk_a_1;
input rce_a_1;
input [AWIDTH-1:0] ra_a_1;
output [DWIDTH-1:0] rq_a_1;
input wce_a_1;
input [AWIDTH-1:0] wa_a_1;
input [DWIDTH-1:0] wd_a_1;
input clk_b_1;
input rce_b_1;
input [AWIDTH-1:0] ra_b_1;
output [DWIDTH-1:0] rq_b_1;
input wce_b_1;
input [AWIDTH-1:0] wa_b_1;
input [DWIDTH-1:0] wd_b_1;
BRAM_TDP_SPLIT_2x18K #(.AWIDTH(AWIDTH), .DWIDTH(DWIDTH))
BRAM_TDP_SPLIT_2x9x2048 (
.clk_a_0(clk_a_0),
.rce_a_0(rce_a_0),
.ra_a_0(ra_a_0),
.rq_a_0(rq_a_0),
.wce_a_0(wce_a_0),
.wa_a_0(wa_a_0),
.wd_a_0(wd_a_0),
.clk_b_0(clk_b_0),
.rce_b_0(rce_b_0),
.ra_b_0(ra_b_0),
.rq_b_0(rq_b_0),
.wce_b_0(wce_b_0),
.wa_b_0(wa_b_0),
.wd_b_0(wd_b_0),
.clk_a_1(clk_a_1),
.rce_a_1(rce_a_1),
.ra_a_1(ra_a_1),
.rq_a_1(rq_a_1),
.wce_a_1(wce_a_1),
.wa_a_1(wa_a_1),
.wd_a_1(wd_a_1),
.clk_b_1(clk_b_1),
.rce_b_1(rce_b_1),
.ra_b_1(ra_b_1),
.rq_b_1(rq_b_1),
.wce_b_1(wce_b_1),
.wa_b_1(wa_b_1),
.wd_b_1(wd_b_1));
endmodule
module BRAM_TDP_SPLIT_2x8x2048 (
clk_a_0,
rce_a_0,
ra_a_0,
rq_a_0,
wce_a_0,
wa_a_0,
wd_a_0,
clk_a_1,
rce_a_1,
ra_a_1,
rq_a_1,
wce_a_1,
wa_a_1,
wd_a_1,
clk_b_0,
rce_b_0,
ra_b_0,
rq_b_0,
wce_b_0,
wa_b_0,
wd_b_0,
clk_b_1,
rce_b_1,
ra_b_1,
rq_b_1,
wce_b_1,
wa_b_1,
wd_b_1
);
parameter AWIDTH = 11;
parameter DWIDTH = 8;
input clk_a_0;
input rce_a_0;
input [AWIDTH-1:0] ra_a_0;
output [DWIDTH-1:0] rq_a_0;
input wce_a_0;
input [AWIDTH-1:0] wa_a_0;
input [DWIDTH-1:0] wd_a_0;
input clk_b_0;
input rce_b_0;
input [AWIDTH-1:0] ra_b_0;
output [DWIDTH-1:0] rq_b_0;
input wce_b_0;
input [AWIDTH-1:0] wa_b_0;
input [DWIDTH-1:0] wd_b_0;
input clk_a_1;
input rce_a_1;
input [AWIDTH-1:0] ra_a_1;
output [DWIDTH-1:0] rq_a_1;
input wce_a_1;
input [AWIDTH-1:0] wa_a_1;
input [DWIDTH-1:0] wd_a_1;
input clk_b_1;
input rce_b_1;
input [AWIDTH-1:0] ra_b_1;
output [DWIDTH-1:0] rq_b_1;
input wce_b_1;
input [AWIDTH-1:0] wa_b_1;
input [DWIDTH-1:0] wd_b_1;
BRAM_TDP_SPLIT_2x18K #(.AWIDTH(AWIDTH), .DWIDTH(DWIDTH))
BRAM_TDP_SPLIT_2x8x2048 (
.clk_a_0(clk_a_0),
.rce_a_0(rce_a_0),
.ra_a_0(ra_a_0),
.rq_a_0(rq_a_0),
.wce_a_0(wce_a_0),
.wa_a_0(wa_a_0),
.wd_a_0(wd_a_0),
.clk_b_0(clk_b_0),
.rce_b_0(rce_b_0),
.ra_b_0(ra_b_0),
.rq_b_0(rq_b_0),
.wce_b_0(wce_b_0),
.wa_b_0(wa_b_0),
.wd_b_0(wd_b_0),
.clk_a_1(clk_a_1),
.rce_a_1(rce_a_1),
.ra_a_1(ra_a_1),
.rq_a_1(rq_a_1),
.wce_a_1(wce_a_1),
.wa_a_1(wa_a_1),
.wd_a_1(wd_a_1),
.clk_b_1(clk_b_1),
.rce_b_1(rce_b_1),
.ra_b_1(ra_b_1),
.rq_b_1(rq_b_1),
.wce_b_1(wce_b_1),
.wa_b_1(wa_b_1),
.wd_b_1(wd_b_1));
endmodule
module BRAM_TDP_SPLIT_2x4x4096 (
clk_a_0,
rce_a_0,
ra_a_0,
rq_a_0,
wce_a_0,
wa_a_0,
wd_a_0,
clk_a_1,
rce_a_1,
ra_a_1,
rq_a_1,
wce_a_1,
wa_a_1,
wd_a_1,
clk_b_0,
rce_b_0,
ra_b_0,
rq_b_0,
wce_b_0,
wa_b_0,
wd_b_0,
clk_b_1,
rce_b_1,
ra_b_1,
rq_b_1,
wce_b_1,
wa_b_1,
wd_b_1
);
parameter AWIDTH = 12;
parameter DWIDTH = 4;
input clk_a_0;
input rce_a_0;
input [AWIDTH-1:0] ra_a_0;
output [DWIDTH-1:0] rq_a_0;
input wce_a_0;
input [AWIDTH-1:0] wa_a_0;
input [DWIDTH-1:0] wd_a_0;
input clk_b_0;
input rce_b_0;
input [AWIDTH-1:0] ra_b_0;
output [DWIDTH-1:0] rq_b_0;
input wce_b_0;
input [AWIDTH-1:0] wa_b_0;
input [DWIDTH-1:0] wd_b_0;
input clk_a_1;
input rce_a_1;
input [AWIDTH-1:0] ra_a_1;
output [DWIDTH-1:0] rq_a_1;
input wce_a_1;
input [AWIDTH-1:0] wa_a_1;
input [DWIDTH-1:0] wd_a_1;
input clk_b_1;
input rce_b_1;
input [AWIDTH-1:0] ra_b_1;
output [DWIDTH-1:0] rq_b_1;
input wce_b_1;
input [AWIDTH-1:0] wa_b_1;
input [DWIDTH-1:0] wd_b_1;
BRAM_TDP_SPLIT_2x18K #(.AWIDTH(AWIDTH), .DWIDTH(DWIDTH))
BRAM_TDP_SPLIT_2x4x4096 (
.clk_a_0(clk_a_0),
.rce_a_0(rce_a_0),
.ra_a_0(ra_a_0),
.rq_a_0(rq_a_0),
.wce_a_0(wce_a_0),
.wa_a_0(wa_a_0),
.wd_a_0(wd_a_0),
.clk_b_0(clk_b_0),
.rce_b_0(rce_b_0),
.ra_b_0(ra_b_0),
.rq_b_0(rq_b_0),
.wce_b_0(wce_b_0),
.wa_b_0(wa_b_0),
.wd_b_0(wd_b_0),
.clk_a_1(clk_a_1),
.rce_a_1(rce_a_1),
.ra_a_1(ra_a_1),
.rq_a_1(rq_a_1),
.wce_a_1(wce_a_1),
.wa_a_1(wa_a_1),
.wd_a_1(wd_a_1),
.clk_b_1(clk_b_1),
.rce_b_1(rce_b_1),
.ra_b_1(ra_b_1),
.rq_b_1(rq_b_1),
.wce_b_1(wce_b_1),
.wa_b_1(wa_b_1),
.wd_b_1(wd_b_1));
endmodule
module BRAM_TDP_SPLIT_2x2x8192 (
clk_a_0,
rce_a_0,
ra_a_0,
rq_a_0,
wce_a_0,
wa_a_0,
wd_a_0,
clk_a_1,
rce_a_1,
ra_a_1,
rq_a_1,
wce_a_1,
wa_a_1,
wd_a_1,
clk_b_0,
rce_b_0,
ra_b_0,
rq_b_0,
wce_b_0,
wa_b_0,
wd_b_0,
clk_b_1,
rce_b_1,
ra_b_1,
rq_b_1,
wce_b_1,
wa_b_1,
wd_b_1
);
parameter AWIDTH = 13;
parameter DWIDTH = 2;
input clk_a_0;
input rce_a_0;
input [AWIDTH-1:0] ra_a_0;
output [DWIDTH-1:0] rq_a_0;
input wce_a_0;
input [AWIDTH-1:0] wa_a_0;
input [DWIDTH-1:0] wd_a_0;
input clk_b_0;
input rce_b_0;
input [AWIDTH-1:0] ra_b_0;
output [DWIDTH-1:0] rq_b_0;
input wce_b_0;
input [AWIDTH-1:0] wa_b_0;
input [DWIDTH-1:0] wd_b_0;
input clk_a_1;
input rce_a_1;
input [AWIDTH-1:0] ra_a_1;
output [DWIDTH-1:0] rq_a_1;
input wce_a_1;
input [AWIDTH-1:0] wa_a_1;
input [DWIDTH-1:0] wd_a_1;
input clk_b_1;
input rce_b_1;
input [AWIDTH-1:0] ra_b_1;
output [DWIDTH-1:0] rq_b_1;
input wce_b_1;
input [AWIDTH-1:0] wa_b_1;
input [DWIDTH-1:0] wd_b_1;
BRAM_TDP_SPLIT_2x18K #(.AWIDTH(AWIDTH), .DWIDTH(DWIDTH))
BRAM_TDP_SPLIT_2x2x8192 (
.clk_a_0(clk_a_0),
.rce_a_0(rce_a_0),
.ra_a_0(ra_a_0),
.rq_a_0(rq_a_0),
.wce_a_0(wce_a_0),
.wa_a_0(wa_a_0),
.wd_a_0(wd_a_0),
.clk_b_0(clk_b_0),
.rce_b_0(rce_b_0),
.ra_b_0(ra_b_0),
.rq_b_0(rq_b_0),
.wce_b_0(wce_b_0),
.wa_b_0(wa_b_0),
.wd_b_0(wd_b_0),
.clk_a_1(clk_a_1),
.rce_a_1(rce_a_1),
.ra_a_1(ra_a_1),
.rq_a_1(rq_a_1),
.wce_a_1(wce_a_1),
.wa_a_1(wa_a_1),
.wd_a_1(wd_a_1),
.clk_b_1(clk_b_1),
.rce_b_1(rce_b_1),
.ra_b_1(ra_b_1),
.rq_b_1(rq_b_1),
.wce_b_1(wce_b_1),
.wa_b_1(wa_b_1),
.wd_b_1(wd_b_1));
endmodule
module BRAM_TDP_SPLIT_2x1x16384 (
clk_a_0,
rce_a_0,
ra_a_0,
rq_a_0,
wce_a_0,
wa_a_0,
wd_a_0,
clk_a_1,
rce_a_1,
ra_a_1,
rq_a_1,
wce_a_1,
wa_a_1,
wd_a_1,
clk_b_0,
rce_b_0,
ra_b_0,
rq_b_0,
wce_b_0,
wa_b_0,
wd_b_0,
clk_b_1,
rce_b_1,
ra_b_1,
rq_b_1,
wce_b_1,
wa_b_1,
wd_b_1
);
parameter AWIDTH = 14;
parameter DWIDTH = 1;
input clk_a_0;
input rce_a_0;
input [AWIDTH-1:0] ra_a_0;
output [DWIDTH-1:0] rq_a_0;
input wce_a_0;
input [AWIDTH-1:0] wa_a_0;
input [DWIDTH-1:0] wd_a_0;
input clk_b_0;
input rce_b_0;
input [AWIDTH-1:0] ra_b_0;
output [DWIDTH-1:0] rq_b_0;
input wce_b_0;
input [AWIDTH-1:0] wa_b_0;
input [DWIDTH-1:0] wd_b_0;
input clk_a_1;
input rce_a_1;
input [AWIDTH-1:0] ra_a_1;
output [DWIDTH-1:0] rq_a_1;
input wce_a_1;
input [AWIDTH-1:0] wa_a_1;
input [DWIDTH-1:0] wd_a_1;
input clk_b_1;
input rce_b_1;
input [AWIDTH-1:0] ra_b_1;
output [DWIDTH-1:0] rq_b_1;
input wce_b_1;
input [AWIDTH-1:0] wa_b_1;
input [DWIDTH-1:0] wd_b_1;
BRAM_TDP_SPLIT_2x18K #(.AWIDTH(AWIDTH), .DWIDTH(DWIDTH))
BRAM_TDP_SPLIT_2x1x16384 (
.clk_a_0(clk_a_0),
.rce_a_0(rce_a_0),
.ra_a_0(ra_a_0),
.rq_a_0(rq_a_0),
.wce_a_0(wce_a_0),
.wa_a_0(wa_a_0),
.wd_a_0(wd_a_0),
.clk_b_0(clk_b_0),
.rce_b_0(rce_b_0),
.ra_b_0(ra_b_0),
.rq_b_0(rq_b_0),
.wce_b_0(wce_b_0),
.wa_b_0(wa_b_0),
.wd_b_0(wd_b_0),
.clk_a_1(clk_a_1),
.rce_a_1(rce_a_1),
.ra_a_1(ra_a_1),
.rq_a_1(rq_a_1),
.wce_a_1(wce_a_1),
.wa_a_1(wa_a_1),
.wd_a_1(wd_a_1),
.clk_b_1(clk_b_1),
.rce_b_1(rce_b_1),
.ra_b_1(ra_b_1),
.rq_b_1(rq_b_1),
.wce_b_1(wce_b_1),
.wa_b_1(wa_b_1),
.wd_b_1(wd_b_1));
endmodule