|  | // Copyright 2020-2022 F4PGA Authors | 
|  | // | 
|  | // Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | // you may not use this file except in compliance with the License. | 
|  | // You may obtain a copy of the License at | 
|  | // | 
|  | //     http://www.apache.org/licenses/LICENSE-2.0 | 
|  | // | 
|  | // Unless required by applicable law or agreed to in writing, software | 
|  | // distributed under the License is distributed on an "AS IS" BASIS, | 
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | // See the License for the specific language governing permissions and | 
|  | // limitations under the License. | 
|  | // | 
|  | // SPDX-License-Identifier: Apache-2.0 | 
|  | `timescale 1ns /10ps | 
|  |  | 
|  | `default_nettype none | 
|  |  | 
|  | module TDP_BRAM18 ( | 
|  | (* clkbuf_sink *) | 
|  | input wire CLOCKA, | 
|  | (* clkbuf_sink *) | 
|  | input wire CLOCKB, | 
|  | input wire READENABLEA, | 
|  | input wire READENABLEB, | 
|  | input wire [13:0] ADDRA, | 
|  | input wire [13:0] ADDRB, | 
|  | input wire [15:0] WRITEDATAA, | 
|  | input wire [15:0] WRITEDATAB, | 
|  | input wire [1:0] WRITEDATAAP, | 
|  | input wire [1:0] WRITEDATABP, | 
|  | input wire WRITEENABLEA, | 
|  | input wire WRITEENABLEB, | 
|  | input wire [1:0] BYTEENABLEA, | 
|  | input wire [1:0] BYTEENABLEB, | 
|  | //input wire [2:0] WRITEDATAWIDTHA, | 
|  | //input wire [2:0] WRITEDATAWIDTHB, | 
|  | //input wire [2:0] READDATAWIDTHA, | 
|  | //input wire [2:0] READDATAWIDTHB, | 
|  | output wire [15:0] READDATAA, | 
|  | output wire [15:0] READDATAB, | 
|  | output wire [1:0] READDATAAP, | 
|  | output wire [1:0] READDATABP | 
|  | ); | 
|  | parameter INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter integer READ_WIDTH_A = 0; | 
|  | parameter integer READ_WIDTH_B = 0; | 
|  | parameter integer WRITE_WIDTH_A = 0; | 
|  | parameter integer WRITE_WIDTH_B = 0; | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K ( | 
|  | RESET_ni, | 
|  | WEN_A1_i, | 
|  | WEN_B1_i, | 
|  | REN_A1_i, | 
|  | REN_B1_i, | 
|  | CLK_A1_i, | 
|  | CLK_B1_i, | 
|  | BE_A1_i, | 
|  | BE_B1_i, | 
|  | ADDR_A1_i, | 
|  | ADDR_B1_i, | 
|  | WDATA_A1_i, | 
|  | WDATA_B1_i, | 
|  | RDATA_A1_o, | 
|  | RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i, | 
|  | WEN_B2_i, | 
|  | REN_A2_i, | 
|  | REN_B2_i, | 
|  | CLK_A2_i, | 
|  | CLK_B2_i, | 
|  | BE_A2_i, | 
|  | BE_B2_i, | 
|  | ADDR_A2_i, | 
|  | ADDR_B2_i, | 
|  | WDATA_A2_i, | 
|  | WDATA_B2_i, | 
|  | RDATA_A2_o, | 
|  | RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | // First 18K RAMFIFO (41 bits) | 
|  | localparam [ 0:0] SYNC_FIFO1_i  = MODE_BITS[0]; | 
|  | localparam [ 2:0] RMODE_A1_i    = MODE_BITS[3 : 1]; | 
|  | localparam [ 2:0] RMODE_B1_i    = MODE_BITS[6 : 4]; | 
|  | localparam [ 2:0] WMODE_A1_i    = MODE_BITS[9 : 7]; | 
|  | localparam [ 2:0] WMODE_B1_i    = MODE_BITS[12:10]; | 
|  | localparam [ 0:0] FMODE1_i      = MODE_BITS[13]; | 
|  | localparam [ 0:0] POWERDN1_i    = MODE_BITS[14]; | 
|  | localparam [ 0:0] SLEEP1_i      = MODE_BITS[15]; | 
|  | localparam [ 0:0] PROTECT1_i    = MODE_BITS[16]; | 
|  | localparam [11:0] UPAE1_i       = MODE_BITS[28:17]; | 
|  | localparam [11:0] UPAF1_i       = MODE_BITS[40:29]; | 
|  |  | 
|  | // Second 18K RAMFIFO (39 bits) | 
|  | localparam [ 0:0] SYNC_FIFO2_i  = MODE_BITS[41]; | 
|  | localparam [ 2:0] RMODE_A2_i    = MODE_BITS[44:42]; | 
|  | localparam [ 2:0] RMODE_B2_i    = MODE_BITS[47:45]; | 
|  | localparam [ 2:0] WMODE_A2_i    = MODE_BITS[50:48]; | 
|  | localparam [ 2:0] WMODE_B2_i    = MODE_BITS[53:51]; | 
|  | localparam [ 0:0] FMODE2_i      = MODE_BITS[54]; | 
|  | localparam [ 0:0] POWERDN2_i    = MODE_BITS[55]; | 
|  | localparam [ 0:0] SLEEP2_i      = MODE_BITS[56]; | 
|  | localparam [ 0:0] PROTECT2_i    = MODE_BITS[57]; | 
|  | localparam [10:0] UPAE2_i       = MODE_BITS[68:58]; | 
|  | localparam [10:0] UPAF2_i       = MODE_BITS[79:69]; | 
|  |  | 
|  | // Split (1 bit) | 
|  | localparam [ 0:0] SPLIT_i       = MODE_BITS[80]; | 
|  |  | 
|  | parameter INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INITP_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_40 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_41 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_42 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_43 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_44 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_45 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_46 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_47 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_48 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_49 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_4A = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_4B = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_4C = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_4D = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_4E = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_4F = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_50 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_51 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_52 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_53 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_54 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_55 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_56 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_57 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_58 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_59 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_5A = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_5B = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_5C = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_5D = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_5E = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_5F = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_60 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_61 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_62 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_63 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_64 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_65 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_66 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_67 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_68 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_69 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_6A = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_6B = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_6C = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_6D = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_6E = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_6F = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_70 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_71 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_72 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_73 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_74 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_75 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_76 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_77 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_78 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_79 = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_7A = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_7B = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_7C = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_7D = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_7E = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  | parameter INIT_7F = 256'h0000000000000000000000000000000000000000000000000000000000000000; | 
|  |  | 
|  | input wire RESET_ni; | 
|  | input wire WEN_A1_i; | 
|  | input wire WEN_B1_i; | 
|  | input wire REN_A1_i; | 
|  | input wire REN_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire CLK_B1_i; | 
|  | input wire [1:0] BE_A1_i; | 
|  | input wire [1:0] BE_B1_i; | 
|  | input wire [14:0] ADDR_A1_i; | 
|  | input wire [14:0] ADDR_B1_i; | 
|  | input wire [17:0] WDATA_A1_i; | 
|  | input wire [17:0] WDATA_B1_i; | 
|  | output reg [17:0] RDATA_A1_o; | 
|  | output reg [17:0] RDATA_B1_o; | 
|  | input wire FLUSH1_i; | 
|  | input wire WEN_A2_i; | 
|  | input wire WEN_B2_i; | 
|  | input wire REN_A2_i; | 
|  | input wire REN_B2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire CLK_B2_i; | 
|  | input wire [1:0] BE_A2_i; | 
|  | input wire [1:0] BE_B2_i; | 
|  | input wire [13:0] ADDR_A2_i; | 
|  | input wire [13:0] ADDR_B2_i; | 
|  | input wire [17:0] WDATA_A2_i; | 
|  | input wire [17:0] WDATA_B2_i; | 
|  | output reg [17:0] RDATA_A2_o; | 
|  | output reg [17:0] RDATA_B2_o; | 
|  | input wire FLUSH2_i; | 
|  | wire EMPTY2; | 
|  | wire EPO2; | 
|  | wire EWM2; | 
|  | wire FULL2; | 
|  | wire FMO2; | 
|  | wire FWM2; | 
|  | wire EMPTY1; | 
|  | wire EPO1; | 
|  | wire EWM1; | 
|  | wire FULL1; | 
|  | wire FMO1; | 
|  | wire FWM1; | 
|  | wire UNDERRUN1; | 
|  | wire OVERRUN1; | 
|  | wire UNDERRUN2; | 
|  | wire OVERRUN2; | 
|  | wire UNDERRUN3; | 
|  | wire OVERRUN3; | 
|  | wire EMPTY3; | 
|  | wire EPO3; | 
|  | wire EWM3; | 
|  | wire FULL3; | 
|  | wire FMO3; | 
|  | wire FWM3; | 
|  | wire ram_fmode1; | 
|  | wire ram_fmode2; | 
|  | wire [17:0] ram_rdata_a1; | 
|  | wire [17:0] ram_rdata_b1; | 
|  | wire [17:0] ram_rdata_a2; | 
|  | wire [17:0] ram_rdata_b2; | 
|  | reg [17:0] ram_wdata_a1; | 
|  | reg [17:0] ram_wdata_b1; | 
|  | reg [17:0] ram_wdata_a2; | 
|  | reg [17:0] ram_wdata_b2; | 
|  | reg [14:0] laddr_a1; | 
|  | reg [14:0] laddr_b1; | 
|  | wire [13:0] ram_addr_a1; | 
|  | wire [13:0] ram_addr_b1; | 
|  | wire [13:0] ram_addr_a2; | 
|  | wire [13:0] ram_addr_b2; | 
|  | wire smux_clk_a1; | 
|  | wire smux_clk_b1; | 
|  | wire smux_clk_a2; | 
|  | wire smux_clk_b2; | 
|  | reg [1:0] ram_be_a1; | 
|  | reg [1:0] ram_be_a2; | 
|  | reg [1:0] ram_be_b1; | 
|  | reg [1:0] ram_be_b2; | 
|  | wire [2:0] ram_rmode_a1; | 
|  | wire [2:0] ram_wmode_a1; | 
|  | wire [2:0] ram_rmode_b1; | 
|  | wire [2:0] ram_wmode_b1; | 
|  | wire [2:0] ram_rmode_a2; | 
|  | wire [2:0] ram_wmode_a2; | 
|  | wire [2:0] ram_rmode_b2; | 
|  | wire [2:0] ram_wmode_b2; | 
|  | wire ram_ren_a1; | 
|  | wire ram_ren_b1; | 
|  | wire ram_ren_a2; | 
|  | wire ram_ren_b2; | 
|  | wire ram_wen_a1; | 
|  | wire ram_wen_b1; | 
|  | wire ram_wen_a2; | 
|  | wire ram_wen_b2; | 
|  | wire ren_o; | 
|  | wire [11:0] ff_raddr; | 
|  | wire [11:0] ff_waddr; | 
|  | reg [35:0] fifo_rdata; | 
|  | wire [1:0] fifo_rmode; | 
|  | wire [1:0] fifo_wmode; | 
|  | wire [1:0] bwl; | 
|  | wire [17:0] pl_dout0; | 
|  | wire [17:0] pl_dout1; | 
|  | wire sclk_a1; | 
|  | wire sclk_b1; | 
|  | wire sclk_a2; | 
|  | wire sclk_b2; | 
|  | wire sreset; | 
|  | wire flush1; | 
|  | wire flush2; | 
|  | assign sreset = RESET_ni; | 
|  | assign flush1 = ~FLUSH1_i; | 
|  | assign flush2 = ~FLUSH2_i; | 
|  | assign ram_fmode1 = FMODE1_i & SPLIT_i; | 
|  | assign ram_fmode2 = FMODE2_i & SPLIT_i; | 
|  | assign smux_clk_a1 = CLK_A1_i; | 
|  | assign smux_clk_b1 = (FMODE1_i ? (SYNC_FIFO1_i ? CLK_A1_i : CLK_B1_i) : CLK_B1_i); | 
|  | assign smux_clk_a2 = (SPLIT_i ? CLK_A2_i : CLK_A1_i); | 
|  | assign smux_clk_b2 = (SPLIT_i ? (FMODE2_i ? (SYNC_FIFO2_i ? CLK_A2_i : CLK_B2_i) : CLK_B2_i) : (FMODE1_i ? (SYNC_FIFO1_i ? CLK_A1_i : CLK_B1_i) : CLK_B1_i)); | 
|  | assign sclk_a1 = smux_clk_a1; | 
|  | assign sclk_a2 = smux_clk_a2; | 
|  | assign sclk_b1 = smux_clk_b1; | 
|  | assign sclk_b2 = smux_clk_b2; | 
|  | assign ram_ren_a1 = (SPLIT_i ? REN_A1_i : (FMODE1_i ? 0 : REN_A1_i)); | 
|  | assign ram_ren_a2 = (SPLIT_i ? REN_A2_i : (FMODE1_i ? 0 : REN_A1_i)); | 
|  | assign ram_ren_b1 = (SPLIT_i ? REN_B1_i : (FMODE1_i ? ren_o : REN_B1_i)); | 
|  | assign ram_ren_b2 = (SPLIT_i ? REN_B2_i : (FMODE1_i ? ren_o : REN_B1_i)); | 
|  | localparam MODE_36 = 3'b011; | 
|  | assign ram_wen_a1 = (SPLIT_i ? WEN_A1_i : (FMODE1_i ? ~FULL3 & WEN_A1_i : (WMODE_A1_i == MODE_36 ? WEN_A1_i : WEN_A1_i & ~ADDR_A1_i[4]))); | 
|  | assign ram_wen_a2 = (SPLIT_i ? WEN_A2_i : (FMODE1_i ? ~FULL3 & WEN_A1_i : (WMODE_A1_i == MODE_36 ? WEN_A1_i : WEN_A1_i & ADDR_A1_i[4]))); | 
|  | assign ram_wen_b1 = (SPLIT_i ? WEN_B1_i : (WMODE_B1_i == MODE_36 ? WEN_B1_i : WEN_B1_i & ~ADDR_B1_i[4])); | 
|  | assign ram_wen_b2 = (SPLIT_i ? WEN_B2_i : (WMODE_B1_i == MODE_36 ? WEN_B1_i : WEN_B1_i & ADDR_B1_i[4])); | 
|  | assign ram_addr_a1 = (SPLIT_i ? ADDR_A1_i[13:0] : (FMODE1_i ? {ff_waddr[11:2], ff_waddr[0], 3'b000} : {ADDR_A1_i[14:5], ADDR_A1_i[3:0]})); | 
|  | assign ram_addr_b1 = (SPLIT_i ? ADDR_B1_i[13:0] : (FMODE1_i ? {ff_raddr[11:2], ff_raddr[0], 3'b000} : {ADDR_B1_i[14:5], ADDR_B1_i[3:0]})); | 
|  | assign ram_addr_a2 = (SPLIT_i ? ADDR_A2_i[13:0] : (FMODE1_i ? {ff_waddr[11:2], ff_waddr[0], 3'b000} : {ADDR_A1_i[14:5], ADDR_A1_i[3:0]})); | 
|  | assign ram_addr_b2 = (SPLIT_i ? ADDR_B2_i[13:0] : (FMODE1_i ? {ff_raddr[11:2], ff_raddr[0], 3'b000} : {ADDR_B1_i[14:5], ADDR_B1_i[3:0]})); | 
|  | assign bwl = (SPLIT_i ? ADDR_A1_i[4:3] : (FMODE1_i ? ff_waddr[1:0] : ADDR_A1_i[4:3])); | 
|  | localparam MODE_18 = 3'b010; | 
|  | localparam MODE_9 = 3'b001; | 
|  | always @(*) begin : WDATA_SEL | 
|  | case (SPLIT_i) | 
|  | 1: begin | 
|  | ram_wdata_a1 = WDATA_A1_i; | 
|  | ram_wdata_a2 = WDATA_A2_i; | 
|  | ram_wdata_b1 = WDATA_B1_i; | 
|  | ram_wdata_b2 = WDATA_B2_i; | 
|  | ram_be_a2 = BE_A2_i; | 
|  | ram_be_b2 = BE_B2_i; | 
|  | ram_be_a1 = BE_A1_i; | 
|  | ram_be_b1 = BE_B1_i; | 
|  | end | 
|  | 0: begin | 
|  | case (WMODE_A1_i) | 
|  | MODE_36: begin | 
|  | ram_wdata_a1 = WDATA_A1_i; | 
|  | ram_wdata_a2 = WDATA_A2_i; | 
|  | ram_be_a2 = (FMODE1_i ? 2'b11 : BE_A2_i); | 
|  | ram_be_a1 = (FMODE1_i ? 2'b11 : BE_A1_i); | 
|  | end | 
|  | MODE_18: begin | 
|  | ram_wdata_a1 = WDATA_A1_i; | 
|  | ram_wdata_a2 = WDATA_A1_i; | 
|  | ram_be_a1 = (FMODE1_i ? (ff_waddr[1] ? 2'b00 : 2'b11) : BE_A1_i); | 
|  | ram_be_a2 = (FMODE1_i ? (ff_waddr[1] ? 2'b11 : 2'b00) : BE_A1_i); | 
|  | end | 
|  | MODE_9: begin | 
|  | ram_wdata_a1[7:0] = WDATA_A1_i[7:0]; | 
|  | ram_wdata_a1[16] = WDATA_A1_i[16]; | 
|  | ram_wdata_a1[15:8] = WDATA_A1_i[7:0]; | 
|  | ram_wdata_a1[17] = WDATA_A1_i[16]; | 
|  | ram_wdata_a2[7:0] = WDATA_A1_i[7:0]; | 
|  | ram_wdata_a2[16] = WDATA_A1_i[16]; | 
|  | ram_wdata_a2[15:8] = WDATA_A1_i[7:0]; | 
|  | ram_wdata_a2[17] = WDATA_A1_i[16]; | 
|  | case (bwl) | 
|  | 0: {ram_be_a2, ram_be_a1} = 4'b0001; | 
|  | 1: {ram_be_a2, ram_be_a1} = 4'b0010; | 
|  | 2: {ram_be_a2, ram_be_a1} = 4'b0100; | 
|  | 3: {ram_be_a2, ram_be_a1} = 4'b1000; | 
|  | endcase | 
|  | end | 
|  | default: begin | 
|  | ram_wdata_a1 = WDATA_A1_i; | 
|  | ram_wdata_a2 = WDATA_A1_i; | 
|  | ram_be_a2 = (FMODE1_i ? 2'b11 : BE_A1_i); | 
|  | ram_be_a1 = (FMODE1_i ? 2'b11 : BE_A1_i); | 
|  | end | 
|  | endcase | 
|  | case (WMODE_B1_i) | 
|  | MODE_36: begin | 
|  | ram_wdata_b1 = (FMODE1_i ? 18'b000000000000000000 : WDATA_B1_i); | 
|  | ram_wdata_b2 = (FMODE1_i ? 18'b000000000000000000 : WDATA_B2_i); | 
|  | ram_be_b2 = BE_B2_i; | 
|  | ram_be_b1 = BE_B1_i; | 
|  | end | 
|  | MODE_18: begin | 
|  | ram_wdata_b1 = (FMODE1_i ? 18'b000000000000000000 : WDATA_B1_i); | 
|  | ram_wdata_b2 = (FMODE1_i ? 18'b000000000000000000 : WDATA_B1_i); | 
|  | ram_be_b1 = BE_B1_i; | 
|  | ram_be_b2 = BE_B1_i; | 
|  | end | 
|  | MODE_9: begin | 
|  | ram_wdata_b1[7:0] = WDATA_B1_i[7:0]; | 
|  | ram_wdata_b1[16] = WDATA_B1_i[16]; | 
|  | ram_wdata_b1[15:8] = WDATA_B1_i[7:0]; | 
|  | ram_wdata_b1[17] = WDATA_B1_i[16]; | 
|  | ram_wdata_b2[7:0] = WDATA_B1_i[7:0]; | 
|  | ram_wdata_b2[16] = WDATA_B1_i[16]; | 
|  | ram_wdata_b2[15:8] = WDATA_B1_i[7:0]; | 
|  | ram_wdata_b2[17] = WDATA_B1_i[16]; | 
|  | case (ADDR_B1_i[4:3]) | 
|  | 0: {ram_be_b2, ram_be_b1} = 4'b0001; | 
|  | 1: {ram_be_b2, ram_be_b1} = 4'b0010; | 
|  | 2: {ram_be_b2, ram_be_b1} = 4'b0100; | 
|  | 3: {ram_be_b2, ram_be_b1} = 4'b1000; | 
|  | endcase | 
|  | end | 
|  | default: begin | 
|  | ram_wdata_b1 = (FMODE1_i ? 18'b000000000000000000 : WDATA_B1_i); | 
|  | ram_wdata_b2 = (FMODE1_i ? 18'b000000000000000000 : WDATA_B1_i); | 
|  | ram_be_b2 = BE_B1_i; | 
|  | ram_be_b1 = BE_B1_i; | 
|  | end | 
|  | endcase | 
|  | end | 
|  | endcase | 
|  | end | 
|  | assign ram_rmode_a1 = (SPLIT_i ? (RMODE_A1_i == MODE_36 ? MODE_18 : RMODE_A1_i) : (RMODE_A1_i == MODE_36 ? MODE_18 : RMODE_A1_i)); | 
|  | assign ram_rmode_a2 = (SPLIT_i ? (RMODE_A2_i == MODE_36 ? MODE_18 : RMODE_A2_i) : (RMODE_A1_i == MODE_36 ? MODE_18 : RMODE_A1_i)); | 
|  | assign ram_wmode_a1 = (SPLIT_i ? (WMODE_A1_i == MODE_36 ? MODE_18 : WMODE_A1_i) : (WMODE_A1_i == MODE_36 ? MODE_18 : (FMODE1_i ? MODE_18 : WMODE_A1_i))); | 
|  | assign ram_wmode_a2 = (SPLIT_i ? (WMODE_A2_i == MODE_36 ? MODE_18 : WMODE_A2_i) : (WMODE_A1_i == MODE_36 ? MODE_18 : (FMODE1_i ? MODE_18 : WMODE_A1_i))); | 
|  | assign ram_rmode_b1 = (SPLIT_i ? (RMODE_B1_i == MODE_36 ? MODE_18 : RMODE_B1_i) : (RMODE_B1_i == MODE_36 ? MODE_18 : (FMODE1_i ? MODE_18 : RMODE_B1_i))); | 
|  | assign ram_rmode_b2 = (SPLIT_i ? (RMODE_B2_i == MODE_36 ? MODE_18 : RMODE_B2_i) : (RMODE_B1_i == MODE_36 ? MODE_18 : (FMODE1_i ? MODE_18 : RMODE_B1_i))); | 
|  | assign ram_wmode_b1 = (SPLIT_i ? (WMODE_B1_i == MODE_36 ? MODE_18 : WMODE_B1_i) : (WMODE_B1_i == MODE_36 ? MODE_18 : WMODE_B1_i)); | 
|  | assign ram_wmode_b2 = (SPLIT_i ? (WMODE_B2_i == MODE_36 ? MODE_18 : WMODE_B2_i) : (WMODE_B1_i == MODE_36 ? MODE_18 : WMODE_B1_i)); | 
|  | always @(*) begin : FIFO_READ_SEL | 
|  | case (RMODE_B1_i) | 
|  | MODE_36: fifo_rdata = {ram_rdata_b2[17:16], ram_rdata_b1[17:16], ram_rdata_b2[15:0], ram_rdata_b1[15:0]}; | 
|  | MODE_18: fifo_rdata = (ff_raddr[1] ? {18'b000000000000000000, ram_rdata_b2} : {18'b000000000000000000, ram_rdata_b1}); | 
|  | MODE_9: | 
|  | case (ff_raddr[1:0]) | 
|  | 0: fifo_rdata = {19'b0000000000000000000, ram_rdata_b1[16], 8'b00000000, ram_rdata_b1[7:0]}; | 
|  | 1: fifo_rdata = {19'b0000000000000000000, ram_rdata_b1[17], 8'b00000000, ram_rdata_b1[15:8]}; | 
|  | 2: fifo_rdata = {19'b0000000000000000000, ram_rdata_b2[16], 8'b00000000, ram_rdata_b2[7:0]}; | 
|  | 3: fifo_rdata = {19'b0000000000000000000, ram_rdata_b2[17], 8'b00000000, ram_rdata_b2[15:8]}; | 
|  | endcase | 
|  | default: fifo_rdata = {ram_rdata_b2, ram_rdata_b1}; | 
|  | endcase | 
|  | end | 
|  | localparam MODE_1 = 3'b101; | 
|  | localparam MODE_2 = 3'b110; | 
|  | localparam MODE_4 = 3'b100; | 
|  | always @(*) begin : RDATA_SEL | 
|  | case (SPLIT_i) | 
|  | 1: begin | 
|  | RDATA_A1_o = (FMODE1_i ? {10'b0000000000, EMPTY1, EPO1, EWM1, UNDERRUN1, FULL1, FMO1, FWM1, OVERRUN1} : ram_rdata_a1); | 
|  | RDATA_B1_o = ram_rdata_b1; | 
|  | RDATA_A2_o = (FMODE2_i ? {10'b0000000000, EMPTY2, EPO2, EWM2, UNDERRUN2, FULL2, FMO2, FWM2, OVERRUN2} : ram_rdata_a2); | 
|  | RDATA_B2_o = ram_rdata_b2; | 
|  | end | 
|  | 0: begin | 
|  | if (FMODE1_i) begin | 
|  | RDATA_A1_o = {10'b0000000000, EMPTY3, EPO3, EWM3, UNDERRUN3, FULL3, FMO3, FWM3, OVERRUN3}; | 
|  | RDATA_A2_o = 18'b000000000000000000; | 
|  | end | 
|  | else | 
|  | case (RMODE_A1_i) | 
|  | MODE_36: begin | 
|  | RDATA_A1_o = {ram_rdata_a1[17:0]}; | 
|  | RDATA_A2_o = {ram_rdata_a2[17:0]}; | 
|  | end | 
|  | MODE_18: begin | 
|  | RDATA_A1_o = (laddr_a1[4] ? ram_rdata_a2 : ram_rdata_a1); | 
|  | RDATA_A2_o = 18'b000000000000000000; | 
|  | end | 
|  | MODE_9: begin | 
|  | RDATA_A1_o = (laddr_a1[4] ? {{2 {ram_rdata_a2[16]}}, {2 {ram_rdata_a2[7:0]}}} : {{2 {ram_rdata_a1[16]}}, {2 {ram_rdata_a1[7:0]}}}); | 
|  | RDATA_A2_o = 18'b000000000000000000; | 
|  | end | 
|  | MODE_4: begin | 
|  | RDATA_A2_o = 18'b000000000000000000; | 
|  | RDATA_A1_o[17:4] = 14'b00000000000000; | 
|  | RDATA_A1_o[3:0] = (laddr_a1[4] ? ram_rdata_a2[3:0] : ram_rdata_a1[3:0]); | 
|  | end | 
|  | MODE_2: begin | 
|  | RDATA_A2_o = 18'b000000000000000000; | 
|  | RDATA_A1_o[17:2] = 16'b0000000000000000; | 
|  | RDATA_A1_o[1:0] = (laddr_a1[4] ? ram_rdata_a2[1:0] : ram_rdata_a1[1:0]); | 
|  | end | 
|  | MODE_1: begin | 
|  | RDATA_A2_o = 18'b000000000000000000; | 
|  | RDATA_A1_o[17:1] = 17'b00000000000000000; | 
|  | RDATA_A1_o[0] = (laddr_a1[4] ? ram_rdata_a2[0] : ram_rdata_a1[0]); | 
|  | end | 
|  | default: begin | 
|  | RDATA_A1_o = {ram_rdata_a2[1:0], ram_rdata_a1[15:0]}; | 
|  | RDATA_A2_o = {ram_rdata_a2[17:16], ram_rdata_a1[17:16], ram_rdata_a2[15:2]}; | 
|  | end | 
|  | endcase | 
|  | case (RMODE_B1_i) | 
|  | MODE_36: begin | 
|  | RDATA_B1_o = {ram_rdata_b1}; | 
|  | RDATA_B2_o = {ram_rdata_b2}; | 
|  | end | 
|  | MODE_18: begin | 
|  | RDATA_B1_o = (FMODE1_i ? fifo_rdata[17:0] : (laddr_b1[4] ? ram_rdata_b2 : ram_rdata_b1)); | 
|  | RDATA_B2_o = 18'b000000000000000000; | 
|  | end | 
|  | MODE_9: begin | 
|  | RDATA_B1_o = (FMODE1_i ? {fifo_rdata[17:0]} : (laddr_b1[4] ? {1'b0, ram_rdata_b2[16], 8'b00000000, ram_rdata_b2[7:0]} : {1'b0, ram_rdata_b1[16], 8'b00000000, ram_rdata_b1[7:0]})); | 
|  | RDATA_B2_o = 18'b000000000000000000; | 
|  | end | 
|  | MODE_4: begin | 
|  | RDATA_B2_o = 18'b000000000000000000; | 
|  | RDATA_B1_o[17:4] = 14'b00000000000000; | 
|  | RDATA_B1_o[3:0] = (laddr_b1[4] ? ram_rdata_b2[3:0] : ram_rdata_b1[3:0]); | 
|  | end | 
|  | MODE_2: begin | 
|  | RDATA_B2_o = 18'b000000000000000000; | 
|  | RDATA_B1_o[17:2] = 16'b0000000000000000; | 
|  | RDATA_B1_o[1:0] = (laddr_b1[4] ? ram_rdata_b2[1:0] : ram_rdata_b1[1:0]); | 
|  | end | 
|  | MODE_1: begin | 
|  | RDATA_B2_o = 18'b000000000000000000; | 
|  | RDATA_B1_o[17:1] = 17'b00000000000000000; | 
|  | RDATA_B1_o[0] = (laddr_b1[4] ? ram_rdata_b2[0] : ram_rdata_b1[0]); | 
|  | end | 
|  | default: begin | 
|  | RDATA_B1_o = ram_rdata_b1; | 
|  | RDATA_B2_o = ram_rdata_b2; | 
|  | end | 
|  | endcase | 
|  | end | 
|  | endcase | 
|  | end | 
|  | always @(posedge sclk_a1 or negedge sreset) | 
|  | if (sreset == 0) | 
|  | laddr_a1 <= 1'sb0; | 
|  | else | 
|  | laddr_a1 <= ADDR_A1_i; | 
|  | always @(posedge sclk_b1 or negedge sreset) | 
|  | if (sreset == 0) | 
|  | laddr_b1 <= 1'sb0; | 
|  | else | 
|  | laddr_b1 <= ADDR_B1_i; | 
|  | assign fifo_wmode = ((WMODE_A1_i == MODE_36) ? 2'b00 : ((WMODE_A1_i == MODE_18) ? 2'b01 : ((WMODE_A1_i == MODE_9) ? 2'b10 : 2'b00))); | 
|  | assign fifo_rmode = ((RMODE_B1_i == MODE_36) ? 2'b00 : ((RMODE_B1_i == MODE_18) ? 2'b01 : ((RMODE_B1_i == MODE_9) ? 2'b10 : 2'b00))); | 
|  | fifo_ctl #( | 
|  | .ADDR_WIDTH(12), | 
|  | .FIFO_WIDTH(3'd4), | 
|  | .DEPTH(7) | 
|  | ) fifo36_ctl( | 
|  | .rclk(sclk_b1), | 
|  | .rst_R_n(flush1), | 
|  | .wclk(sclk_a1), | 
|  | .rst_W_n(flush1), | 
|  | .ren(REN_B1_i), | 
|  | .wen(ram_wen_a1), | 
|  | .sync(SYNC_FIFO1_i), | 
|  | .rmode(fifo_rmode), | 
|  | .wmode(fifo_wmode), | 
|  | .ren_o(ren_o), | 
|  | .fflags({FULL3, FMO3, FWM3, OVERRUN3, EMPTY3, EPO3, EWM3, UNDERRUN3}), | 
|  | .raddr(ff_raddr), | 
|  | .waddr(ff_waddr), | 
|  | .upaf(UPAF1_i), | 
|  | .upae(UPAE1_i) | 
|  | ); | 
|  | TDP18K_FIFO #( | 
|  | .UPAF_i(UPAF1_i[10:0]), | 
|  | .UPAE_i(UPAE1_i[10:0]), | 
|  | .SYNC_FIFO_i(SYNC_FIFO1_i), | 
|  | .POWERDN_i(POWERDN1_i), | 
|  | .SLEEP_i(SLEEP1_i), | 
|  | .PROTECT_i(PROTECT1_i) | 
|  | )u1( | 
|  | .RMODE_A_i(ram_rmode_a1), | 
|  | .RMODE_B_i(ram_rmode_b1), | 
|  | .WMODE_A_i(ram_wmode_a1), | 
|  | .WMODE_B_i(ram_wmode_b1), | 
|  | .WEN_A_i(ram_wen_a1), | 
|  | .WEN_B_i(ram_wen_b1), | 
|  | .REN_A_i(ram_ren_a1), | 
|  | .REN_B_i(ram_ren_b1), | 
|  | .CLK_A_i(sclk_a1), | 
|  | .CLK_B_i(sclk_b1), | 
|  | .BE_A_i(ram_be_a1), | 
|  | .BE_B_i(ram_be_b1), | 
|  | .ADDR_A_i(ram_addr_a1), | 
|  | .ADDR_B_i(ram_addr_b1), | 
|  | .WDATA_A_i(ram_wdata_a1), | 
|  | .WDATA_B_i(ram_wdata_b1), | 
|  | .RDATA_A_o(ram_rdata_a1), | 
|  | .RDATA_B_o(ram_rdata_b1), | 
|  | .EMPTY_o(EMPTY1), | 
|  | .EPO_o(EPO1), | 
|  | .EWM_o(EWM1), | 
|  | .UNDERRUN_o(UNDERRUN1), | 
|  | .FULL_o(FULL1), | 
|  | .FMO_o(FMO1), | 
|  | .FWM_o(FWM1), | 
|  | .OVERRUN_o(OVERRUN1), | 
|  | .FLUSH_ni(flush1), | 
|  | .FMODE_i(ram_fmode1) | 
|  | ); | 
|  | TDP18K_FIFO #( | 
|  | .UPAF_i(UPAF2_i), | 
|  | .UPAE_i(UPAE2_i), | 
|  | .SYNC_FIFO_i(SYNC_FIFO2_i), | 
|  | .POWERDN_i(POWERDN2_i), | 
|  | .SLEEP_i(SLEEP2_i), | 
|  | .PROTECT_i(PROTECT2_i) | 
|  | )u2( | 
|  | .RMODE_A_i(ram_rmode_a2), | 
|  | .RMODE_B_i(ram_rmode_b2), | 
|  | .WMODE_A_i(ram_wmode_a2), | 
|  | .WMODE_B_i(ram_wmode_b2), | 
|  | .WEN_A_i(ram_wen_a2), | 
|  | .WEN_B_i(ram_wen_b2), | 
|  | .REN_A_i(ram_ren_a2), | 
|  | .REN_B_i(ram_ren_b2), | 
|  | .CLK_A_i(sclk_a2), | 
|  | .CLK_B_i(sclk_b2), | 
|  | .BE_A_i(ram_be_a2), | 
|  | .BE_B_i(ram_be_b2), | 
|  | .ADDR_A_i(ram_addr_a2), | 
|  | .ADDR_B_i(ram_addr_b2), | 
|  | .WDATA_A_i(ram_wdata_a2), | 
|  | .WDATA_B_i(ram_wdata_b2), | 
|  | .RDATA_A_o(ram_rdata_a2), | 
|  | .RDATA_B_o(ram_rdata_b2), | 
|  | .EMPTY_o(EMPTY2), | 
|  | .EPO_o(EPO2), | 
|  | .EWM_o(EWM2), | 
|  | .UNDERRUN_o(UNDERRUN2), | 
|  | .FULL_o(FULL2), | 
|  | .FMO_o(FMO2), | 
|  | .FWM_o(FWM2), | 
|  | .OVERRUN_o(OVERRUN2), | 
|  | .FLUSH_ni(flush2), | 
|  | .FMODE_i(ram_fmode2) | 
|  | ); | 
|  | endmodule | 
|  |  | 
|  | module BRAM2x18_TDP (A1ADDR, A1DATA, A1EN, B1ADDR, B1DATA, B1EN, C1ADDR, C1DATA, C1EN, CLK1, CLK2, CLK3, CLK4, D1ADDR, D1DATA, D1EN, E1ADDR, E1DATA, E1EN, F1ADDR, F1DATA, F1EN, G1ADDR, G1DATA, G1EN, H1ADDR, H1DATA, H1EN); | 
|  | parameter CFG_ABITS = 11; | 
|  | parameter CFG_DBITS = 18; | 
|  | parameter CFG_ENABLE_B = 4; | 
|  | parameter CFG_ENABLE_D = 4; | 
|  | parameter CFG_ENABLE_F = 4; | 
|  | parameter CFG_ENABLE_H = 4; | 
|  |  | 
|  | parameter CLKPOL2 = 1; | 
|  | parameter CLKPOL3 = 1; | 
|  | parameter [18431:0] INIT0 = 18432'bx; | 
|  | parameter [18431:0] INIT1 = 18432'bx; | 
|  |  | 
|  | localparam MODE_36 = 3'b011; // 36- or 32-bit | 
|  | localparam MODE_18 = 3'b010; // 18- or 16-bit | 
|  | localparam MODE_9 = 3'b001; // 9- or 8-bit | 
|  | localparam MODE_4 = 3'b100; // 4-bit | 
|  | localparam MODE_2 = 3'b110; // 2-bit | 
|  | localparam MODE_1 = 3'b101; // 1-bit | 
|  |  | 
|  | input wire CLK1; | 
|  | input wire CLK2; | 
|  | input wire CLK3; | 
|  | input wire CLK4; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] A1ADDR; | 
|  | output wire [CFG_DBITS-1:0] A1DATA; | 
|  | input  wire A1EN; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] B1ADDR; | 
|  | input  wire [CFG_DBITS-1:0] B1DATA; | 
|  | input  wire [CFG_ENABLE_B-1:0] B1EN; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] C1ADDR; | 
|  | output wire [CFG_DBITS-1:0] C1DATA; | 
|  | input  wire C1EN; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] D1ADDR; | 
|  | input  wire [CFG_DBITS-1:0] D1DATA; | 
|  | input  wire [CFG_ENABLE_D-1:0] D1EN; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] E1ADDR; | 
|  | output wire [CFG_DBITS-1:0] E1DATA; | 
|  | input  wire E1EN; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] F1ADDR; | 
|  | input  wire [CFG_DBITS-1:0] F1DATA; | 
|  | input  wire [CFG_ENABLE_F-1:0] F1EN; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] G1ADDR; | 
|  | output wire [CFG_DBITS-1:0] G1DATA; | 
|  | input  wire G1EN; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] H1ADDR; | 
|  | input  wire [CFG_DBITS-1:0] H1DATA; | 
|  | input  wire [CFG_ENABLE_H-1:0] H1EN; | 
|  |  | 
|  | wire FLUSH1; | 
|  | wire FLUSH2; | 
|  | wire SPLIT; | 
|  |  | 
|  | wire [13:CFG_ABITS] A1ADDR_CMPL = {14-CFG_ABITS{1'b0}}; | 
|  | wire [13:CFG_ABITS] B1ADDR_CMPL = {14-CFG_ABITS{1'b0}}; | 
|  | wire [13:CFG_ABITS] C1ADDR_CMPL = {14-CFG_ABITS{1'b0}}; | 
|  | wire [13:CFG_ABITS] D1ADDR_CMPL = {14-CFG_ABITS{1'b0}}; | 
|  | wire [13:CFG_ABITS] E1ADDR_CMPL = {14-CFG_ABITS{1'b0}}; | 
|  | wire [13:CFG_ABITS] F1ADDR_CMPL = {14-CFG_ABITS{1'b0}}; | 
|  | wire [13:CFG_ABITS] G1ADDR_CMPL = {14-CFG_ABITS{1'b0}}; | 
|  | wire [13:CFG_ABITS] H1ADDR_CMPL = {14-CFG_ABITS{1'b0}}; | 
|  |  | 
|  | wire [13:0] A1ADDR_TOTAL = {A1ADDR_CMPL, A1ADDR}; | 
|  | wire [13:0] B1ADDR_TOTAL = {B1ADDR_CMPL, B1ADDR}; | 
|  | wire [13:0] C1ADDR_TOTAL = {C1ADDR_CMPL, C1ADDR}; | 
|  | wire [13:0] D1ADDR_TOTAL = {D1ADDR_CMPL, D1ADDR}; | 
|  | wire [13:0] E1ADDR_TOTAL = {E1ADDR_CMPL, E1ADDR}; | 
|  | wire [13:0] F1ADDR_TOTAL = {F1ADDR_CMPL, F1ADDR}; | 
|  | wire [13:0] G1ADDR_TOTAL = {G1ADDR_CMPL, G1ADDR}; | 
|  | wire [13:0] H1ADDR_TOTAL = {H1ADDR_CMPL, H1ADDR}; | 
|  |  | 
|  | wire [17:CFG_DBITS] A1_RDATA_CMPL; | 
|  | wire [17:CFG_DBITS] C1_RDATA_CMPL; | 
|  | wire [17:CFG_DBITS] E1_RDATA_CMPL; | 
|  | wire [17:CFG_DBITS] G1_RDATA_CMPL; | 
|  |  | 
|  | wire [17:CFG_DBITS] B1_WDATA_CMPL; | 
|  | wire [17:CFG_DBITS] D1_WDATA_CMPL; | 
|  | wire [17:CFG_DBITS] F1_WDATA_CMPL; | 
|  | wire [17:CFG_DBITS] H1_WDATA_CMPL; | 
|  |  | 
|  | wire [13:0] PORT_A1_ADDR; | 
|  | wire [13:0] PORT_A2_ADDR; | 
|  | wire [13:0] PORT_B1_ADDR; | 
|  | wire [13:0] PORT_B2_ADDR; | 
|  |  | 
|  | case (CFG_DBITS) | 
|  | 1: begin | 
|  | assign PORT_A1_ADDR = A1EN ? A1ADDR_TOTAL : (B1EN ? B1ADDR_TOTAL : 14'd0); | 
|  | assign PORT_B1_ADDR = C1EN ? C1ADDR_TOTAL : (D1EN ? D1ADDR_TOTAL : 14'd0); | 
|  | assign PORT_A2_ADDR = E1EN ? E1ADDR_TOTAL : (F1EN ? F1ADDR_TOTAL : 14'd0); | 
|  | assign PORT_B2_ADDR = G1EN ? G1ADDR_TOTAL : (H1EN ? H1ADDR_TOTAL : 14'd0); | 
|  | defparam bram_2x18k.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0 | 
|  | }; | 
|  | end | 
|  |  | 
|  | 2: begin | 
|  | assign PORT_A1_ADDR = A1EN ? (A1ADDR_TOTAL << 1) : (B1EN ? (B1ADDR_TOTAL << 1) : 14'd0); | 
|  | assign PORT_B1_ADDR = C1EN ? (C1ADDR_TOTAL << 1) : (D1EN ? (D1ADDR_TOTAL << 1) : 14'd0); | 
|  | assign PORT_A2_ADDR = E1EN ? (E1ADDR_TOTAL << 1) : (F1EN ? (F1ADDR_TOTAL << 1) : 14'd0); | 
|  | assign PORT_B2_ADDR = G1EN ? (G1ADDR_TOTAL << 1) : (H1EN ? (H1ADDR_TOTAL << 1) : 14'd0); | 
|  | defparam bram_2x18k.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0 | 
|  | }; | 
|  | end | 
|  |  | 
|  | 4: begin | 
|  | assign PORT_A1_ADDR = A1EN ? (A1ADDR_TOTAL << 2) : (B1EN ? (B1ADDR_TOTAL << 2) : 14'd0); | 
|  | assign PORT_B1_ADDR = C1EN ? (C1ADDR_TOTAL << 2) : (D1EN ? (D1ADDR_TOTAL << 2) : 14'd0); | 
|  | assign PORT_A2_ADDR = E1EN ? (E1ADDR_TOTAL << 2) : (F1EN ? (F1ADDR_TOTAL << 2) : 14'd0); | 
|  | assign PORT_B2_ADDR = G1EN ? (G1ADDR_TOTAL << 2) : (H1EN ? (H1ADDR_TOTAL << 2) : 14'd0); | 
|  | defparam bram_2x18k.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0 | 
|  | }; | 
|  | end | 
|  |  | 
|  | 8, 9: begin | 
|  | assign PORT_A1_ADDR = A1EN ? (A1ADDR_TOTAL << 3) : (B1EN ? (B1ADDR_TOTAL << 3) : 14'd0); | 
|  | assign PORT_B1_ADDR = C1EN ? (C1ADDR_TOTAL << 3) : (D1EN ? (D1ADDR_TOTAL << 3) : 14'd0); | 
|  | assign PORT_A2_ADDR = E1EN ? (E1ADDR_TOTAL << 3) : (F1EN ? (F1ADDR_TOTAL << 3) : 14'd0); | 
|  | assign PORT_B2_ADDR = G1EN ? (G1ADDR_TOTAL << 3) : (H1EN ? (H1ADDR_TOTAL << 3) : 14'd0); | 
|  | defparam bram_2x18k.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0 | 
|  | }; | 
|  | end | 
|  |  | 
|  | 16, 18: begin | 
|  | assign PORT_A1_ADDR = A1EN ? (A1ADDR_TOTAL << 4) : (B1EN ? (B1ADDR_TOTAL << 4) : 14'd0); | 
|  | assign PORT_B1_ADDR = C1EN ? (C1ADDR_TOTAL << 4) : (D1EN ? (D1ADDR_TOTAL << 4) : 14'd0); | 
|  | assign PORT_A2_ADDR = E1EN ? (E1ADDR_TOTAL << 4) : (F1EN ? (F1ADDR_TOTAL << 4) : 14'd0); | 
|  | assign PORT_B2_ADDR = G1EN ? (G1ADDR_TOTAL << 4) : (H1EN ? (H1ADDR_TOTAL << 4) : 14'd0); | 
|  | defparam bram_2x18k.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0 | 
|  | }; | 
|  | end | 
|  |  | 
|  | default: begin | 
|  | assign PORT_A1_ADDR = A1EN ? A1ADDR_TOTAL : (B1EN ? B1ADDR_TOTAL : 14'd0); | 
|  | assign PORT_B1_ADDR = C1EN ? C1ADDR_TOTAL : (D1EN ? D1ADDR_TOTAL : 14'd0); | 
|  | assign PORT_A2_ADDR = E1EN ? E1ADDR_TOTAL : (F1EN ? F1ADDR_TOTAL : 14'd0); | 
|  | assign PORT_B2_ADDR = G1EN ? G1ADDR_TOTAL : (H1EN ? H1ADDR_TOTAL : 14'd0); | 
|  | defparam bram_2x18k.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0 | 
|  | }; | 
|  | end | 
|  | endcase | 
|  |  | 
|  | assign FLUSH1 = 1'b0; | 
|  | assign FLUSH2 = 1'b0; | 
|  |  | 
|  | wire [17:0] PORT_A1_RDATA = {A1_RDATA_CMPL, A1DATA}; | 
|  | wire [17:0] PORT_B1_RDATA = {C1_RDATA_CMPL, C1DATA}; | 
|  | wire [17:0] PORT_A2_RDATA = {E1_RDATA_CMPL, E1DATA}; | 
|  | wire [17:0] PORT_B2_RDATA = {G1_RDATA_CMPL, G1DATA}; | 
|  |  | 
|  | wire [17:0] PORT_A1_WDATA = {B1_WDATA_CMPL, B1DATA}; | 
|  | wire [17:0] PORT_B1_WDATA = {D1_WDATA_CMPL, D1DATA}; | 
|  | wire [17:0] PORT_A2_WDATA = {F1_WDATA_CMPL, F1DATA}; | 
|  | wire [17:0] PORT_B2_WDATA = {H1_WDATA_CMPL, H1DATA}; | 
|  |  | 
|  | wire PORT_A1_CLK = CLK1; | 
|  | wire PORT_A2_CLK = CLK3; | 
|  | wire PORT_B1_CLK = CLK2; | 
|  | wire PORT_B2_CLK = CLK4; | 
|  |  | 
|  | wire PORT_A1_REN = A1EN; | 
|  | wire PORT_A1_WEN = B1EN[0]; | 
|  | wire [CFG_ENABLE_B-1:0] PORT_A1_BE = {B1EN[1],B1EN[0]}; | 
|  |  | 
|  | wire PORT_A2_REN = E1EN; | 
|  | wire PORT_A2_WEN = F1EN[0]; | 
|  | wire [CFG_ENABLE_F-1:0] PORT_A2_BE = {F1EN[1],F1EN[0]}; | 
|  |  | 
|  | wire PORT_B1_REN = C1EN; | 
|  | wire PORT_B1_WEN = D1EN[0]; | 
|  | wire [CFG_ENABLE_D-1:0] PORT_B1_BE = {D1EN[1],D1EN[0]}; | 
|  |  | 
|  | wire PORT_B2_REN = G1EN; | 
|  | wire PORT_B2_WEN = H1EN[0]; | 
|  | wire [CFG_ENABLE_H-1:0] PORT_B2_BE = {H1EN[1],H1EN[0]}; | 
|  |  | 
|  | TDP36K bram_2x18k ( | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(PORT_A1_RDATA), | 
|  | .ADDR_A1_i(PORT_A1_ADDR), | 
|  | .CLK_A1_i(PORT_A1_CLK), | 
|  | .REN_A1_i(PORT_A1_REN), | 
|  | .WEN_A1_i(PORT_A1_WEN), | 
|  | .BE_A1_i(PORT_A1_BE), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(PORT_A2_RDATA), | 
|  | .ADDR_A2_i(PORT_A2_ADDR), | 
|  | .CLK_A2_i(PORT_A2_CLK), | 
|  | .REN_A2_i(PORT_A2_REN), | 
|  | .WEN_A2_i(PORT_A2_WEN), | 
|  | .BE_A2_i(PORT_A2_BE), | 
|  |  | 
|  | .WDATA_B1_i(PORT_B1_WDATA), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(PORT_B1_ADDR), | 
|  | .CLK_B1_i(PORT_B1_CLK), | 
|  | .REN_B1_i(PORT_B1_REN), | 
|  | .WEN_B1_i(PORT_B1_WEN), | 
|  | .BE_B1_i(PORT_B1_BE), | 
|  |  | 
|  | .WDATA_B2_i(PORT_B2_WDATA), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(PORT_B2_ADDR), | 
|  | .CLK_B2_i(PORT_B2_CLK), | 
|  | .REN_B2_i(PORT_B2_REN), | 
|  | .WEN_B2_i(PORT_B2_WEN), | 
|  | .BE_B2_i(PORT_B2_BE), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | endmodule | 
|  |  | 
|  | module BRAM2x18_SDP (A1ADDR, A1DATA, A1EN, B1ADDR, B1DATA, B1EN, C1ADDR, C1DATA, C1EN, CLK1, CLK2, D1ADDR, D1DATA, D1EN); | 
|  | parameter CFG_ABITS = 11; | 
|  | parameter CFG_DBITS = 18; | 
|  | parameter CFG_ENABLE_B = 4; | 
|  | parameter CFG_ENABLE_D = 4; | 
|  |  | 
|  | parameter CLKPOL2 = 1; | 
|  | parameter CLKPOL3 = 1; | 
|  | parameter [18431:0] INIT0 = 18432'bx; | 
|  | parameter [18431:0] INIT1 = 18432'bx; | 
|  |  | 
|  | localparam MODE_36 = 3'b011; // 36- or 32-bit | 
|  | localparam MODE_18 = 3'b010; // 18- or 16-bit | 
|  | localparam MODE_9 = 3'b001; // 9- or 8-bit | 
|  | localparam MODE_4 = 3'b100; // 4-bit | 
|  | localparam MODE_2 = 3'b110; // 2-bit | 
|  | localparam MODE_1 = 3'b101; // 1-bit | 
|  |  | 
|  | input  wire CLK1; | 
|  | input  wire CLK2; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] A1ADDR; | 
|  | output wire [CFG_DBITS-1:0] A1DATA; | 
|  | input  wire A1EN; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] B1ADDR; | 
|  | input  wire [CFG_DBITS-1:0] B1DATA; | 
|  | input  wire [CFG_ENABLE_B-1:0] B1EN; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] C1ADDR; | 
|  | output wire [CFG_DBITS-1:0] C1DATA; | 
|  | input  wire C1EN; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] D1ADDR; | 
|  | input  wire [CFG_DBITS-1:0] D1DATA; | 
|  | input  wire [CFG_ENABLE_D-1:0] D1EN; | 
|  |  | 
|  | wire FLUSH1; | 
|  | wire FLUSH2; | 
|  |  | 
|  | wire [13:CFG_ABITS] A1ADDR_CMPL = {14-CFG_ABITS{1'b0}}; | 
|  | wire [13:CFG_ABITS] B1ADDR_CMPL = {14-CFG_ABITS{1'b0}}; | 
|  | wire [13:CFG_ABITS] C1ADDR_CMPL = {14-CFG_ABITS{1'b0}}; | 
|  | wire [13:CFG_ABITS] D1ADDR_CMPL = {14-CFG_ABITS{1'b0}}; | 
|  |  | 
|  | wire [13:0] A1ADDR_TOTAL = {A1ADDR_CMPL, A1ADDR}; | 
|  | wire [13:0] B1ADDR_TOTAL = {B1ADDR_CMPL, B1ADDR}; | 
|  | wire [13:0] C1ADDR_TOTAL = {C1ADDR_CMPL, C1ADDR}; | 
|  | wire [13:0] D1ADDR_TOTAL = {D1ADDR_CMPL, D1ADDR}; | 
|  |  | 
|  | wire [17:CFG_DBITS] A1_RDATA_CMPL; | 
|  | wire [17:CFG_DBITS] C1_RDATA_CMPL; | 
|  |  | 
|  | wire [17:CFG_DBITS] B1_WDATA_CMPL; | 
|  | wire [17:CFG_DBITS] D1_WDATA_CMPL; | 
|  |  | 
|  | wire [13:0] PORT_A1_ADDR; | 
|  | wire [13:0] PORT_A2_ADDR; | 
|  | wire [13:0] PORT_B1_ADDR; | 
|  | wire [13:0] PORT_B2_ADDR; | 
|  |  | 
|  | case (CFG_DBITS) | 
|  | 1: begin | 
|  | assign PORT_A1_ADDR = A1ADDR_TOTAL; | 
|  | assign PORT_B1_ADDR = B1ADDR_TOTAL; | 
|  | assign PORT_A2_ADDR = C1ADDR_TOTAL; | 
|  | assign PORT_B2_ADDR = D1ADDR_TOTAL; | 
|  | defparam bram_2x18k.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0 | 
|  | }; | 
|  | end | 
|  |  | 
|  | 2: begin | 
|  | assign PORT_A1_ADDR = A1ADDR_TOTAL << 1; | 
|  | assign PORT_B1_ADDR = B1ADDR_TOTAL << 1; | 
|  | assign PORT_A2_ADDR = C1ADDR_TOTAL << 1; | 
|  | assign PORT_B2_ADDR = D1ADDR_TOTAL << 1; | 
|  | defparam bram_2x18k.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0 | 
|  | }; | 
|  | end | 
|  |  | 
|  | 4: begin | 
|  | assign PORT_A1_ADDR = A1ADDR_TOTAL << 2; | 
|  | assign PORT_B1_ADDR = B1ADDR_TOTAL << 2; | 
|  | assign PORT_A2_ADDR = C1ADDR_TOTAL << 2; | 
|  | assign PORT_B2_ADDR = D1ADDR_TOTAL << 2; | 
|  | defparam bram_2x18k.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0 | 
|  | }; | 
|  | end | 
|  |  | 
|  | 8, 9: begin | 
|  | assign PORT_A1_ADDR = A1ADDR_TOTAL << 3; | 
|  | assign PORT_B1_ADDR = B1ADDR_TOTAL << 3; | 
|  | assign PORT_A2_ADDR = C1ADDR_TOTAL << 3; | 
|  | assign PORT_B2_ADDR = D1ADDR_TOTAL << 3; | 
|  | defparam bram_2x18k.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0 | 
|  | }; | 
|  | end | 
|  |  | 
|  | 16, 18: begin | 
|  | assign PORT_A1_ADDR = A1ADDR_TOTAL << 4; | 
|  | assign PORT_B1_ADDR = B1ADDR_TOTAL << 4; | 
|  | assign PORT_A2_ADDR = C1ADDR_TOTAL << 4; | 
|  | assign PORT_B2_ADDR = D1ADDR_TOTAL << 4; | 
|  | defparam bram_2x18k.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0 | 
|  | }; | 
|  | end | 
|  |  | 
|  | default: begin | 
|  | assign PORT_A1_ADDR = A1ADDR_TOTAL; | 
|  | assign PORT_B1_ADDR = B1ADDR_TOTAL; | 
|  | assign PORT_A2_ADDR = D1ADDR_TOTAL; | 
|  | assign PORT_B2_ADDR = C1ADDR_TOTAL; | 
|  | defparam bram_2x18k.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0 | 
|  | }; | 
|  | end | 
|  | endcase | 
|  |  | 
|  | assign FLUSH1 = 1'b0; | 
|  | assign FLUSH2 = 1'b0; | 
|  |  | 
|  | wire [17:0] PORT_A1_RDATA; | 
|  | wire [17:0] PORT_B1_RDATA; | 
|  | wire [17:0] PORT_A2_RDATA; | 
|  | wire [17:0] PORT_B2_RDATA; | 
|  |  | 
|  | wire [17:0] PORT_A1_WDATA; | 
|  | wire [17:0] PORT_B1_WDATA; | 
|  | wire [17:0] PORT_A2_WDATA; | 
|  | wire [17:0] PORT_B2_WDATA; | 
|  |  | 
|  | // Assign read/write data - handle special case for 9bit mode | 
|  | // parity bit for 9bit mode is placed in R/W port on bit #16 | 
|  | case (CFG_DBITS) | 
|  | 9: begin | 
|  | assign A1DATA = {PORT_A1_RDATA[16], PORT_A1_RDATA[7:0]}; | 
|  | assign C1DATA = {PORT_A2_RDATA[16], PORT_A2_RDATA[7:0]}; | 
|  | assign PORT_A1_WDATA = {18{1'b0}}; | 
|  | assign PORT_B1_WDATA = {B1_WDATA_CMPL[17], B1DATA[8], B1_WDATA_CMPL[16:9], B1DATA[7:0]}; | 
|  | assign PORT_A2_WDATA = {18{1'b0}}; | 
|  | assign PORT_B2_WDATA = {D1_WDATA_CMPL[17], D1DATA[8], D1_WDATA_CMPL[16:9], D1DATA[7:0]}; | 
|  | end | 
|  | default: begin | 
|  | assign A1DATA = PORT_A1_RDATA[CFG_DBITS-1:0]; | 
|  | assign C1DATA = PORT_A2_RDATA[CFG_DBITS-1:0]; | 
|  | assign PORT_A1_WDATA = {18{1'b1}}; | 
|  | assign PORT_B1_WDATA = {B1_WDATA_CMPL, B1DATA}; | 
|  | assign PORT_A2_WDATA = {18{1'b1}}; | 
|  | assign PORT_B2_WDATA = {D1_WDATA_CMPL, D1DATA}; | 
|  |  | 
|  | end | 
|  | endcase | 
|  |  | 
|  | wire PORT_A1_CLK = CLK1; | 
|  | wire PORT_A2_CLK = CLK2; | 
|  | wire PORT_B1_CLK = CLK1; | 
|  | wire PORT_B2_CLK = CLK2; | 
|  |  | 
|  | wire PORT_A1_REN = A1EN; | 
|  | wire PORT_A1_WEN = 1'b0; | 
|  | wire [CFG_ENABLE_B-1:0] PORT_A1_BE = {PORT_A1_WEN,PORT_A1_WEN}; | 
|  |  | 
|  | wire PORT_A2_REN = C1EN; | 
|  | wire PORT_A2_WEN = 1'b0; | 
|  | wire [CFG_ENABLE_D-1:0] PORT_A2_BE = {PORT_A2_WEN,PORT_A2_WEN}; | 
|  |  | 
|  | wire PORT_B1_REN = 1'b0; | 
|  | wire PORT_B1_WEN = B1EN[0]; | 
|  | wire [CFG_ENABLE_B-1:0] PORT_B1_BE = {B1EN[1],B1EN[0]}; | 
|  |  | 
|  | wire PORT_B2_REN = 1'b0; | 
|  | wire PORT_B2_WEN = D1EN[0]; | 
|  | wire [CFG_ENABLE_D-1:0] PORT_B2_BE = {D1EN[1],D1EN[0]}; | 
|  |  | 
|  | TDP36K  bram_2x18k ( | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(PORT_A1_RDATA), | 
|  | .ADDR_A1_i(PORT_A1_ADDR), | 
|  | .CLK_A1_i(PORT_A1_CLK), | 
|  | .REN_A1_i(PORT_A1_REN), | 
|  | .WEN_A1_i(PORT_A1_WEN), | 
|  | .BE_A1_i(PORT_A1_BE), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(PORT_A2_RDATA), | 
|  | .ADDR_A2_i(PORT_A2_ADDR), | 
|  | .CLK_A2_i(PORT_A2_CLK), | 
|  | .REN_A2_i(PORT_A2_REN), | 
|  | .WEN_A2_i(PORT_A2_WEN), | 
|  | .BE_A2_i(PORT_A2_BE), | 
|  |  | 
|  | .WDATA_B1_i(PORT_B1_WDATA), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(PORT_B1_ADDR), | 
|  | .CLK_B1_i(PORT_B1_CLK), | 
|  | .REN_B1_i(PORT_B1_REN), | 
|  | .WEN_B1_i(PORT_B1_WEN), | 
|  | .BE_B1_i(PORT_B1_BE), | 
|  |  | 
|  | .WDATA_B2_i(PORT_B2_WDATA), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(PORT_B2_ADDR), | 
|  | .CLK_B2_i(PORT_B2_CLK), | 
|  | .REN_B2_i(PORT_B2_REN), | 
|  | .WEN_B2_i(PORT_B2_WEN), | 
|  | .BE_B2_i(PORT_B2_BE), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | endmodule | 
|  |  | 
|  | module \_$_mem_v2_asymmetric (RD_ADDR, RD_ARST, RD_CLK, RD_DATA, RD_EN, RD_SRST, WR_ADDR, WR_CLK, WR_DATA, WR_EN); | 
|  | localparam CFG_ABITS = 10; | 
|  | localparam CFG_DBITS = 36; | 
|  | localparam CFG_ENABLE_B = 4; | 
|  |  | 
|  | localparam CLKPOL2 = 1; | 
|  | localparam CLKPOL3 = 1; | 
|  |  | 
|  | parameter READ_ADDR_WIDTH = 11; | 
|  | parameter READ_DATA_WIDTH = 16; | 
|  | parameter WRITE_ADDR_WIDTH = 10; | 
|  | parameter WRITE_DATA_WIDTH = 32; | 
|  | parameter ABITS = 0; | 
|  | parameter MEMID = 0; | 
|  | parameter [36863:0] INIT = 36864'bx; | 
|  | parameter OFFSET = 0; | 
|  | parameter RD_ARST_VALUE = 0; | 
|  | parameter RD_CE_OVER_SRST = 0; | 
|  | parameter RD_CLK_ENABLE = 0; | 
|  | parameter RD_CLK_POLARITY = 0; | 
|  | parameter RD_COLLISION_X_MASK = 0; | 
|  | parameter RD_INIT_VALUE = 0; | 
|  | parameter RD_PORTS = 0; | 
|  | parameter RD_SRST_VALUE = 0; | 
|  | parameter RD_TRANSPARENCY_MASK = 0; | 
|  | parameter RD_WIDE_CONTINUATION = 0; | 
|  | parameter SIZE = 0; | 
|  | parameter WIDTH = 0; | 
|  | parameter WR_CLK_ENABLE = 0; | 
|  | parameter WR_CLK_POLARITY = 0; | 
|  | parameter WR_PORTS = 0; | 
|  | parameter WR_PRIORITY_MASK = 0; | 
|  | parameter WR_WIDE_CONTINUATION = 0; | 
|  |  | 
|  | localparam MODE_36 = 3'b011; // 36- or 32-bit | 
|  | localparam MODE_18 = 3'b010; // 18- or 16-bit | 
|  | localparam MODE_9 = 3'b001; // 9- or 8-bit | 
|  | localparam MODE_4 = 3'b100; // 4-bit | 
|  | localparam MODE_2 = 3'b110; // 2-bit | 
|  | localparam MODE_1 = 3'b101; // 1-bit | 
|  |  | 
|  | input  wire RD_CLK; | 
|  | input  wire WR_CLK; | 
|  | input  wire RD_ARST; | 
|  | input  wire RD_SRST; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] RD_ADDR; | 
|  | output wire [CFG_DBITS-1:0] RD_DATA; | 
|  | input  wire RD_EN; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] WR_ADDR; | 
|  | input  wire [CFG_DBITS-1:0] WR_DATA; | 
|  | input  wire [CFG_ENABLE_B-1:0] WR_EN; | 
|  |  | 
|  | wire [14:0] RD_ADDR_15; | 
|  | wire [14:0] WR_ADDR_15; | 
|  |  | 
|  | wire [35:0] DOBDO; | 
|  |  | 
|  | wire [14:CFG_ABITS] RD_ADDR_CMPL; | 
|  | wire [14:CFG_ABITS] WR_ADDR_CMPL; | 
|  | wire [35:CFG_DBITS] RD_DATA_CMPL; | 
|  | wire [35:CFG_DBITS] WR_DATA_CMPL; | 
|  |  | 
|  | wire [14:0] RD_ADDR_TOTAL; | 
|  | wire [14:0] WR_ADDR_TOTAL; | 
|  | wire [35:0] RD_DATA_TOTAL; | 
|  | wire [35:0] WR_DATA_TOTAL; | 
|  |  | 
|  | wire FLUSH1; | 
|  | wire FLUSH2; | 
|  |  | 
|  | assign RD_ADDR_CMPL = {15-CFG_ABITS{1'b0}}; | 
|  | assign WR_ADDR_CMPL = {15-CFG_ABITS{1'b0}}; | 
|  |  | 
|  | assign RD_ADDR_TOTAL = {RD_ADDR_CMPL, RD_ADDR}; | 
|  | assign WR_ADDR_TOTAL = {WR_ADDR_CMPL, WR_ADDR}; | 
|  |  | 
|  | assign RD_DATA_TOTAL = {RD_DATA_CMPL, RD_DATA}; | 
|  | assign WR_DATA_TOTAL = {WR_DATA_CMPL, WR_DATA}; | 
|  |  | 
|  | case (CFG_DBITS) | 
|  | 1: begin | 
|  | assign RD_ADDR_15 = RD_ADDR_TOTAL; | 
|  | assign WR_ADDR_15 = WR_ADDR_TOTAL; | 
|  | defparam bram_asymmetric.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0 | 
|  | }; | 
|  | end | 
|  |  | 
|  | 2: begin | 
|  | assign RD_ADDR_15 = RD_ADDR_TOTAL << 1; | 
|  | assign WR_ADDR_15 = WR_ADDR_TOTAL << 1; | 
|  | defparam bram_asymmetric.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0 | 
|  | }; | 
|  | end | 
|  |  | 
|  | 4: begin | 
|  | assign RD_ADDR_15 = RD_ADDR_TOTAL << 2; | 
|  | assign WR_ADDR_15 = WR_ADDR_TOTAL << 2; | 
|  | defparam bram_asymmetric.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0 | 
|  | }; | 
|  | end | 
|  | 8, 9: begin | 
|  | assign RD_ADDR_15 = RD_ADDR_TOTAL << 3; | 
|  | assign WR_ADDR_15 = WR_ADDR_TOTAL << 3; | 
|  | defparam bram_asymmetric.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0 | 
|  | }; | 
|  | end | 
|  |  | 
|  | 16, 18: begin | 
|  | assign RD_ADDR_15 = RD_ADDR_TOTAL << 4; | 
|  | assign WR_ADDR_15 = WR_ADDR_TOTAL << 4; | 
|  | defparam bram_asymmetric.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0 | 
|  | }; | 
|  | end | 
|  | 32, 36: begin | 
|  | assign RD_ADDR_15 = RD_ADDR_TOTAL << 5; | 
|  | assign WR_ADDR_15 = WR_ADDR_TOTAL << 5; | 
|  | defparam bram_asymmetric.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0 | 
|  | }; | 
|  | end | 
|  | default: begin | 
|  | assign RD_ADDR_15 = RD_ADDR_TOTAL; | 
|  | assign WR_ADDR_15 = WR_ADDR_TOTAL; | 
|  | defparam bram_asymmetric.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0 | 
|  | }; | 
|  | end | 
|  | endcase | 
|  |  | 
|  | assign FLUSH1 = 1'b0; | 
|  | assign FLUSH2 = 1'b0; | 
|  |  | 
|  | TDP36K bram_asymmetric ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(18'h3FFFF), | 
|  | .WDATA_A2_i(18'h3FFFF), | 
|  | .RDATA_A1_o(RD_DATA_TOTAL[17:0]), | 
|  | .RDATA_A2_o(RD_DATA_TOTAL[35:18]), | 
|  | .ADDR_A1_i(RD_ADDR_15), | 
|  | .ADDR_A2_i(RD_ADDR_15), | 
|  | .CLK_A1_i(RD_CLK), | 
|  | .CLK_A2_i(RD_CLK), | 
|  | .REN_A1_i(RD_EN), | 
|  | .REN_A2_i(RD_EN), | 
|  | .WEN_A1_i(1'b0), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i({RD_EN, RD_EN}), | 
|  | .BE_A2_i({RD_EN, RD_EN}), | 
|  |  | 
|  | .WDATA_B1_i(WR_DATA[17:0]), | 
|  | .WDATA_B2_i(WR_DATA[35:18]), | 
|  | .RDATA_B1_o(DOBDO[17:0]), | 
|  | .RDATA_B2_o(DOBDO[35:18]), | 
|  | .ADDR_B1_i(WR_ADDR_15), | 
|  | .ADDR_B2_i(WR_ADDR_15), | 
|  | .CLK_B1_i(WR_CLK), | 
|  | .CLK_B2_i(WR_CLK), | 
|  | .REN_B1_i(1'b0), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(WR_EN[0]), | 
|  | .WEN_B2_i(WR_EN[0]), | 
|  | .BE_B1_i(WR_EN[1:0]), | 
|  | .BE_B2_i(WR_EN[3:2]), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | endmodule | 
|  |  | 
|  | module BRAM2x18_SP ( | 
|  | RESET_ni, | 
|  |  | 
|  | WEN1_i, | 
|  | REN1_i, | 
|  | WR1_CLK_i, | 
|  | RD1_CLK_i, | 
|  | WR1_BE_i, | 
|  | WR1_ADDR_i, | 
|  | RD1_ADDR_i, | 
|  | WDATA1_i, | 
|  | RDATA1_o, | 
|  |  | 
|  | WEN2_i, | 
|  | REN2_i, | 
|  | WR2_CLK_i, | 
|  | RD2_CLK_i, | 
|  | WR2_BE_i, | 
|  | WR2_ADDR_i, | 
|  | RD2_ADDR_i, | 
|  | WDATA2_i, | 
|  | RDATA2_o | 
|  | ); | 
|  |  | 
|  | parameter WR_ADDR_WIDTH = 10; | 
|  | parameter RD_ADDR_WIDTH = 10; | 
|  | parameter WR_DATA_WIDTH = 18; | 
|  | parameter RD_DATA_WIDTH = 18; | 
|  | parameter BE1_WIDTH = 2; | 
|  | parameter BE2_WIDTH = 2; | 
|  |  | 
|  | localparam MODE_36 = 3'b011; // 36- or 32-bit | 
|  | localparam MODE_18 = 3'b010; // 18- or 16-bit | 
|  | localparam MODE_9 = 3'b001; // 9- or 8-bit | 
|  | localparam MODE_4 = 3'b100; // 4-bit | 
|  | localparam MODE_2 = 3'b110; // 2-bit | 
|  | localparam MODE_1 = 3'b101; // 1-bit | 
|  |  | 
|  | input wire RESET_ni; | 
|  |  | 
|  | input wire WEN1_i; | 
|  | input wire REN1_i; | 
|  | input wire WR1_CLK_i; | 
|  | input wire RD1_CLK_i; | 
|  | input wire [BE1_WIDTH-1:0] WR1_BE_i; | 
|  | input wire [WR_ADDR_WIDTH-1 :0] WR1_ADDR_i; | 
|  | input wire [RD_ADDR_WIDTH-1 :0] RD1_ADDR_i; | 
|  | input wire [WR_DATA_WIDTH-1 :0] WDATA1_i; | 
|  | output wire [RD_DATA_WIDTH-1 :0] RDATA1_o; | 
|  |  | 
|  | input wire WEN2_i; | 
|  | input wire REN2_i; | 
|  | input wire WR2_CLK_i; | 
|  | input wire RD2_CLK_i; | 
|  | input wire [BE2_WIDTH-1:0] WR2_BE_i; | 
|  | input wire [WR_ADDR_WIDTH-1 :0] WR2_ADDR_i; | 
|  | input wire [RD_ADDR_WIDTH-1 :0] RD2_ADDR_i; | 
|  | input wire [WR_DATA_WIDTH-1 :0] WDATA2_i; | 
|  | output wire [RD_DATA_WIDTH-1 :0] RDATA2_o; | 
|  |  | 
|  | //localparam READ_DATA_BITS_TO_SKIP = 18 - RD_DATA_WIDTH; | 
|  |  | 
|  | wire [14:RD_ADDR_WIDTH] RD1_ADDR_CMPL; | 
|  | wire [14:WR_ADDR_WIDTH] WR1_ADDR_CMPL; | 
|  | wire [17:RD_DATA_WIDTH] RD1_DATA_CMPL; | 
|  | wire [17:WR_DATA_WIDTH] WR1_DATA_CMPL; | 
|  |  | 
|  | wire [14:RD_ADDR_WIDTH] RD2_ADDR_CMPL; | 
|  | wire [14:WR_ADDR_WIDTH] WR2_ADDR_CMPL; | 
|  | wire [17:RD_DATA_WIDTH] RD2_DATA_CMPL; | 
|  | wire [17:WR_DATA_WIDTH] WR2_DATA_CMPL; | 
|  |  | 
|  | wire [14:0] RD1_ADDR_TOTAL; | 
|  | wire [14:0] WR1_ADDR_TOTAL; | 
|  |  | 
|  | wire [14:0] RD2_ADDR_TOTAL; | 
|  | wire [14:0] WR2_ADDR_TOTAL; | 
|  |  | 
|  | wire [14:0] RD1_ADDR_SHIFTED; | 
|  | wire [14:0] WR1_ADDR_SHIFTED; | 
|  |  | 
|  | wire [14:0] RD2_ADDR_SHIFTED; | 
|  | wire [14:0] WR2_ADDR_SHIFTED; | 
|  |  | 
|  | wire [1:0] WR1_BE; | 
|  | wire [1:0] WR2_BE; | 
|  |  | 
|  | wire FLUSH1; | 
|  | wire FLUSH2; | 
|  |  | 
|  | generate | 
|  | if (WR_ADDR_WIDTH == 15) begin | 
|  | assign WR1_ADDR_TOTAL = WR1_ADDR_i; | 
|  | assign WR2_ADDR_TOTAL = WR2_ADDR_i; | 
|  | end else begin | 
|  | assign WR1_ADDR_TOTAL[14:WR_ADDR_WIDTH] = 0; | 
|  | assign WR1_ADDR_TOTAL[WR_ADDR_WIDTH-1:0] = WR1_ADDR_i; | 
|  | assign WR2_ADDR_TOTAL[14:WR_ADDR_WIDTH] = 0; | 
|  | assign WR2_ADDR_TOTAL[WR_ADDR_WIDTH-1:0] = WR2_ADDR_i; | 
|  | end | 
|  | endgenerate | 
|  |  | 
|  | generate | 
|  | if (RD_ADDR_WIDTH == 15) begin | 
|  | assign RD1_ADDR_TOTAL = RD1_ADDR_i; | 
|  | assign RD2_ADDR_TOTAL = RD2_ADDR_i; | 
|  | end else begin | 
|  | assign RD1_ADDR_TOTAL[14:RD_ADDR_WIDTH] = 0; | 
|  | assign RD1_ADDR_TOTAL[RD_ADDR_WIDTH-1:0] = RD1_ADDR_i; | 
|  | assign RD2_ADDR_TOTAL[14:RD_ADDR_WIDTH] = 0; | 
|  | assign RD2_ADDR_TOTAL[RD_ADDR_WIDTH-1:0] = RD2_ADDR_i; | 
|  | end | 
|  | endgenerate | 
|  |  | 
|  | // Apply shift | 
|  | case (RD_DATA_WIDTH) | 
|  | 1: begin | 
|  | assign RD1_ADDR_SHIFTED = RD1_ADDR_TOTAL; | 
|  | end | 
|  | 2: begin | 
|  | assign RD1_ADDR_SHIFTED = RD1_ADDR_TOTAL << 1; | 
|  | end | 
|  | 4: begin | 
|  | assign RD1_ADDR_SHIFTED = RD1_ADDR_TOTAL << 2; | 
|  | end | 
|  | 8, 9: begin | 
|  | assign RD1_ADDR_SHIFTED = RD1_ADDR_TOTAL << 3; | 
|  | end | 
|  | 16, 18: begin | 
|  | assign RD1_ADDR_SHIFTED = RD1_ADDR_TOTAL << 4; | 
|  | end | 
|  | default: begin | 
|  | assign RD1_ADDR_SHIFTED = RD1_ADDR_TOTAL; | 
|  | end | 
|  | endcase | 
|  |  | 
|  | case (WR_DATA_WIDTH) | 
|  | 1: begin | 
|  | assign WR1_ADDR_SHIFTED = WR1_ADDR_TOTAL; | 
|  | end | 
|  | 2: begin | 
|  | assign WR1_ADDR_SHIFTED = WR1_ADDR_TOTAL << 1; | 
|  | end | 
|  | 4: begin | 
|  | assign WR1_ADDR_SHIFTED = WR1_ADDR_TOTAL << 2; | 
|  | end | 
|  | 8, 9: begin | 
|  | assign WR1_ADDR_SHIFTED = WR1_ADDR_TOTAL << 3; | 
|  | end | 
|  | 16, 18: begin | 
|  | assign WR1_ADDR_SHIFTED = WR1_ADDR_TOTAL << 4; | 
|  | end | 
|  | default: begin | 
|  | assign WR1_ADDR_SHIFTED = WR1_ADDR_TOTAL; | 
|  | end | 
|  | endcase | 
|  |  | 
|  | case (RD_DATA_WIDTH) | 
|  | 1: begin | 
|  | assign RD2_ADDR_SHIFTED = RD2_ADDR_TOTAL; | 
|  | end | 
|  | 2: begin | 
|  | assign RD2_ADDR_SHIFTED = RD2_ADDR_TOTAL << 1; | 
|  | end | 
|  | 4: begin | 
|  | assign RD2_ADDR_SHIFTED = RD2_ADDR_TOTAL << 2; | 
|  | end | 
|  | 8, 9: begin | 
|  | assign RD2_ADDR_SHIFTED = RD2_ADDR_TOTAL << 3; | 
|  | end | 
|  | 16, 18: begin | 
|  | assign RD2_ADDR_SHIFTED = RD2_ADDR_TOTAL << 4; | 
|  | end | 
|  | default: begin | 
|  | assign RD2_ADDR_SHIFTED = RD2_ADDR_TOTAL; | 
|  | end | 
|  | endcase | 
|  |  | 
|  | case (WR_DATA_WIDTH) | 
|  | 1: begin | 
|  | assign WR2_ADDR_SHIFTED = WR2_ADDR_TOTAL; | 
|  | end | 
|  | 2: begin | 
|  | assign WR2_ADDR_SHIFTED = WR2_ADDR_TOTAL << 1; | 
|  | end | 
|  | 4: begin | 
|  | assign WR2_ADDR_SHIFTED = WR2_ADDR_TOTAL << 2; | 
|  | end | 
|  | 8, 9: begin | 
|  | assign WR2_ADDR_SHIFTED = WR2_ADDR_TOTAL << 3; | 
|  | end | 
|  | 16, 18: begin | 
|  | assign WR2_ADDR_SHIFTED = WR2_ADDR_TOTAL << 4; | 
|  | end | 
|  | default: begin | 
|  | assign WR2_ADDR_SHIFTED = WR2_ADDR_TOTAL; | 
|  | end | 
|  | endcase | 
|  |  | 
|  | case (BE1_WIDTH) | 
|  | 2: begin | 
|  | assign WR1_BE = WR1_BE_i[BE1_WIDTH-1 :0]; | 
|  | end | 
|  | default: begin | 
|  | assign WR1_BE[1:BE1_WIDTH] = 0; | 
|  | assign WR1_BE[BE1_WIDTH-1 :0] = WR1_BE_i[BE1_WIDTH-1 :0]; | 
|  | end | 
|  | endcase | 
|  |  | 
|  | case (BE2_WIDTH) | 
|  | 2: begin | 
|  | assign WR2_BE = WR2_BE_i[BE2_WIDTH-1 :0]; | 
|  | end | 
|  | default: begin | 
|  | assign WR2_BE[1:BE2_WIDTH] = 0; | 
|  | assign WR2_BE[BE2_WIDTH-1 :0] = WR2_BE_i[BE2_WIDTH-1 :0]; | 
|  | end | 
|  | endcase | 
|  |  | 
|  | assign FLUSH1 = 1'b0; | 
|  | assign FLUSH2 = 1'b0; | 
|  |  | 
|  | // TODO configure per width | 
|  | wire [17:0] PORT_B1_RDATA; | 
|  | wire [17:0] PORT_B2_RDATA; | 
|  | wire [17:0] PORT_A1_WDATA; | 
|  | wire [17:0] PORT_A2_WDATA; | 
|  |  | 
|  | generate | 
|  | if (WR_DATA_WIDTH == 18) begin | 
|  | assign PORT_A1_WDATA[WR_DATA_WIDTH-1:0] = WDATA1_i[WR_DATA_WIDTH-1:0]; | 
|  | assign PORT_A2_WDATA[WR_DATA_WIDTH-1:0] = WDATA2_i[WR_DATA_WIDTH-1:0]; | 
|  | end else if (WR_DATA_WIDTH == 9) begin | 
|  | assign PORT_A1_WDATA = {19'h0, WDATA1_i[8], 8'h0, WDATA1_i[7:0]}; | 
|  | assign PORT_A2_WDATA = {19'h0, WDATA2_i[8], 8'h0, WDATA2_i[7:0]}; | 
|  | end else begin | 
|  | assign PORT_A1_WDATA[17:WR_DATA_WIDTH] = 0; | 
|  | assign PORT_A1_WDATA[WR_DATA_WIDTH-1:0] = WDATA1_i[WR_DATA_WIDTH-1:0]; | 
|  | assign PORT_A2_WDATA[17:WR_DATA_WIDTH] = 0; | 
|  | assign PORT_A2_WDATA[WR_DATA_WIDTH-1:0] = WDATA2_i[WR_DATA_WIDTH-1:0]; | 
|  | end | 
|  | endgenerate | 
|  |  | 
|  | case (RD_DATA_WIDTH) | 
|  | 9: begin | 
|  | assign RDATA1_o = {PORT_B1_RDATA[16], PORT_B1_RDATA[7:0]}; | 
|  | assign RDATA2_o = {PORT_B2_RDATA[16], PORT_B2_RDATA[7:0]}; | 
|  | end | 
|  | default: begin | 
|  | assign RDATA1_o = PORT_B1_RDATA[RD_DATA_WIDTH-1:0]; | 
|  | assign RDATA2_o = PORT_B2_RDATA[RD_DATA_WIDTH-1:0]; | 
|  | end | 
|  | endcase | 
|  |  | 
|  | // Assign parameters | 
|  | case (RD_DATA_WIDTH) | 
|  | 1: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 1: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 2: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_2, MODE_1, MODE_2, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_2, MODE_1, MODE_2, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 4: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_4, MODE_1, MODE_4, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_4, MODE_1, MODE_4, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 8, 9: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_9, MODE_1, MODE_9, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_9, MODE_1, MODE_9, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_18, MODE_1, MODE_18, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_18, MODE_1, MODE_18, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | 2: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 1: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_2, MODE_1, MODE_2, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_2, MODE_1, MODE_2, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 2: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 4: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_2, MODE_4, MODE_2, MODE_4, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_2, MODE_4, MODE_2, MODE_4, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 8, 9: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_2, MODE_9, MODE_2, MODE_9, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_2, MODE_9, MODE_2, MODE_9, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_2, MODE_18, MODE_2, MODE_18, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_2, MODE_18, MODE_2, MODE_18, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_2, MODE_1, MODE_2, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_2, MODE_1, MODE_2, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | 4: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 1: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_4, MODE_1, MODE_4, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_4, MODE_1, MODE_4, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 2: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_4, MODE_2, MODE_4, MODE_2, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_4, MODE_2, MODE_4, MODE_2, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 4: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 8, 9: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_4, MODE_9, MODE_4, MODE_9, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_4, MODE_9, MODE_4, MODE_9, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_4, MODE_18, MODE_4, MODE_18, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_4, MODE_18, MODE_4, MODE_18, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_4, MODE_1, MODE_4, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_4, MODE_1, MODE_4, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | 8, 9: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 1: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_1, MODE_9, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_9, MODE_1, MODE_9, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 2: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_2, MODE_9, MODE_2, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_9, MODE_2, MODE_9, MODE_2, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 4: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_4, MODE_9, MODE_4, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_9, MODE_4, MODE_9, MODE_4, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 8, 9: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_18, MODE_9, MODE_18, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_9, MODE_18, MODE_9, MODE_18, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_1, MODE_9, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_9, MODE_1, MODE_9, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | 16, 18: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 1: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_1, MODE_18, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_18, MODE_1, MODE_18, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 2: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_2, MODE_18, MODE_2, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_18, MODE_2, MODE_18, MODE_2, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 4: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_4, MODE_18, MODE_4, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_18, MODE_4, MODE_18, MODE_4, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 8, 9: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_9, MODE_18, MODE_9, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_18, MODE_9, MODE_18, MODE_9, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_1, MODE_18, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_18, MODE_1, MODE_18, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | default: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 1: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 2: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_2, MODE_1, MODE_2, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_2, MODE_1, MODE_2, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 4: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_4, MODE_1, MODE_4, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_4, MODE_1, MODE_4, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 8, 9: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_9, MODE_1, MODE_9, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_9, MODE_1, MODE_9, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_18, MODE_1, MODE_18, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_18, MODE_1, MODE_18, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(RESET_ni), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR1_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR1_CLK_i), | 
|  | .REN_A1_i(), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(RD1_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD1_CLK_i), | 
|  | .REN_B1_i(REN1_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN1_i,REN1_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR2_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR2_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN2_i), | 
|  | .BE_A2_i(WR2_BE[1:0]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(RD2_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD2_CLK_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN2_i,REN2_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | endcase | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module RAM_18K_BLK ( | 
|  | WEN_i, | 
|  | REN_i, | 
|  | WR_CLK_i, | 
|  | RD_CLK_i, | 
|  | WR_BE_i, | 
|  | WR_ADDR_i, | 
|  | RD_ADDR_i, | 
|  | WDATA_i, | 
|  | RDATA_o | 
|  | ); | 
|  |  | 
|  | parameter WR_ADDR_WIDTH = 10; | 
|  | parameter RD_ADDR_WIDTH = 10; | 
|  | parameter WR_DATA_WIDTH = 18; | 
|  | parameter RD_DATA_WIDTH = 18; | 
|  | parameter BE_WIDTH = 2; | 
|  |  | 
|  | input wire WEN_i; | 
|  | input wire REN_i; | 
|  | input wire WR_CLK_i; | 
|  | input wire RD_CLK_i; | 
|  | input wire [BE_WIDTH-1:0] WR_BE_i; | 
|  | input wire [WR_ADDR_WIDTH-1 :0] WR_ADDR_i; | 
|  | input wire [RD_ADDR_WIDTH-1 :0] RD_ADDR_i; | 
|  | input wire [WR_DATA_WIDTH-1 :0] WDATA_i; | 
|  | output wire [RD_DATA_WIDTH-1 :0] RDATA_o; | 
|  |  | 
|  | BRAM2x18_SP  #( | 
|  | .WR_ADDR_WIDTH(WR_ADDR_WIDTH), | 
|  | .RD_ADDR_WIDTH(RD_ADDR_WIDTH), | 
|  | .WR_DATA_WIDTH(WR_DATA_WIDTH), | 
|  | .RD_DATA_WIDTH(RD_DATA_WIDTH), | 
|  | .BE1_WIDTH(BE_WIDTH), | 
|  | .BE2_WIDTH() | 
|  | ) U1 | 
|  | ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WEN1_i(WEN_i), | 
|  | .REN1_i(REN_i), | 
|  | .WR1_CLK_i(WR_CLK_i), | 
|  | .RD1_CLK_i(RD_CLK_i), | 
|  | .WR1_BE_i(WR_BE_i), | 
|  | .WR1_ADDR_i(WR_ADDR_i), | 
|  | .RD1_ADDR_i(RD_ADDR_i), | 
|  | .WDATA1_i(WDATA_i), | 
|  | .RDATA1_o(RDATA_o), | 
|  |  | 
|  | .WEN2_i(), | 
|  | .REN2_i(), | 
|  | .WR2_CLK_i(), | 
|  | .RD2_CLK_i(), | 
|  | .WR2_BE_i(), | 
|  | .WR2_ADDR_i(), | 
|  | .RD2_ADDR_i(), | 
|  | .WDATA2_i(), | 
|  | .RDATA2_o() | 
|  | ); | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module RAM_36K_BLK ( | 
|  | WEN_i, | 
|  | REN_i, | 
|  | WR_CLK_i, | 
|  | RD_CLK_i, | 
|  | WR_BE_i, | 
|  | WR_ADDR_i, | 
|  | RD_ADDR_i, | 
|  | WDATA_i, | 
|  | RDATA_o | 
|  | ); | 
|  |  | 
|  | parameter WR_ADDR_WIDTH = 10; | 
|  | parameter RD_ADDR_WIDTH = 10; | 
|  | parameter WR_DATA_WIDTH = 36; | 
|  | parameter RD_DATA_WIDTH = 36; | 
|  | parameter BE_WIDTH = 4; | 
|  |  | 
|  | localparam MODE_36 = 3'b011; // 36- or 32-bit | 
|  | localparam MODE_18 = 3'b010; // 18- or 16-bit | 
|  | localparam MODE_9 = 3'b001; // 9- or 8-bit | 
|  | localparam MODE_4 = 3'b100; // 4-bit | 
|  | localparam MODE_2 = 3'b110; // 2-bit | 
|  | localparam MODE_1 = 3'b101; // 1-bit | 
|  |  | 
|  | input wire WEN_i; | 
|  | input wire REN_i; | 
|  | input wire WR_CLK_i; | 
|  | input wire RD_CLK_i; | 
|  | input wire [BE_WIDTH-1:0] WR_BE_i; | 
|  | input wire [WR_ADDR_WIDTH-1 :0] WR_ADDR_i; | 
|  | input wire [RD_ADDR_WIDTH-1 :0] RD_ADDR_i; | 
|  | input wire [WR_DATA_WIDTH-1 :0] WDATA_i; | 
|  | output wire [RD_DATA_WIDTH-1 :0] RDATA_o; | 
|  |  | 
|  | wire [14:RD_ADDR_WIDTH] RD_ADDR_CMPL; | 
|  | wire [14:WR_ADDR_WIDTH] WR_ADDR_CMPL; | 
|  | wire [35:0] RD_DATA_CMPL; | 
|  | wire [35:WR_DATA_WIDTH] WR_DATA_CMPL; | 
|  |  | 
|  | wire [14:0] RD_ADDR_TOTAL; | 
|  | wire [14:0] WR_ADDR_TOTAL; | 
|  |  | 
|  | wire [14:0] RD_ADDR_SHIFTED; | 
|  | wire [14:0] WR_ADDR_SHIFTED; | 
|  |  | 
|  | wire [3:0] WR_BE; | 
|  |  | 
|  | wire FLUSH1; | 
|  | wire FLUSH2; | 
|  |  | 
|  | generate | 
|  | if (WR_ADDR_WIDTH == 15) begin | 
|  | assign WR_ADDR_TOTAL = WR_ADDR_i; | 
|  | end else begin | 
|  | assign WR_ADDR_TOTAL[14:WR_ADDR_WIDTH] = 0; | 
|  | assign WR_ADDR_TOTAL[WR_ADDR_WIDTH-1:0] = WR_ADDR_i; | 
|  | end | 
|  | endgenerate | 
|  |  | 
|  | generate | 
|  | if (RD_ADDR_WIDTH == 15) begin | 
|  | assign RD_ADDR_TOTAL = RD_ADDR_i; | 
|  | end else begin | 
|  | assign RD_ADDR_TOTAL[14:RD_ADDR_WIDTH] = 0; | 
|  | assign RD_ADDR_TOTAL[RD_ADDR_WIDTH-1:0] = RD_ADDR_i; | 
|  | end | 
|  | endgenerate | 
|  |  | 
|  | // Apply shift | 
|  | case (RD_DATA_WIDTH) | 
|  | 1: begin | 
|  | assign RD_ADDR_SHIFTED = RD_ADDR_TOTAL; | 
|  | end | 
|  | 2: begin | 
|  | assign RD_ADDR_SHIFTED = RD_ADDR_TOTAL << 1; | 
|  | end | 
|  | 4: begin | 
|  | assign RD_ADDR_SHIFTED = RD_ADDR_TOTAL << 2; | 
|  | end | 
|  | 8, 9: begin | 
|  | assign RD_ADDR_SHIFTED = RD_ADDR_TOTAL << 3; | 
|  | end | 
|  | 16, 18: begin | 
|  | assign RD_ADDR_SHIFTED = RD_ADDR_TOTAL << 4; | 
|  | end | 
|  | 32, 36: begin | 
|  | assign RD_ADDR_SHIFTED = RD_ADDR_TOTAL << 5; | 
|  | end | 
|  | default: begin | 
|  | assign RD_ADDR_SHIFTED = RD_ADDR_TOTAL; | 
|  | end | 
|  | endcase | 
|  |  | 
|  | case (WR_DATA_WIDTH) | 
|  | 1: begin | 
|  | assign WR_ADDR_SHIFTED = WR_ADDR_TOTAL; | 
|  | end | 
|  | 2: begin | 
|  | assign WR_ADDR_SHIFTED = WR_ADDR_TOTAL << 1; | 
|  | end | 
|  | 4: begin | 
|  | assign WR_ADDR_SHIFTED = WR_ADDR_TOTAL << 2; | 
|  | end | 
|  | 8, 9: begin | 
|  | assign WR_ADDR_SHIFTED = WR_ADDR_TOTAL << 3; | 
|  | end | 
|  | 16, 18: begin | 
|  | assign WR_ADDR_SHIFTED = WR_ADDR_TOTAL << 4; | 
|  | end | 
|  | 32, 36: begin | 
|  | assign WR_ADDR_SHIFTED = WR_ADDR_TOTAL << 5; | 
|  | end | 
|  | default: begin | 
|  | assign WR_ADDR_SHIFTED = WR_ADDR_TOTAL; | 
|  | end | 
|  | endcase | 
|  |  | 
|  | case (BE_WIDTH) | 
|  | 4: begin | 
|  | assign WR_BE = WR_BE_i[BE_WIDTH-1 :0]; | 
|  | end | 
|  | default: begin | 
|  | assign WR_BE[3:BE_WIDTH] = 0; | 
|  | assign WR_BE[BE_WIDTH-1 :0] = WR_BE_i[BE_WIDTH-1 :0]; | 
|  | end | 
|  | endcase | 
|  |  | 
|  | assign FLUSH1 = 1'b0; | 
|  | assign FLUSH2 = 1'b0; | 
|  |  | 
|  | // TODO configure per width | 
|  | wire [17:0] PORT_B1_RDATA; | 
|  | wire [17:0] PORT_B2_RDATA; | 
|  | wire [35:0] PORT_A_WDATA; | 
|  |  | 
|  | generate | 
|  | if (WR_DATA_WIDTH == 36) begin | 
|  | assign PORT_A_WDATA[WR_DATA_WIDTH-1:0] = WDATA_i[WR_DATA_WIDTH-1:0]; | 
|  | end else if (WR_DATA_WIDTH > 18 && WR_DATA_WIDTH < 36) begin | 
|  | assign PORT_A_WDATA[WR_DATA_WIDTH+1:18]  = WDATA_i[WR_DATA_WIDTH-1:16]; | 
|  | assign PORT_A_WDATA[17:0] = {2'b00,WDATA_i[15:0]}; | 
|  | end else if (WR_DATA_WIDTH == 9) begin | 
|  | assign PORT_A_WDATA = {19'h0, WDATA_i[8], 8'h0, WDATA_i[7:0]}; | 
|  | end else begin | 
|  | assign PORT_A_WDATA[35:WR_DATA_WIDTH] = 0; | 
|  | assign PORT_A_WDATA[WR_DATA_WIDTH-1:0] = WDATA_i[WR_DATA_WIDTH-1:0]; | 
|  | end | 
|  | endgenerate | 
|  |  | 
|  | generate | 
|  | if (RD_DATA_WIDTH == 36) begin | 
|  | assign RD_DATA_CMPL = {PORT_B2_RDATA, PORT_B1_RDATA}; | 
|  | end else if (RD_DATA_WIDTH > 18 && RD_DATA_WIDTH < 36) begin | 
|  | assign RD_DATA_CMPL  = {2'b00,PORT_B2_RDATA[17:0],PORT_B1_RDATA[15:0]}; | 
|  | end else if (RD_DATA_WIDTH == 9) begin | 
|  | assign RD_DATA_CMPL = { 27'h0, PORT_B1_RDATA[16], PORT_B1_RDATA[7:0]}; | 
|  | end else begin | 
|  | assign RD_DATA_CMPL = {18'h0, PORT_B1_RDATA}; | 
|  | end | 
|  | endgenerate | 
|  |  | 
|  | assign RDATA_o = RD_DATA_CMPL[RD_DATA_WIDTH-1:0]; | 
|  |  | 
|  | // Assign parameters | 
|  | case (RD_DATA_WIDTH) | 
|  | 1: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 1: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 2: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_2, MODE_1, MODE_2, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_2, MODE_1, MODE_2, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 4: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_4, MODE_1, MODE_4, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_4, MODE_1, MODE_4, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 8, 9: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_9, MODE_1, MODE_9, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_9, MODE_1, MODE_9, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_18, MODE_1, MODE_18, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_18, MODE_1, MODE_18, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 32, 36: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_36, MODE_1, MODE_36, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_36, MODE_1, MODE_36, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | 2: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 1: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_2, MODE_1, MODE_2, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_2, MODE_1, MODE_2, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 2: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 4: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_2, MODE_4, MODE_2, MODE_4, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_2, MODE_4, MODE_2, MODE_4, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 8, 9: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_2, MODE_9, MODE_2, MODE_9, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_2, MODE_9, MODE_2, MODE_9, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_2, MODE_18, MODE_2, MODE_18, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_2, MODE_18, MODE_2, MODE_18, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 32, 36: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_2, MODE_36, MODE_2, MODE_36, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_2, MODE_36, MODE_2, MODE_36, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_2, MODE_1, MODE_2, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_2, MODE_1, MODE_2, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | 4: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 1: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_4, MODE_1, MODE_4, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_4, MODE_1, MODE_4, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 2: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_4, MODE_2, MODE_4, MODE_2, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_4, MODE_2, MODE_4, MODE_2, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 4: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 8, 9: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_4, MODE_9, MODE_4, MODE_9, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_4, MODE_9, MODE_4, MODE_9, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_4, MODE_18, MODE_4, MODE_18, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_4, MODE_18, MODE_4, MODE_18, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 32, 36: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_4, MODE_36, MODE_4, MODE_36, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_4, MODE_36, MODE_4, MODE_36, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_4, MODE_1, MODE_4, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_4, MODE_1, MODE_4, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | 8, 9: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 1: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_1, MODE_9, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_9, MODE_1, MODE_9, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 2: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_2, MODE_9, MODE_2, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_9, MODE_2, MODE_9, MODE_2, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 4: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_4, MODE_9, MODE_4, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_9, MODE_4, MODE_9, MODE_4, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 8, 9: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_18, MODE_9, MODE_18, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_9, MODE_18, MODE_9, MODE_18, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 32, 36: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_36, MODE_9, MODE_36, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_9, MODE_36, MODE_9, MODE_36, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_1, MODE_9, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_9, MODE_1, MODE_9, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | 16, 18: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 1: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_1, MODE_18, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_18, MODE_1, MODE_18, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 2: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_2, MODE_18, MODE_2, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_18, MODE_2, MODE_18, MODE_2, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 4: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_4, MODE_18, MODE_4, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_18, MODE_4, MODE_18, MODE_4, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 8, 9: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_9, MODE_18, MODE_9, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_18, MODE_9, MODE_18, MODE_9, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 32, 36: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_36, MODE_18, MODE_36, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_18, MODE_36, MODE_18, MODE_36, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_1, MODE_18, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_18, MODE_1, MODE_18, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | 32, 36: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 1: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_1, MODE_36, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_36, MODE_1, MODE_36, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 2: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_2, MODE_36, MODE_2, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_36, MODE_2, MODE_36, MODE_2, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 4: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_4, MODE_36, MODE_4, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_36, MODE_4, MODE_36, MODE_4, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 8, 9: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_9, MODE_36, MODE_9, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_36, MODE_9, MODE_36, MODE_9, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_18, MODE_36, MODE_18, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_36, MODE_18, MODE_36, MODE_18, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 32, 36: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_1, MODE_36, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_36, MODE_1, MODE_36, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | default: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 1: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 2: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_2, MODE_1, MODE_2, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_2, MODE_1, MODE_2, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 4: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_4, MODE_1, MODE_4, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_4, MODE_1, MODE_4, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 8, 9: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_9, MODE_1, MODE_9, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_9, MODE_1, MODE_9, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_18, MODE_1, MODE_18, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_18, MODE_1, MODE_18, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | 32, 36: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_36, MODE_1, MODE_36, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_36, MODE_1, MODE_36, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam BRAM_BLK.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K BRAM_BLK ( | 
|  | .RESET_ni(1'b1), | 
|  |  | 
|  | .WDATA_A1_i(PORT_A_WDATA[17:0]), | 
|  | .RDATA_A1_o(), | 
|  | .ADDR_A1_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A1_i(WR_CLK_i), | 
|  | .REN_A1_i(1'b0), | 
|  | .WEN_A1_i(WEN_i), | 
|  | .BE_A1_i(WR_BE[1:0]), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .RDATA_B1_o(PORT_B1_RDATA[17:0]), | 
|  | .ADDR_B1_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B1_i(RD_CLK_i), | 
|  | .REN_B1_i(REN_i), | 
|  | .WEN_B1_i(1'b0), | 
|  | .BE_B1_i({REN_i,REN_i}), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A_WDATA[35:18]), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A2_i(WR_ADDR_SHIFTED), | 
|  | .CLK_A2_i(WR_CLK_i), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A2_i(WEN_i), | 
|  | .BE_A2_i(WR_BE[3:2]), | 
|  |  | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B2_o(PORT_B2_RDATA[17:0]), | 
|  | .ADDR_B2_i(RD_ADDR_SHIFTED), | 
|  | .CLK_B2_i(RD_CLK_i), | 
|  | .REN_B2_i(REN_i), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B2_i({REN_i,REN_i}), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | endcase | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module BRAM2x18_DP (A1ADDR, A1DATA, A1EN, B1ADDR, B1DATA, B1EN, C1ADDR, C1DATA, C1EN, CLK1, CLK2, CLK3, CLK4, D1ADDR, D1DATA, D1EN, E1ADDR, E1DATA, E1EN, F1ADDR, F1DATA, F1EN, G1ADDR, G1DATA, G1EN, H1ADDR, H1DATA, H1EN); | 
|  | parameter CFG_ABITS = 11; | 
|  | parameter CFG_DBITS = 18; | 
|  | parameter CFG_ENABLE_B = 4; | 
|  | parameter CFG_ENABLE_D = 4; | 
|  | parameter CFG_ENABLE_F = 4; | 
|  | parameter CFG_ENABLE_H = 4; | 
|  |  | 
|  | parameter CLKPOL2 = 1; | 
|  | parameter CLKPOL3 = 1; | 
|  | parameter [18431:0] INIT0 = 18432'bx; | 
|  | parameter [18431:0] INIT1 = 18432'bx; | 
|  |  | 
|  | localparam MODE_36 = 3'b011; // 36- or 32-bit | 
|  | localparam MODE_18 = 3'b010; // 18- or 16-bit | 
|  | localparam MODE_9 = 3'b001; // 9- or 8-bit | 
|  | localparam MODE_4 = 3'b100; // 4-bit | 
|  | localparam MODE_2 = 3'b110; // 2-bit | 
|  | localparam MODE_1 = 3'b101; // 1-bit | 
|  |  | 
|  | input wire CLK1; | 
|  | input wire CLK2; | 
|  | input wire CLK3; | 
|  | input wire CLK4; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] A1ADDR; | 
|  | output wire [CFG_DBITS-1:0] A1DATA; | 
|  | input  wire A1EN; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] B1ADDR; | 
|  | input  wire [CFG_DBITS-1:0] B1DATA; | 
|  | input  wire [CFG_ENABLE_B-1:0] B1EN; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] C1ADDR; | 
|  | output wire [CFG_DBITS-1:0] C1DATA; | 
|  | input  wire C1EN; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] D1ADDR; | 
|  | input  wire [CFG_DBITS-1:0] D1DATA; | 
|  | input  wire [CFG_ENABLE_D-1:0] D1EN; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] E1ADDR; | 
|  | output wire [CFG_DBITS-1:0] E1DATA; | 
|  | input  wire E1EN; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] F1ADDR; | 
|  | input  wire [CFG_DBITS-1:0] F1DATA; | 
|  | input  wire [CFG_ENABLE_F-1:0] F1EN; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] G1ADDR; | 
|  | output wire [CFG_DBITS-1:0] G1DATA; | 
|  | input  wire G1EN; | 
|  |  | 
|  | input  wire [CFG_ABITS-1:0] H1ADDR; | 
|  | input  wire [CFG_DBITS-1:0] H1DATA; | 
|  | input  wire [CFG_ENABLE_H-1:0] H1EN; | 
|  |  | 
|  | wire FLUSH1; | 
|  | wire FLUSH2; | 
|  |  | 
|  | wire [14:0] A1ADDR_TOTAL; | 
|  | wire [14:0] B1ADDR_TOTAL; | 
|  | wire [14:0] C1ADDR_TOTAL; | 
|  | wire [14:0] D1ADDR_TOTAL; | 
|  | wire [14:0] E1ADDR_TOTAL; | 
|  | wire [14:0] F1ADDR_TOTAL; | 
|  | wire [14:0] G1ADDR_TOTAL; | 
|  | wire [14:0] H1ADDR_TOTAL; | 
|  |  | 
|  | generate | 
|  | if (CFG_ABITS == 15) begin | 
|  | assign A1ADDR_TOTAL = A1ADDR; | 
|  | assign B1ADDR_TOTAL = B1ADDR; | 
|  | assign C1ADDR_TOTAL = C1ADDR; | 
|  | assign D1ADDR_TOTAL = D1ADDR; | 
|  | assign E1ADDR_TOTAL = E1ADDR; | 
|  | assign F1ADDR_TOTAL = F1ADDR; | 
|  | assign G1ADDR_TOTAL = G1ADDR; | 
|  | assign H1ADDR_TOTAL = H1ADDR; | 
|  | end else begin | 
|  | assign A1ADDR_TOTAL[14:CFG_ABITS] = 0; | 
|  | assign A1ADDR_TOTAL[CFG_ABITS-1:0] = A1ADDR; | 
|  | assign B1ADDR_TOTAL[14:CFG_ABITS] = 0; | 
|  | assign B1ADDR_TOTAL[CFG_ABITS-1:0] = B1ADDR; | 
|  | assign C1ADDR_TOTAL[14:CFG_ABITS] = 0; | 
|  | assign C1ADDR_TOTAL[CFG_ABITS-1:0] = C1ADDR; | 
|  | assign D1ADDR_TOTAL[14:CFG_ABITS] = 0; | 
|  | assign D1ADDR_TOTAL[CFG_ABITS-1:0] = D1ADDR; | 
|  | assign E1ADDR_TOTAL[14:CFG_ABITS] = 0; | 
|  | assign E1ADDR_TOTAL[CFG_ABITS-1:0] = E1ADDR; | 
|  | assign F1ADDR_TOTAL[14:CFG_ABITS] = 0; | 
|  | assign F1ADDR_TOTAL[CFG_ABITS-1:0] = F1ADDR; | 
|  | assign G1ADDR_TOTAL[14:CFG_ABITS] = 0; | 
|  | assign G1ADDR_TOTAL[CFG_ABITS-1:0] = G1ADDR; | 
|  | assign H1ADDR_TOTAL[14:CFG_ABITS] = 0; | 
|  | assign H1ADDR_TOTAL[CFG_ABITS-1:0] = H1ADDR; | 
|  | end | 
|  | endgenerate | 
|  |  | 
|  | wire [17:CFG_DBITS] A1_RDATA_CMPL; | 
|  | wire [17:CFG_DBITS] C1_RDATA_CMPL; | 
|  | wire [17:CFG_DBITS] E1_RDATA_CMPL; | 
|  | wire [17:CFG_DBITS] G1_RDATA_CMPL; | 
|  |  | 
|  | wire [17:CFG_DBITS] B1_WDATA_CMPL; | 
|  | wire [17:CFG_DBITS] D1_WDATA_CMPL; | 
|  | wire [17:CFG_DBITS] F1_WDATA_CMPL; | 
|  | wire [17:CFG_DBITS] H1_WDATA_CMPL; | 
|  |  | 
|  | wire [14:0] PORT_A1_ADDR; | 
|  | wire [14:0] PORT_A2_ADDR; | 
|  | wire [14:0] PORT_B1_ADDR; | 
|  | wire [14:0] PORT_B2_ADDR; | 
|  |  | 
|  | assign FLUSH1 = 1'b0; | 
|  | assign FLUSH2 = 1'b0; | 
|  |  | 
|  | wire [17:0] PORT_A1_RDATA; | 
|  | wire [17:0] PORT_B1_RDATA; | 
|  | wire [17:0] PORT_A2_RDATA; | 
|  | wire [17:0] PORT_B2_RDATA; | 
|  |  | 
|  | wire [17:0] PORT_A1_WDATA; | 
|  | wire [17:0] PORT_B1_WDATA; | 
|  | wire [17:0] PORT_A2_WDATA; | 
|  | wire [17:0] PORT_B2_WDATA; | 
|  |  | 
|  | // Assign read/write data - handle special case for 9bit mode | 
|  | // parity bit for 9bit mode is placed in R/W port on bit #16 | 
|  | case (CFG_DBITS) | 
|  | 9: begin | 
|  | assign A1DATA = {PORT_A1_RDATA[16], PORT_A1_RDATA[7:0]}; | 
|  | assign C1DATA = {PORT_B1_RDATA[16], PORT_B1_RDATA[7:0]}; | 
|  | assign E1DATA = {PORT_A2_RDATA[16], PORT_A2_RDATA[7:0]}; | 
|  | assign G1DATA = {PORT_B2_RDATA[16], PORT_B2_RDATA[7:0]}; | 
|  | assign PORT_A1_WDATA = {B1_WDATA_CMPL[17], B1DATA[8], B1_WDATA_CMPL[16:9], B1DATA[7:0]}; | 
|  | assign PORT_B1_WDATA = {D1_WDATA_CMPL[17], D1DATA[8], D1_WDATA_CMPL[16:9], D1DATA[7:0]}; | 
|  | assign PORT_A2_WDATA = {F1_WDATA_CMPL[17], F1DATA[8], F1_WDATA_CMPL[16:9], F1DATA[7:0]}; | 
|  | assign PORT_B2_WDATA = {H1_WDATA_CMPL[17], H1DATA[8], H1_WDATA_CMPL[16:9], H1DATA[7:0]}; | 
|  | end | 
|  | default: begin | 
|  | assign A1DATA = PORT_A1_RDATA[CFG_DBITS-1:0]; | 
|  | assign C1DATA = PORT_B1_RDATA[CFG_DBITS-1:0]; | 
|  | assign E1DATA = PORT_A2_RDATA[CFG_DBITS-1:0]; | 
|  | assign G1DATA = PORT_B2_RDATA[CFG_DBITS-1:0]; | 
|  | assign PORT_A1_WDATA = {B1_WDATA_CMPL, B1DATA}; | 
|  | assign PORT_B1_WDATA = {D1_WDATA_CMPL, D1DATA}; | 
|  | assign PORT_A2_WDATA = {F1_WDATA_CMPL, F1DATA}; | 
|  | assign PORT_B2_WDATA = {H1_WDATA_CMPL, H1DATA}; | 
|  |  | 
|  | end | 
|  | endcase | 
|  |  | 
|  | wire PORT_A1_CLK = CLK1; | 
|  | wire PORT_A2_CLK = CLK3; | 
|  | wire PORT_B1_CLK = CLK2; | 
|  | wire PORT_B2_CLK = CLK4; | 
|  |  | 
|  | wire PORT_A1_REN = A1EN; | 
|  | wire PORT_A1_WEN = B1EN[0]; | 
|  | wire [CFG_ENABLE_B-1:0] PORT_A1_BE = {B1EN[1],B1EN[0]}; | 
|  |  | 
|  | wire PORT_A2_REN = E1EN; | 
|  | wire PORT_A2_WEN = F1EN[0]; | 
|  | wire [CFG_ENABLE_F-1:0] PORT_A2_BE = {F1EN[1],F1EN[0]}; | 
|  |  | 
|  | wire PORT_B1_REN = C1EN; | 
|  | wire PORT_B1_WEN = D1EN[0]; | 
|  | wire [CFG_ENABLE_D-1:0] PORT_B1_BE = {D1EN[1],D1EN[0]}; | 
|  |  | 
|  | wire PORT_B2_REN = G1EN; | 
|  | wire PORT_B2_WEN = H1EN[0]; | 
|  | wire [CFG_ENABLE_H-1:0] PORT_B2_BE = {H1EN[1],H1EN[0]}; | 
|  |  | 
|  | case (CFG_DBITS) | 
|  | 1: begin | 
|  | assign PORT_A1_ADDR = A1EN ? A1ADDR_TOTAL : (B1EN ? B1ADDR_TOTAL : 14'd0); | 
|  | assign PORT_B1_ADDR = C1EN ? C1ADDR_TOTAL : (D1EN ? D1ADDR_TOTAL : 14'd0); | 
|  | assign PORT_A2_ADDR = E1EN ? E1ADDR_TOTAL : (F1EN ? F1ADDR_TOTAL : 14'd0); | 
|  | assign PORT_B2_ADDR = G1EN ? G1ADDR_TOTAL : (H1EN ? H1ADDR_TOTAL : 14'd0); | 
|  | defparam _TECHMAP_REPLACE_.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = CFG_DBITS *) | 
|  | (* wr_data_width = CFG_DBITS *) | 
|  | TDP36K  _TECHMAP_REPLACE_ ( | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(PORT_A1_RDATA), | 
|  | .ADDR_A1_i(PORT_A1_ADDR), | 
|  | .CLK_A1_i(PORT_A1_CLK), | 
|  | .REN_A1_i(PORT_A1_REN), | 
|  | .WEN_A1_i(PORT_A1_WEN), | 
|  | .BE_A1_i(PORT_A1_BE), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(PORT_A2_RDATA), | 
|  | .ADDR_A2_i(PORT_A2_ADDR), | 
|  | .CLK_A2_i(PORT_A2_CLK), | 
|  | .REN_A2_i(PORT_A2_REN), | 
|  | .WEN_A2_i(PORT_A2_WEN), | 
|  | .BE_A2_i(PORT_A2_BE), | 
|  |  | 
|  | .WDATA_B1_i(PORT_B1_WDATA), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(PORT_B1_ADDR), | 
|  | .CLK_B1_i(PORT_B1_CLK), | 
|  | .REN_B1_i(PORT_B1_REN), | 
|  | .WEN_B1_i(PORT_B1_WEN), | 
|  | .BE_B1_i(PORT_B1_BE), | 
|  |  | 
|  | .WDATA_B2_i(PORT_B2_WDATA), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(PORT_B2_ADDR), | 
|  | .CLK_B2_i(PORT_B2_CLK), | 
|  | .REN_B2_i(PORT_B2_REN), | 
|  | .WEN_B2_i(PORT_B2_WEN), | 
|  | .BE_B2_i(PORT_B2_BE), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  |  | 
|  | 2: begin | 
|  | assign PORT_A1_ADDR = A1EN ? (A1ADDR_TOTAL << 1) : (B1EN ? (B1ADDR_TOTAL << 1) : 14'd0); | 
|  | assign PORT_B1_ADDR = C1EN ? (C1ADDR_TOTAL << 1) : (D1EN ? (D1ADDR_TOTAL << 1) : 14'd0); | 
|  | assign PORT_A2_ADDR = E1EN ? (E1ADDR_TOTAL << 1) : (F1EN ? (F1ADDR_TOTAL << 1) : 14'd0); | 
|  | assign PORT_B2_ADDR = G1EN ? (G1ADDR_TOTAL << 1) : (H1EN ? (H1ADDR_TOTAL << 1) : 14'd0); | 
|  | defparam _TECHMAP_REPLACE_.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0 | 
|  | }; | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = CFG_DBITS *) | 
|  | (* wr_data_width = CFG_DBITS *) | 
|  | TDP36K  _TECHMAP_REPLACE_ ( | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(PORT_A1_RDATA), | 
|  | .ADDR_A1_i(PORT_A1_ADDR), | 
|  | .CLK_A1_i(PORT_A1_CLK), | 
|  | .REN_A1_i(PORT_A1_REN), | 
|  | .WEN_A1_i(PORT_A1_WEN), | 
|  | .BE_A1_i(PORT_A1_BE), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(PORT_A2_RDATA), | 
|  | .ADDR_A2_i(PORT_A2_ADDR), | 
|  | .CLK_A2_i(PORT_A2_CLK), | 
|  | .REN_A2_i(PORT_A2_REN), | 
|  | .WEN_A2_i(PORT_A2_WEN), | 
|  | .BE_A2_i(PORT_A2_BE), | 
|  |  | 
|  | .WDATA_B1_i(PORT_B1_WDATA), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(PORT_B1_ADDR), | 
|  | .CLK_B1_i(PORT_B1_CLK), | 
|  | .REN_B1_i(PORT_B1_REN), | 
|  | .WEN_B1_i(PORT_B1_WEN), | 
|  | .BE_B1_i(PORT_B1_BE), | 
|  |  | 
|  | .WDATA_B2_i(PORT_B2_WDATA), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(PORT_B2_ADDR), | 
|  | .CLK_B2_i(PORT_B2_CLK), | 
|  | .REN_B2_i(PORT_B2_REN), | 
|  | .WEN_B2_i(PORT_B2_WEN), | 
|  | .BE_B2_i(PORT_B2_BE), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  |  | 
|  | 4: begin | 
|  | assign PORT_A1_ADDR = A1EN ? (A1ADDR_TOTAL << 2) : (B1EN ? (B1ADDR_TOTAL << 2) : 14'd0); | 
|  | assign PORT_B1_ADDR = C1EN ? (C1ADDR_TOTAL << 2) : (D1EN ? (D1ADDR_TOTAL << 2) : 14'd0); | 
|  | assign PORT_A2_ADDR = E1EN ? (E1ADDR_TOTAL << 2) : (F1EN ? (F1ADDR_TOTAL << 2) : 14'd0); | 
|  | assign PORT_B2_ADDR = G1EN ? (G1ADDR_TOTAL << 2) : (H1EN ? (H1ADDR_TOTAL << 2) : 14'd0); | 
|  | defparam _TECHMAP_REPLACE_.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0 | 
|  | }; | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = CFG_DBITS *) | 
|  | (* wr_data_width = CFG_DBITS *) | 
|  | TDP36K  _TECHMAP_REPLACE_ ( | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(PORT_A1_RDATA), | 
|  | .ADDR_A1_i(PORT_A1_ADDR), | 
|  | .CLK_A1_i(PORT_A1_CLK), | 
|  | .REN_A1_i(PORT_A1_REN), | 
|  | .WEN_A1_i(PORT_A1_WEN), | 
|  | .BE_A1_i(PORT_A1_BE), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(PORT_A2_RDATA), | 
|  | .ADDR_A2_i(PORT_A2_ADDR), | 
|  | .CLK_A2_i(PORT_A2_CLK), | 
|  | .REN_A2_i(PORT_A2_REN), | 
|  | .WEN_A2_i(PORT_A2_WEN), | 
|  | .BE_A2_i(PORT_A2_BE), | 
|  |  | 
|  | .WDATA_B1_i(PORT_B1_WDATA), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(PORT_B1_ADDR), | 
|  | .CLK_B1_i(PORT_B1_CLK), | 
|  | .REN_B1_i(PORT_B1_REN), | 
|  | .WEN_B1_i(PORT_B1_WEN), | 
|  | .BE_B1_i(PORT_B1_BE), | 
|  |  | 
|  | .WDATA_B2_i(PORT_B2_WDATA), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(PORT_B2_ADDR), | 
|  | .CLK_B2_i(PORT_B2_CLK), | 
|  | .REN_B2_i(PORT_B2_REN), | 
|  | .WEN_B2_i(PORT_B2_WEN), | 
|  | .BE_B2_i(PORT_B2_BE), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  |  | 
|  | 8, 9: begin | 
|  | assign PORT_A1_ADDR = A1EN ? (A1ADDR_TOTAL << 3) : (B1EN ? (B1ADDR_TOTAL << 3) : 14'd0); | 
|  | assign PORT_B1_ADDR = C1EN ? (C1ADDR_TOTAL << 3) : (D1EN ? (D1ADDR_TOTAL << 3) : 14'd0); | 
|  | assign PORT_A2_ADDR = E1EN ? (E1ADDR_TOTAL << 3) : (F1EN ? (F1ADDR_TOTAL << 3) : 14'd0); | 
|  | assign PORT_B2_ADDR = G1EN ? (G1ADDR_TOTAL << 3) : (H1EN ? (H1ADDR_TOTAL << 3) : 14'd0); | 
|  | defparam _TECHMAP_REPLACE_.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0 | 
|  | }; | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = CFG_DBITS *) | 
|  | (* wr_data_width = CFG_DBITS *) | 
|  | TDP36K  _TECHMAP_REPLACE_ ( | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(PORT_A1_RDATA), | 
|  | .ADDR_A1_i(PORT_A1_ADDR), | 
|  | .CLK_A1_i(PORT_A1_CLK), | 
|  | .REN_A1_i(PORT_A1_REN), | 
|  | .WEN_A1_i(PORT_A1_WEN), | 
|  | .BE_A1_i(PORT_A1_BE), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(PORT_A2_RDATA), | 
|  | .ADDR_A2_i(PORT_A2_ADDR), | 
|  | .CLK_A2_i(PORT_A2_CLK), | 
|  | .REN_A2_i(PORT_A2_REN), | 
|  | .WEN_A2_i(PORT_A2_WEN), | 
|  | .BE_A2_i(PORT_A2_BE), | 
|  |  | 
|  | .WDATA_B1_i(PORT_B1_WDATA), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(PORT_B1_ADDR), | 
|  | .CLK_B1_i(PORT_B1_CLK), | 
|  | .REN_B1_i(PORT_B1_REN), | 
|  | .WEN_B1_i(PORT_B1_WEN), | 
|  | .BE_B1_i(PORT_B1_BE), | 
|  |  | 
|  | .WDATA_B2_i(PORT_B2_WDATA), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(PORT_B2_ADDR), | 
|  | .CLK_B2_i(PORT_B2_CLK), | 
|  | .REN_B2_i(PORT_B2_REN), | 
|  | .WEN_B2_i(PORT_B2_WEN), | 
|  | .BE_B2_i(PORT_B2_BE), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  |  | 
|  | 16, 18: begin | 
|  | assign PORT_A1_ADDR = A1EN ? (A1ADDR_TOTAL << 4) : (B1EN ? (B1ADDR_TOTAL << 4) : 14'd0); | 
|  | assign PORT_B1_ADDR = C1EN ? (C1ADDR_TOTAL << 4) : (D1EN ? (D1ADDR_TOTAL << 4) : 14'd0); | 
|  | assign PORT_A2_ADDR = E1EN ? (E1ADDR_TOTAL << 4) : (F1EN ? (F1ADDR_TOTAL << 4) : 14'd0); | 
|  | assign PORT_B2_ADDR = G1EN ? (G1ADDR_TOTAL << 4) : (H1EN ? (H1ADDR_TOTAL << 4) : 14'd0); | 
|  | defparam _TECHMAP_REPLACE_.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0 | 
|  | }; | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = CFG_DBITS *) | 
|  | (* wr_data_width = CFG_DBITS *) | 
|  | TDP36K  _TECHMAP_REPLACE_ ( | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(PORT_A1_RDATA), | 
|  | .ADDR_A1_i(PORT_A1_ADDR), | 
|  | .CLK_A1_i(PORT_A1_CLK), | 
|  | .REN_A1_i(PORT_A1_REN), | 
|  | .WEN_A1_i(PORT_A1_WEN), | 
|  | .BE_A1_i(PORT_A1_BE), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(PORT_A2_RDATA), | 
|  | .ADDR_A2_i(PORT_A2_ADDR), | 
|  | .CLK_A2_i(PORT_A2_CLK), | 
|  | .REN_A2_i(PORT_A2_REN), | 
|  | .WEN_A2_i(PORT_A2_WEN), | 
|  | .BE_A2_i(PORT_A2_BE), | 
|  |  | 
|  | .WDATA_B1_i(PORT_B1_WDATA), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(PORT_B1_ADDR), | 
|  | .CLK_B1_i(PORT_B1_CLK), | 
|  | .REN_B1_i(PORT_B1_REN), | 
|  | .WEN_B1_i(PORT_B1_WEN), | 
|  | .BE_B1_i(PORT_B1_BE), | 
|  |  | 
|  | .WDATA_B2_i(PORT_B2_WDATA), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(PORT_B2_ADDR), | 
|  | .CLK_B2_i(PORT_B2_CLK), | 
|  | .REN_B2_i(PORT_B2_REN), | 
|  | .WEN_B2_i(PORT_B2_WEN), | 
|  | .BE_B2_i(PORT_B2_BE), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  |  | 
|  | default: begin | 
|  | assign PORT_A1_ADDR = A1EN ? A1ADDR_TOTAL : (B1EN ? B1ADDR_TOTAL : 14'd0); | 
|  | assign PORT_B1_ADDR = C1EN ? C1ADDR_TOTAL : (D1EN ? D1ADDR_TOTAL : 14'd0); | 
|  | assign PORT_A2_ADDR = E1EN ? E1ADDR_TOTAL : (F1EN ? F1ADDR_TOTAL : 14'd0); | 
|  | assign PORT_B2_ADDR = G1EN ? G1ADDR_TOTAL : (H1EN ? H1ADDR_TOTAL : 14'd0); | 
|  | defparam _TECHMAP_REPLACE_.MODE_BITS = { 1'b1, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0 | 
|  | }; | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = CFG_DBITS *) | 
|  | (* wr_data_width = CFG_DBITS *) | 
|  | TDP36K  _TECHMAP_REPLACE_ ( | 
|  | .WDATA_A1_i(PORT_A1_WDATA), | 
|  | .RDATA_A1_o(PORT_A1_RDATA), | 
|  | .ADDR_A1_i(PORT_A1_ADDR), | 
|  | .CLK_A1_i(PORT_A1_CLK), | 
|  | .REN_A1_i(PORT_A1_REN), | 
|  | .WEN_A1_i(PORT_A1_WEN), | 
|  | .BE_A1_i(PORT_A1_BE), | 
|  |  | 
|  | .WDATA_A2_i(PORT_A2_WDATA), | 
|  | .RDATA_A2_o(PORT_A2_RDATA), | 
|  | .ADDR_A2_i(PORT_A2_ADDR), | 
|  | .CLK_A2_i(PORT_A2_CLK), | 
|  | .REN_A2_i(PORT_A2_REN), | 
|  | .WEN_A2_i(PORT_A2_WEN), | 
|  | .BE_A2_i(PORT_A2_BE), | 
|  |  | 
|  | .WDATA_B1_i(PORT_B1_WDATA), | 
|  | .RDATA_B1_o(PORT_B1_RDATA), | 
|  | .ADDR_B1_i(PORT_B1_ADDR), | 
|  | .CLK_B1_i(PORT_B1_CLK), | 
|  | .REN_B1_i(PORT_B1_REN), | 
|  | .WEN_B1_i(PORT_B1_WEN), | 
|  | .BE_B1_i(PORT_B1_BE), | 
|  |  | 
|  | .WDATA_B2_i(PORT_B2_WDATA), | 
|  | .RDATA_B2_o(PORT_B2_RDATA), | 
|  | .ADDR_B2_i(PORT_B2_ADDR), | 
|  | .CLK_B2_i(PORT_B2_CLK), | 
|  | .REN_B2_i(PORT_B2_REN), | 
|  | .WEN_B2_i(PORT_B2_WEN), | 
|  | .BE_B2_i(PORT_B2_BE), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module DPRAM_18K_BLK ( | 
|  | CLK1_i, | 
|  | WEN1_i, | 
|  | REN1_i, | 
|  | WR1_ADDR_i, | 
|  | RD1_ADDR_i, | 
|  | WDATA1_i, | 
|  | RDATA1_o, | 
|  |  | 
|  | CLK2_i, | 
|  | WEN2_i, | 
|  | REN2_i, | 
|  | WR2_ADDR_i, | 
|  | RD2_ADDR_i, | 
|  | WDATA2_i, | 
|  | RDATA2_o | 
|  | ); | 
|  |  | 
|  | parameter ADDR_WIDTH = 10; | 
|  | parameter DATA_WIDTH = 18; | 
|  | parameter BE1_WIDTH = 2; | 
|  | parameter BE2_WIDTH = 2; | 
|  |  | 
|  | input wire CLK1_i; | 
|  | input wire WEN1_i; | 
|  | input wire REN1_i; | 
|  | input wire [ADDR_WIDTH-1 :0] WR1_ADDR_i; | 
|  | input wire [ADDR_WIDTH-1 :0] RD1_ADDR_i; | 
|  | input wire [DATA_WIDTH-1 :0] WDATA1_i; | 
|  | output wire [DATA_WIDTH-1 :0] RDATA1_o; | 
|  |  | 
|  | input wire CLK2_i; | 
|  | input wire WEN2_i; | 
|  | input wire REN2_i; | 
|  | input wire [ADDR_WIDTH-1 :0] WR2_ADDR_i; | 
|  | input wire [ADDR_WIDTH-1 :0] RD2_ADDR_i; | 
|  | input wire [DATA_WIDTH-1 :0] WDATA2_i; | 
|  | output wire [DATA_WIDTH-1 :0] RDATA2_o; | 
|  |  | 
|  | (* is_inferred = 1 *) | 
|  | BRAM2x18_DP #( | 
|  | .CFG_ABITS(ADDR_WIDTH), | 
|  | .CFG_DBITS(DATA_WIDTH), | 
|  | .CFG_ENABLE_B(BE1_WIDTH), | 
|  | .CFG_ENABLE_D(BE2_WIDTH) | 
|  | ) bram2x18_inst ( | 
|  | .A1ADDR(RD1_ADDR_i), | 
|  | .A1DATA(RDATA1_o), | 
|  | .A1EN(REN1_i), | 
|  | .B1ADDR(WR1_ADDR_i), | 
|  | .B1DATA(WDATA1_i), | 
|  | .B1EN({WEN1_i,WEN1_i}), | 
|  | .CLK1(CLK1_i), | 
|  |  | 
|  | .C1ADDR(RD2_ADDR_i), | 
|  | .C1DATA(RDATA2_o), | 
|  | .C1EN(REN2_i), | 
|  | .D1ADDR(WR2_ADDR_i), | 
|  | .D1DATA(WDATA2_i), | 
|  | .D1EN({WEN2_i,WEN2_i}), | 
|  | .CLK2(CLK2_i), | 
|  |  | 
|  | .E1ADDR(), | 
|  | .E1DATA(), | 
|  | .E1EN(), | 
|  | .F1ADDR(), | 
|  | .F1DATA(), | 
|  | .F1EN(), | 
|  | .CLK3(), | 
|  |  | 
|  | .G1ADDR(), | 
|  | .G1DATA(), | 
|  | .G1EN(), | 
|  | .H1ADDR(), | 
|  | .H1DATA(), | 
|  | .H1EN(), | 
|  | .CLK4() | 
|  | ); | 
|  | endmodule | 
|  |  | 
|  | module DPRAM_36K_BLK ( | 
|  | CLK1_i, | 
|  | WEN1_i, | 
|  | WR1_BE_i, | 
|  | REN1_i, | 
|  | WR1_ADDR_i, | 
|  | RD1_ADDR_i, | 
|  | WDATA1_i, | 
|  | RDATA1_o, | 
|  |  | 
|  | CLK2_i, | 
|  | WEN2_i, | 
|  | WR2_BE_i, | 
|  | REN2_i, | 
|  | WR2_ADDR_i, | 
|  | RD2_ADDR_i, | 
|  | WDATA2_i, | 
|  | RDATA2_o | 
|  | ); | 
|  |  | 
|  | parameter ADDR_WIDTH = 10; | 
|  | parameter DATA_WIDTH = 36; | 
|  | parameter BE1_WIDTH = 4; | 
|  | parameter BE2_WIDTH = 4; | 
|  |  | 
|  | localparam MODE_36 = 3'b011; // 36- or 32-bit | 
|  | localparam MODE_18 = 3'b010; // 18- or 16-bit | 
|  | localparam MODE_9 = 3'b001; // 9- or 8-bit | 
|  | localparam MODE_4 = 3'b100; // 4-bit | 
|  | localparam MODE_2 = 3'b110; // 2-bit | 
|  | localparam MODE_1 = 3'b101; // 1-bit | 
|  |  | 
|  | input wire CLK1_i; | 
|  | input wire WEN1_i; | 
|  | input wire [BE1_WIDTH-1 :0] WR1_BE_i; | 
|  | input wire REN1_i; | 
|  | input wire [ADDR_WIDTH-1 :0] WR1_ADDR_i; | 
|  | input wire [ADDR_WIDTH-1 :0] RD1_ADDR_i; | 
|  | input wire [DATA_WIDTH-1 :0] WDATA1_i; | 
|  | output wire [DATA_WIDTH-1 :0] RDATA1_o; | 
|  |  | 
|  | input wire CLK2_i; | 
|  | input wire WEN2_i; | 
|  | input wire [BE2_WIDTH-1 :0] WR2_BE_i; | 
|  | input wire REN2_i; | 
|  | input wire [ADDR_WIDTH-1 :0] WR2_ADDR_i; | 
|  | input wire [ADDR_WIDTH-1 :0] RD2_ADDR_i; | 
|  | input wire [DATA_WIDTH-1 :0] WDATA2_i; | 
|  | output wire [DATA_WIDTH-1 :0] RDATA2_o; | 
|  |  | 
|  | wire FLUSH1; | 
|  | wire FLUSH2; | 
|  |  | 
|  | wire [14:0] A1ADDR_TOTAL; | 
|  | wire [14:0] B1ADDR_TOTAL; | 
|  | wire [14:0] C1ADDR_TOTAL; | 
|  | wire [14:0] D1ADDR_TOTAL; | 
|  |  | 
|  | generate | 
|  | if (ADDR_WIDTH == 15) begin | 
|  | assign A1ADDR_TOTAL = RD1_ADDR_i; | 
|  | assign B1ADDR_TOTAL = WR1_ADDR_i; | 
|  | assign C1ADDR_TOTAL = RD2_ADDR_i; | 
|  | assign D1ADDR_TOTAL = WR2_ADDR_i; | 
|  | end else begin | 
|  | assign A1ADDR_TOTAL[14:ADDR_WIDTH] = 0; | 
|  | assign A1ADDR_TOTAL[ADDR_WIDTH-1:0] = RD1_ADDR_i; | 
|  | assign B1ADDR_TOTAL[14:ADDR_WIDTH] = 0; | 
|  | assign B1ADDR_TOTAL[ADDR_WIDTH-1:0] = WR1_ADDR_i; | 
|  | assign C1ADDR_TOTAL[14:ADDR_WIDTH] = 0; | 
|  | assign C1ADDR_TOTAL[ADDR_WIDTH-1:0] = RD2_ADDR_i; | 
|  | assign D1ADDR_TOTAL[14:ADDR_WIDTH] = 0; | 
|  | assign D1ADDR_TOTAL[ADDR_WIDTH-1:0] = WR2_ADDR_i; | 
|  | end | 
|  | endgenerate | 
|  |  | 
|  | wire [35:DATA_WIDTH] A1DATA_CMPL; | 
|  | wire [35:DATA_WIDTH] B1DATA_CMPL; | 
|  | wire [35:DATA_WIDTH] C1DATA_CMPL; | 
|  | wire [35:DATA_WIDTH] D1DATA_CMPL; | 
|  |  | 
|  | wire [35:0] A1DATA_TOTAL; | 
|  | wire [35:0] B1DATA_TOTAL; | 
|  | wire [35:0] C1DATA_TOTAL; | 
|  | wire [35:0] D1DATA_TOTAL; | 
|  |  | 
|  | wire [14:0] PORT_A_ADDR; | 
|  | wire [14:0] PORT_B_ADDR; | 
|  |  | 
|  | wire [3:0] WR1_BE; | 
|  | wire [3:0] WR2_BE; | 
|  |  | 
|  | generate | 
|  | if (BE1_WIDTH == 4) begin | 
|  | assign WR1_BE = WR1_BE_i; | 
|  | end else begin | 
|  | assign WR1_BE[3:BE1_WIDTH] = 0; | 
|  | assign WR1_BE[BE1_WIDTH-1:0] = WR1_BE_i[BE1_WIDTH-1:0]; | 
|  | end | 
|  | endgenerate | 
|  |  | 
|  | generate | 
|  | if (BE2_WIDTH == 4) begin | 
|  | assign WR2_BE = WR2_BE_i; | 
|  | end else begin | 
|  | assign WR2_BE[3:BE2_WIDTH] = 0; | 
|  | assign WR2_BE[BE2_WIDTH-1:0] = WR2_BE_i[BE2_WIDTH-1:0]; | 
|  | end | 
|  | endgenerate | 
|  |  | 
|  | // Assign read/write data - handle special case for 9bit mode | 
|  | // parity bit for 9bit mode is placed in R/W port on bit #16 | 
|  | case (DATA_WIDTH) | 
|  | 9: begin | 
|  | assign RDATA1_o = {A1DATA_TOTAL[16], A1DATA_TOTAL[7:0]}; | 
|  | assign RDATA2_o = {C1DATA_TOTAL[16], C1DATA_TOTAL[7:0]}; | 
|  | assign B1DATA_TOTAL = {B1DATA_CMPL[35:17], WDATA1_i[8], B1DATA_CMPL[16:9], WDATA1_i[7:0]}; | 
|  | assign D1DATA_TOTAL = {D1DATA_CMPL[35:17], WDATA2_i[8], D1DATA_CMPL[16:9], WDATA2_i[7:0]}; | 
|  | end | 
|  | default: begin | 
|  | assign RDATA1_o = A1DATA_TOTAL[DATA_WIDTH-1:0]; | 
|  | assign RDATA2_o = C1DATA_TOTAL[DATA_WIDTH-1:0]; | 
|  | assign B1DATA_TOTAL = {B1DATA_CMPL, WDATA1_i}; | 
|  | assign D1DATA_TOTAL = {D1DATA_CMPL, WDATA2_i}; | 
|  | end | 
|  | endcase | 
|  |  | 
|  | assign FLUSH1 = 1'b0; | 
|  | assign FLUSH2 = 1'b0; | 
|  |  | 
|  | case (DATA_WIDTH) | 
|  | 1: begin | 
|  | assign PORT_A_ADDR = REN1_i ? A1ADDR_TOTAL : (WEN1_i ? B1ADDR_TOTAL : 15'd0); | 
|  | assign PORT_B_ADDR = REN2_i ? C1ADDR_TOTAL : (WEN2_i ? D1ADDR_TOTAL : 15'd0); | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = DATA_WIDTH *) | 
|  | (* wr_data_width = DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(B1DATA_TOTAL[17:0]), | 
|  | .WDATA_A2_i(B1DATA_TOTAL[35:18]), | 
|  | .RDATA_A1_o(A1DATA_TOTAL[17:0]), | 
|  | .RDATA_A2_o(A1DATA_TOTAL[35:18]), | 
|  | .ADDR_A1_i(PORT_A_ADDR), | 
|  | .ADDR_A2_i(PORT_A_ADDR), | 
|  | .CLK_A1_i(CLK1_i), | 
|  | .CLK_A2_i(CLK1_i), | 
|  | .REN_A1_i(REN1_i), | 
|  | .REN_A2_i(REN1_i), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .WEN_A2_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  | .BE_A2_i(WR1_BE[3:0]), | 
|  |  | 
|  | .WDATA_B1_i(D1DATA_TOTAL[17:0]), | 
|  | .WDATA_B2_i(D1DATA_TOTAL[35:18]), | 
|  | .RDATA_B1_o(C1DATA_TOTAL[17:0]), | 
|  | .RDATA_B2_o(C1DATA_TOTAL[35:18]), | 
|  | .ADDR_B1_i(PORT_B_ADDR), | 
|  | .ADDR_B2_i(PORT_B_ADDR), | 
|  | .CLK_B1_i(CLK2_i), | 
|  | .CLK_B2_i(CLK2_i), | 
|  | .REN_B1_i(REN2_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B1_i(WEN2_i), | 
|  | .WEN_B2_i(WEN2_i), | 
|  | .BE_B1_i(WR2_BE[1:0]), | 
|  | .BE_B2_i(WR2_BE[3:0]), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  |  | 
|  | 2: begin | 
|  | assign PORT_A_ADDR = REN1_i ? (A1ADDR_TOTAL << 1) : (WEN1_i ? (B1ADDR_TOTAL << 1) : 15'd0); | 
|  | assign PORT_B_ADDR = REN2_i ? (C1ADDR_TOTAL << 1) : (WEN2_i ? (D1ADDR_TOTAL << 1) : 15'd0); | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = DATA_WIDTH *) | 
|  | (* wr_data_width = DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(B1DATA_TOTAL[17:0]), | 
|  | .WDATA_A2_i(B1DATA_TOTAL[35:18]), | 
|  | .RDATA_A1_o(A1DATA_TOTAL[17:0]), | 
|  | .RDATA_A2_o(A1DATA_TOTAL[35:18]), | 
|  | .ADDR_A1_i(PORT_A_ADDR), | 
|  | .ADDR_A2_i(PORT_A_ADDR), | 
|  | .CLK_A1_i(CLK1_i), | 
|  | .CLK_A2_i(CLK1_i), | 
|  | .REN_A1_i(REN1_i), | 
|  | .REN_A2_i(REN1_i), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .WEN_A2_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  | .BE_A2_i(WR1_BE[3:0]), | 
|  |  | 
|  | .WDATA_B1_i(D1DATA_TOTAL[17:0]), | 
|  | .WDATA_B2_i(D1DATA_TOTAL[35:18]), | 
|  | .RDATA_B1_o(C1DATA_TOTAL[17:0]), | 
|  | .RDATA_B2_o(C1DATA_TOTAL[35:18]), | 
|  | .ADDR_B1_i(PORT_B_ADDR), | 
|  | .ADDR_B2_i(PORT_B_ADDR), | 
|  | .CLK_B1_i(CLK2_i), | 
|  | .CLK_B2_i(CLK2_i), | 
|  | .REN_B1_i(REN2_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B1_i(WEN2_i), | 
|  | .WEN_B2_i(WEN2_i), | 
|  | .BE_B1_i(WR2_BE[1:0]), | 
|  | .BE_B2_i(WR2_BE[3:0]), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  |  | 
|  | 4: begin | 
|  | assign PORT_A_ADDR = REN1_i ? (A1ADDR_TOTAL << 2) : (WEN1_i ? (B1ADDR_TOTAL << 2) : 15'd0); | 
|  | assign PORT_B_ADDR = REN2_i ? (C1ADDR_TOTAL << 2) : (WEN2_i ? (D1ADDR_TOTAL << 2) : 15'd0); | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = DATA_WIDTH *) | 
|  | (* wr_data_width = DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(B1DATA_TOTAL[17:0]), | 
|  | .WDATA_A2_i(B1DATA_TOTAL[35:18]), | 
|  | .RDATA_A1_o(A1DATA_TOTAL[17:0]), | 
|  | .RDATA_A2_o(A1DATA_TOTAL[35:18]), | 
|  | .ADDR_A1_i(PORT_A_ADDR), | 
|  | .ADDR_A2_i(PORT_A_ADDR), | 
|  | .CLK_A1_i(CLK1_i), | 
|  | .CLK_A2_i(CLK1_i), | 
|  | .REN_A1_i(REN1_i), | 
|  | .REN_A2_i(REN1_i), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .WEN_A2_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  | .BE_A2_i(WR1_BE[3:0]), | 
|  |  | 
|  | .WDATA_B1_i(D1DATA_TOTAL[17:0]), | 
|  | .WDATA_B2_i(D1DATA_TOTAL[35:18]), | 
|  | .RDATA_B1_o(C1DATA_TOTAL[17:0]), | 
|  | .RDATA_B2_o(C1DATA_TOTAL[35:18]), | 
|  | .ADDR_B1_i(PORT_B_ADDR), | 
|  | .ADDR_B2_i(PORT_B_ADDR), | 
|  | .CLK_B1_i(CLK2_i), | 
|  | .CLK_B2_i(CLK2_i), | 
|  | .REN_B1_i(REN2_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B1_i(WEN2_i), | 
|  | .WEN_B2_i(WEN2_i), | 
|  | .BE_B1_i(WR2_BE[1:0]), | 
|  | .BE_B2_i(WR2_BE[3:0]), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  |  | 
|  | 8, 9: begin | 
|  | assign PORT_A_ADDR = REN1_i ? (A1ADDR_TOTAL << 3) : (WEN1_i ? (B1ADDR_TOTAL << 3) : 15'd0); | 
|  | assign PORT_B_ADDR = REN2_i ? (C1ADDR_TOTAL << 3) : (WEN2_i ? (D1ADDR_TOTAL << 3) : 15'd0); | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = DATA_WIDTH *) | 
|  | (* wr_data_width = DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(B1DATA_TOTAL[17:0]), | 
|  | .WDATA_A2_i(B1DATA_TOTAL[35:18]), | 
|  | .RDATA_A1_o(A1DATA_TOTAL[17:0]), | 
|  | .RDATA_A2_o(A1DATA_TOTAL[35:18]), | 
|  | .ADDR_A1_i(PORT_A_ADDR), | 
|  | .ADDR_A2_i(PORT_A_ADDR), | 
|  | .CLK_A1_i(CLK1_i), | 
|  | .CLK_A2_i(CLK1_i), | 
|  | .REN_A1_i(REN1_i), | 
|  | .REN_A2_i(REN1_i), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .WEN_A2_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  | .BE_A2_i(WR1_BE[3:0]), | 
|  |  | 
|  | .WDATA_B1_i(D1DATA_TOTAL[17:0]), | 
|  | .WDATA_B2_i(D1DATA_TOTAL[35:18]), | 
|  | .RDATA_B1_o(C1DATA_TOTAL[17:0]), | 
|  | .RDATA_B2_o(C1DATA_TOTAL[35:18]), | 
|  | .ADDR_B1_i(PORT_B_ADDR), | 
|  | .ADDR_B2_i(PORT_B_ADDR), | 
|  | .CLK_B1_i(CLK2_i), | 
|  | .CLK_B2_i(CLK2_i), | 
|  | .REN_B1_i(REN2_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B1_i(WEN2_i), | 
|  | .WEN_B2_i(WEN2_i), | 
|  | .BE_B1_i(WR2_BE[1:0]), | 
|  | .BE_B2_i(WR2_BE[3:0]), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  |  | 
|  | 16, 18: begin | 
|  | assign PORT_A_ADDR = REN1_i ? (A1ADDR_TOTAL << 4) : (WEN1_i ? (B1ADDR_TOTAL << 4) : 15'd0); | 
|  | assign PORT_B_ADDR = REN2_i ? (C1ADDR_TOTAL << 4) : (WEN2_i ? (D1ADDR_TOTAL << 4) : 15'd0); | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = DATA_WIDTH *) | 
|  | (* wr_data_width = DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(B1DATA_TOTAL[17:0]), | 
|  | .WDATA_A2_i(B1DATA_TOTAL[35:18]), | 
|  | .RDATA_A1_o(A1DATA_TOTAL[17:0]), | 
|  | .RDATA_A2_o(A1DATA_TOTAL[35:18]), | 
|  | .ADDR_A1_i(PORT_A_ADDR), | 
|  | .ADDR_A2_i(PORT_A_ADDR), | 
|  | .CLK_A1_i(CLK1_i), | 
|  | .CLK_A2_i(CLK1_i), | 
|  | .REN_A1_i(REN1_i), | 
|  | .REN_A2_i(REN1_i), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .WEN_A2_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  | .BE_A2_i(WR1_BE[3:0]), | 
|  |  | 
|  | .WDATA_B1_i(D1DATA_TOTAL[17:0]), | 
|  | .WDATA_B2_i(D1DATA_TOTAL[35:18]), | 
|  | .RDATA_B1_o(C1DATA_TOTAL[17:0]), | 
|  | .RDATA_B2_o(C1DATA_TOTAL[35:18]), | 
|  | .ADDR_B1_i(PORT_B_ADDR), | 
|  | .ADDR_B2_i(PORT_B_ADDR), | 
|  | .CLK_B1_i(CLK2_i), | 
|  | .CLK_B2_i(CLK2_i), | 
|  | .REN_B1_i(REN2_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B1_i(WEN2_i), | 
|  | .WEN_B2_i(WEN2_i), | 
|  | .BE_B1_i(WR2_BE[1:0]), | 
|  | .BE_B2_i(WR2_BE[3:0]), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  |  | 
|  | 32, 36: begin | 
|  | assign PORT_A_ADDR = REN1_i ? (A1ADDR_TOTAL << 5) : (WEN1_i ? (B1ADDR_TOTAL << 5) : 15'd0); | 
|  | assign PORT_B_ADDR = REN2_i ? (C1ADDR_TOTAL << 5) : (WEN2_i ? (D1ADDR_TOTAL << 5) : 15'd0); | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = DATA_WIDTH *) | 
|  | (* wr_data_width = DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(B1DATA_TOTAL[17:0]), | 
|  | .WDATA_A2_i(B1DATA_TOTAL[35:18]), | 
|  | .RDATA_A1_o(A1DATA_TOTAL[17:0]), | 
|  | .RDATA_A2_o(A1DATA_TOTAL[35:18]), | 
|  | .ADDR_A1_i(PORT_A_ADDR), | 
|  | .ADDR_A2_i(PORT_A_ADDR), | 
|  | .CLK_A1_i(CLK1_i), | 
|  | .CLK_A2_i(CLK1_i), | 
|  | .REN_A1_i(REN1_i), | 
|  | .REN_A2_i(REN1_i), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .WEN_A2_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  | .BE_A2_i(WR1_BE[3:0]), | 
|  |  | 
|  | .WDATA_B1_i(D1DATA_TOTAL[17:0]), | 
|  | .WDATA_B2_i(D1DATA_TOTAL[35:18]), | 
|  | .RDATA_B1_o(C1DATA_TOTAL[17:0]), | 
|  | .RDATA_B2_o(C1DATA_TOTAL[35:18]), | 
|  | .ADDR_B1_i(PORT_B_ADDR), | 
|  | .ADDR_B2_i(PORT_B_ADDR), | 
|  | .CLK_B1_i(CLK2_i), | 
|  | .CLK_B2_i(CLK2_i), | 
|  | .REN_B1_i(REN2_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B1_i(WEN2_i), | 
|  | .WEN_B2_i(WEN2_i), | 
|  | .BE_B1_i(WR2_BE[1:0]), | 
|  | .BE_B2_i(WR2_BE[3:0]), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | assign PORT_A_ADDR = REN1_i ? (A1ADDR_TOTAL << 5) : (WEN1_i ? (B1ADDR_TOTAL << 5) : 15'd0); | 
|  | assign PORT_B_ADDR = REN2_i ? (C1ADDR_TOTAL << 5) : (WEN2_i ? (D1ADDR_TOTAL << 5) : 15'd0); | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0, | 
|  | 12'd10, 12'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0 | 
|  | }; | 
|  | (* is_inferred = 1 *) | 
|  | (* rd_data_width = DATA_WIDTH *) | 
|  | (* wr_data_width = DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(B1DATA_TOTAL[17:0]), | 
|  | .WDATA_A2_i(B1DATA_TOTAL[35:18]), | 
|  | .RDATA_A1_o(A1DATA_TOTAL[17:0]), | 
|  | .RDATA_A2_o(A1DATA_TOTAL[35:18]), | 
|  | .ADDR_A1_i(PORT_A_ADDR), | 
|  | .ADDR_A2_i(PORT_A_ADDR), | 
|  | .CLK_A1_i(CLK1_i), | 
|  | .CLK_A2_i(CLK1_i), | 
|  | .REN_A1_i(REN1_i), | 
|  | .REN_A2_i(REN1_i), | 
|  | .WEN_A1_i(WEN1_i), | 
|  | .WEN_A2_i(WEN1_i), | 
|  | .BE_A1_i(WR1_BE[1:0]), | 
|  | .BE_A2_i(WR1_BE[3:0]), | 
|  |  | 
|  | .WDATA_B1_i(D1DATA_TOTAL[17:0]), | 
|  | .WDATA_B2_i(D1DATA_TOTAL[35:18]), | 
|  | .RDATA_B1_o(C1DATA_TOTAL[17:0]), | 
|  | .RDATA_B2_o(C1DATA_TOTAL[35:18]), | 
|  | .ADDR_B1_i(PORT_B_ADDR), | 
|  | .ADDR_B2_i(PORT_B_ADDR), | 
|  | .CLK_B1_i(CLK2_i), | 
|  | .CLK_B2_i(CLK2_i), | 
|  | .REN_B1_i(REN2_i), | 
|  | .REN_B2_i(REN2_i), | 
|  | .WEN_B1_i(WEN2_i), | 
|  | .WEN_B2_i(WEN2_i), | 
|  | .BE_B1_i(WR2_BE[1:0]), | 
|  | .BE_B2_i(WR2_BE[3:0]), | 
|  |  | 
|  | .FLUSH1_i(FLUSH1), | 
|  | .FLUSH2_i(FLUSH2) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | // ============================================================================ | 
|  | // TDP36K write width 1 functional modes | 
|  |  | 
|  | module TDP36K_BRAM_WR_X1_RD_X1_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire RESET_ni; | 
|  | input wire WEN_A1_i, WEN_B1_i; | 
|  | input wire REN_A1_i, REN_B1_i; | 
|  | input wire WEN_A2_i, WEN_B2_i; | 
|  | input wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X1_RD_X2_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X1_RD_X4_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X1_RD_X9_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X1_RD_X18_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X1_RD_X36_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | // ============================================================================ | 
|  | // TDP36K write width 2 functional modes | 
|  |  | 
|  | module TDP36K_BRAM_WR_X2_RD_X1_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X2_RD_X2_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X2_RD_X4_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X2_RD_X9_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X2_RD_X18_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X2_RD_X36_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | // ============================================================================ | 
|  | // TDP36K write width 4 functional modes | 
|  |  | 
|  | module TDP36K_BRAM_WR_X4_RD_X1_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X4_RD_X2_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X4_RD_X4_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X4_RD_X9_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X4_RD_X18_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X4_RD_X36_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | // ============================================================================ | 
|  | // TDP36K write width 9 functional modes | 
|  |  | 
|  | module TDP36K_BRAM_WR_X9_RD_X1_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X9_RD_X2_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X9_RD_X4_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X9_RD_X9_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X9_RD_X18_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X9_RD_X36_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | // ============================================================================ | 
|  | // TDP36K write width 18 functional modes | 
|  |  | 
|  | module TDP36K_BRAM_WR_X18_RD_X1_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X18_RD_X2_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X18_RD_X4_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X18_RD_X9_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X18_RD_X18_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X18_RD_X36_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | // ============================================================================ | 
|  | // TDP36K write width 36 functional modes | 
|  |  | 
|  | module TDP36K_BRAM_WR_X36_RD_X1_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X36_RD_X2_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X36_RD_X4_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X36_RD_X9_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X36_RD_X18_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X36_RD_X36_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | // ============================================================================ | 
|  | // TDP36K (split mode) write width 1 functional modes | 
|  |  | 
|  | module TDP36K_BRAM_WR_X1_RD_X1_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X1_RD_X2_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X1_RD_X4_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X1_RD_X9_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X1_RD_X18_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | // ============================================================================ | 
|  | // TDP36K (split mode) write width 2 functional modes | 
|  |  | 
|  | module TDP36K_BRAM_WR_X2_RD_X1_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X2_RD_X2_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X2_RD_X4_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X2_RD_X9_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X2_RD_X18_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | // ============================================================================ | 
|  | // TDP36K (split mode) write width 4 functional modes | 
|  |  | 
|  | module TDP36K_BRAM_WR_X4_RD_X1_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X4_RD_X2_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X4_RD_X4_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X4_RD_X9_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X4_RD_X18_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | // ============================================================================ | 
|  | // TDP36K (split mode) write width 9 functional modes | 
|  |  | 
|  | module TDP36K_BRAM_WR_X9_RD_X1_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X9_RD_X2_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X9_RD_X4_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X9_RD_X9_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X9_RD_X18_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | // ============================================================================ | 
|  | // TDP36K (split mode) write width 18 functional modes | 
|  |  | 
|  | module TDP36K_BRAM_WR_X18_RD_X1_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X18_RD_X2_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X18_RD_X4_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X18_RD_X9_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_BRAM_WR_X18_RD_X18_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input  wire RESET_ni; | 
|  | input  wire WEN_A1_i, WEN_B1_i; | 
|  | input  wire REN_A1_i, REN_B1_i; | 
|  | input  wire WEN_A2_i, WEN_B2_i; | 
|  | input  wire REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input  wire CLK_B2_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input  wire [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input  wire [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input  wire FLUSH1_i; | 
|  |  | 
|  | input  wire [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input  wire [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input  wire [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input  wire FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | //================================================================================= | 
|  |  | 
|  | module SFIFO_18K_BLK ( | 
|  | DIN, | 
|  | PUSH, | 
|  | POP, | 
|  | CLK, | 
|  | Async_Flush, | 
|  | Overrun_Error, | 
|  | Full_Watermark, | 
|  | Almost_Full, | 
|  | Full, | 
|  | Underrun_Error, | 
|  | Empty_Watermark, | 
|  | Almost_Empty, | 
|  | Empty, | 
|  | DOUT | 
|  | ); | 
|  |  | 
|  | parameter WR_DATA_WIDTH = 18; | 
|  | parameter RD_DATA_WIDTH = 18; | 
|  | parameter UPAE_DBITS = 11'd10; | 
|  | parameter UPAF_DBITS = 11'd10; | 
|  |  | 
|  | input wire CLK; | 
|  | input wire PUSH, POP; | 
|  | input wire [WR_DATA_WIDTH-1:0] DIN; | 
|  | input wire Async_Flush; | 
|  | output wire [RD_DATA_WIDTH-1:0] DOUT; | 
|  | output wire Almost_Full, Almost_Empty; | 
|  | output wire Full, Empty; | 
|  | output wire Full_Watermark, Empty_Watermark; | 
|  | output wire Overrun_Error, Underrun_Error; | 
|  |  | 
|  | BRAM2x18_SFIFO  #( | 
|  | .WR_DATA_WIDTH(WR_DATA_WIDTH), | 
|  | .RD_DATA_WIDTH(RD_DATA_WIDTH), | 
|  | .UPAE_DBITS1(UPAE_DBITS), | 
|  | .UPAF_DBITS1(UPAF_DBITS), | 
|  | .UPAE_DBITS2(), | 
|  | .UPAF_DBITS2() | 
|  | ) U1 | 
|  | ( | 
|  | .DIN1(DIN), | 
|  | .PUSH1(PUSH), | 
|  | .POP1(POP), | 
|  | .CLK1(CLK), | 
|  | .Async_Flush1(Async_Flush), | 
|  | .Overrun_Error1(Overrun_Error), | 
|  | .Full_Watermark1(Full_Watermark), | 
|  | .Almost_Full1(Almost_Full), | 
|  | .Full1(Full), | 
|  | .Underrun_Error1(Underrun_Error), | 
|  | .Empty_Watermark1(Empty_Watermark), | 
|  | .Almost_Empty1(Almost_Empty), | 
|  | .Empty1(Empty), | 
|  | .DOUT1(DOUT), | 
|  |  | 
|  | .DIN2(), | 
|  | .PUSH2(), | 
|  | .POP2(), | 
|  | .CLK2(), | 
|  | .Async_Flush2(), | 
|  | .Overrun_Error2(), | 
|  | .Full_Watermark2(), | 
|  | .Almost_Full2(), | 
|  | .Full2(), | 
|  | .Underrun_Error2(), | 
|  | .Empty_Watermark2(), | 
|  | .Almost_Empty2(), | 
|  | .Empty2(), | 
|  | .DOUT2() | 
|  | ); | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module AFIFO_18K_BLK ( | 
|  | DIN, | 
|  | PUSH, | 
|  | POP, | 
|  | Push_Clk, | 
|  | Pop_Clk, | 
|  | Async_Flush, | 
|  | Overrun_Error, | 
|  | Full_Watermark, | 
|  | Almost_Full, | 
|  | Full, | 
|  | Underrun_Error, | 
|  | Empty_Watermark, | 
|  | Almost_Empty, | 
|  | Empty, | 
|  | DOUT | 
|  | ); | 
|  |  | 
|  | parameter WR_DATA_WIDTH = 18; | 
|  | parameter RD_DATA_WIDTH = 18; | 
|  | parameter UPAE_DBITS = 11'd10; | 
|  | parameter UPAF_DBITS = 11'd10; | 
|  |  | 
|  | input wire Push_Clk, Pop_Clk; | 
|  | input wire PUSH, POP; | 
|  | input wire [WR_DATA_WIDTH-1:0] DIN; | 
|  | input wire Async_Flush; | 
|  | output wire [RD_DATA_WIDTH-1:0] DOUT; | 
|  | output wire Almost_Full, Almost_Empty; | 
|  | output wire Full, Empty; | 
|  | output wire Full_Watermark, Empty_Watermark; | 
|  | output wire Overrun_Error, Underrun_Error; | 
|  |  | 
|  | BRAM2x18_AFIFO  #( | 
|  | .WR_DATA_WIDTH(WR_DATA_WIDTH), | 
|  | .RD_DATA_WIDTH(RD_DATA_WIDTH), | 
|  | .UPAE_DBITS1(UPAE_DBITS), | 
|  | .UPAF_DBITS1(UPAF_DBITS), | 
|  | .UPAE_DBITS2(), | 
|  | .UPAF_DBITS2() | 
|  | ) U1 | 
|  | ( | 
|  | .DIN1(DIN), | 
|  | .PUSH1(PUSH), | 
|  | .POP1(POP), | 
|  | .Push_Clk1(Push_Clk), | 
|  | .Pop_Clk1(Pop_Clk), | 
|  | .Async_Flush1(Async_Flush), | 
|  | .Overrun_Error1(Overrun_Error), | 
|  | .Full_Watermark1(Full_Watermark), | 
|  | .Almost_Full1(Almost_Full), | 
|  | .Full1(Full), | 
|  | .Underrun_Error1(Underrun_Error), | 
|  | .Empty_Watermark1(Empty_Watermark), | 
|  | .Almost_Empty1(Almost_Empty), | 
|  | .Empty1(Empty), | 
|  | .DOUT1(DOUT), | 
|  |  | 
|  | .DIN2(), | 
|  | .PUSH2(), | 
|  | .POP2(), | 
|  | .Push_Clk2(), | 
|  | .Pop_Clk2(), | 
|  | .Async_Flush2(), | 
|  | .Overrun_Error2(), | 
|  | .Full_Watermark2(), | 
|  | .Almost_Full2(), | 
|  | .Full2(), | 
|  | .Underrun_Error2(), | 
|  | .Empty_Watermark2(), | 
|  | .Almost_Empty2(), | 
|  | .Empty2(), | 
|  | .DOUT2() | 
|  | ); | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module BRAM2x18_SFIFO ( | 
|  | DIN1, | 
|  | PUSH1, | 
|  | POP1, | 
|  | CLK1, | 
|  | Async_Flush1, | 
|  | Overrun_Error1, | 
|  | Full_Watermark1, | 
|  | Almost_Full1, | 
|  | Full1, | 
|  | Underrun_Error1, | 
|  | Empty_Watermark1, | 
|  | Almost_Empty1, | 
|  | Empty1, | 
|  | DOUT1, | 
|  |  | 
|  | DIN2, | 
|  | PUSH2, | 
|  | POP2, | 
|  | CLK2, | 
|  | Async_Flush2, | 
|  | Overrun_Error2, | 
|  | Full_Watermark2, | 
|  | Almost_Full2, | 
|  | Full2, | 
|  | Underrun_Error2, | 
|  | Empty_Watermark2, | 
|  | Almost_Empty2, | 
|  | Empty2, | 
|  | DOUT2 | 
|  | ); | 
|  |  | 
|  | parameter WR_DATA_WIDTH = 18; | 
|  | parameter RD_DATA_WIDTH = 18; | 
|  |  | 
|  |  | 
|  | parameter UPAE_DBITS1 = 11'd10; | 
|  | parameter UPAF_DBITS1 = 11'd10; | 
|  |  | 
|  | parameter UPAE_DBITS2 = 11'd10; | 
|  | parameter UPAF_DBITS2 = 11'd10; | 
|  |  | 
|  | localparam MODE_36 = 3'b011; // 36- or 32-bit | 
|  | localparam MODE_18 = 3'b010; // 18- or 16-bit | 
|  | localparam MODE_9 = 3'b001; // 9- or 8-bit | 
|  | localparam MODE_4 = 3'b100; // 4-bit | 
|  | localparam MODE_2 = 3'b110; // 2-bit | 
|  | localparam MODE_1 = 3'b101; // 1-bit | 
|  |  | 
|  | input wire CLK1; | 
|  | input wire PUSH1, POP1; | 
|  | input wire [WR_DATA_WIDTH-1:0] DIN1; | 
|  | input wire Async_Flush1; | 
|  | output wire [RD_DATA_WIDTH-1:0] DOUT1; | 
|  | output wire Almost_Full1, Almost_Empty1; | 
|  | output wire Full1, Empty1; | 
|  | output wire Full_Watermark1, Empty_Watermark1; | 
|  | output wire Overrun_Error1, Underrun_Error1; | 
|  |  | 
|  | input wire CLK2; | 
|  | input wire PUSH2, POP2; | 
|  | input wire [WR_DATA_WIDTH-1:0] DIN2; | 
|  | input wire Async_Flush2; | 
|  | output wire [RD_DATA_WIDTH-1:0] DOUT2; | 
|  | output wire Almost_Full2, Almost_Empty2; | 
|  | output wire Full2, Empty2; | 
|  | output wire Full_Watermark2, Empty_Watermark2; | 
|  | output wire Overrun_Error2, Underrun_Error2; | 
|  |  | 
|  | wire [17:0] in_reg1; | 
|  | wire [17:0] out_reg1; | 
|  | wire [17:0] fifo1_flags; | 
|  |  | 
|  | wire [17:0] in_reg2; | 
|  | wire [17:0] out_reg2; | 
|  | wire [17:0] fifo2_flags; | 
|  |  | 
|  | wire Push_Clk1, Pop_Clk1; | 
|  | wire Push_Clk2, Pop_Clk2; | 
|  | assign Push_Clk1 = CLK1; | 
|  | assign Pop_Clk1 = CLK1; | 
|  | assign Push_Clk2 = CLK2; | 
|  | assign Pop_Clk2 = CLK2; | 
|  |  | 
|  | assign Overrun_Error1 = fifo1_flags[0]; | 
|  | assign Full_Watermark1 = fifo1_flags[1]; | 
|  | assign Almost_Full1 = fifo1_flags[2]; | 
|  | assign Full1 = fifo1_flags[3]; | 
|  | assign Underrun_Error1 = fifo1_flags[4]; | 
|  | assign Empty_Watermark1 = fifo1_flags[5]; | 
|  | assign Almost_Empty1 = fifo1_flags[6]; | 
|  | assign Empty1 = fifo1_flags[7]; | 
|  |  | 
|  | assign Overrun_Error2 = fifo2_flags[0]; | 
|  | assign Full_Watermark2 = fifo2_flags[1]; | 
|  | assign Almost_Full2 = fifo2_flags[2]; | 
|  | assign Full2 = fifo2_flags[3]; | 
|  | assign Underrun_Error2 = fifo2_flags[4]; | 
|  | assign Empty_Watermark2 = fifo2_flags[5]; | 
|  | assign Almost_Empty2 = fifo2_flags[6]; | 
|  | assign Empty2 = fifo2_flags[7]; | 
|  |  | 
|  | generate | 
|  | if (WR_DATA_WIDTH == 18) begin | 
|  | assign in_reg1[17:0] = DIN1[17:0]; | 
|  | assign in_reg2[17:0] = DIN2[17:0]; | 
|  | end else if (WR_DATA_WIDTH == 9) begin | 
|  | assign in_reg1[17:0] = {1'b0, DIN1[8], 8'h0, DIN1[7:0]}; | 
|  | assign in_reg2[17:0] = {1'b0, DIN2[8], 8'h0, DIN2[7:0]}; | 
|  | end else begin | 
|  | assign in_reg1[17:WR_DATA_WIDTH]  = 0; | 
|  | assign in_reg1[WR_DATA_WIDTH-1:0] = DIN1[WR_DATA_WIDTH-1:0]; | 
|  | assign in_reg2[17:WR_DATA_WIDTH]  = 0; | 
|  | assign in_reg2[WR_DATA_WIDTH-1:0] = DIN2[WR_DATA_WIDTH-1:0]; | 
|  | end | 
|  | endgenerate | 
|  |  | 
|  | case (RD_DATA_WIDTH) | 
|  | 8, 9: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 8, 9: begin | 
|  | defparam U1.MODE_BITS = { 1'b1, | 
|  | UPAF_DBITS2, UPAE_DBITS2, 4'h1, MODE_9, MODE_9, MODE_9, MODE_9, 1'b1, | 
|  | 1'b0, UPAF_DBITS1, 1'b0, UPAE_DBITS1, 4'h1, MODE_9, MODE_9, MODE_9, MODE_9, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg1[17:0]), | 
|  | .WDATA_A2_i(in_reg2[17:0]), | 
|  | .RDATA_A1_o(fifo1_flags), | 
|  | .RDATA_A2_o(fifo2_flags), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk1), | 
|  | .CLK_A2_i(Push_Clk2), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b1), | 
|  | .WEN_A1_i(PUSH1), | 
|  | .WEN_A2_i(PUSH2), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg1[17:0]), | 
|  | .RDATA_B2_o(out_reg2[17:0]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk1), | 
|  | .CLK_B2_i(Pop_Clk2), | 
|  | .REN_B1_i(POP1), | 
|  | .REN_B2_i(POP2), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush1), | 
|  | .FLUSH2_i(Async_Flush2) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam U1.MODE_BITS = { 1'b1, | 
|  | UPAF_DBITS2, UPAE_DBITS2, 4'h1, MODE_9, MODE_18, MODE_9, MODE_18, 1'b1, | 
|  | 1'b0, UPAF_DBITS1, 1'b0, UPAE_DBITS1, 4'h1, MODE_9, MODE_18, MODE_9, MODE_18, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg1[17:0]), | 
|  | .WDATA_A2_i(in_reg2[17:0]), | 
|  | .RDATA_A1_o(fifo1_flags), | 
|  | .RDATA_A2_o(fifo2_flags), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk1), | 
|  | .CLK_A2_i(Push_Clk2), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b1), | 
|  | .WEN_A1_i(PUSH1), | 
|  | .WEN_A2_i(PUSH2), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg1[17:0]), | 
|  | .RDATA_B2_o(out_reg2[17:0]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk1), | 
|  | .CLK_B2_i(Pop_Clk2), | 
|  | .REN_B1_i(POP1), | 
|  | .REN_B2_i(POP2), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush1), | 
|  | .FLUSH2_i(Async_Flush2) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam U1.MODE_BITS = { 1'b1, | 
|  | UPAF_DBITS2, UPAE_DBITS2, 4'h1, MODE_9, MODE_9, MODE_9, MODE_9, 1'b1, | 
|  | 1'b0, UPAF_DBITS1, 1'b0, UPAE_DBITS1, 4'h1, MODE_9, MODE_9, MODE_9, MODE_9, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg1[17:0]), | 
|  | .WDATA_A2_i(in_reg2[17:0]), | 
|  | .RDATA_A1_o(fifo1_flags), | 
|  | .RDATA_A2_o(fifo2_flags), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk1), | 
|  | .CLK_A2_i(Push_Clk2), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b1), | 
|  | .WEN_A1_i(PUSH1), | 
|  | .WEN_A2_i(PUSH2), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg1[17:0]), | 
|  | .RDATA_B2_o(out_reg2[17:0]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk1), | 
|  | .CLK_B2_i(Pop_Clk2), | 
|  | .REN_B1_i(POP1), | 
|  | .REN_B2_i(POP2), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush1), | 
|  | .FLUSH2_i(Async_Flush2) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | 16, 18: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 8, 9: begin | 
|  | defparam U1.MODE_BITS = { 1'b1, | 
|  | UPAF_DBITS2, UPAE_DBITS2, 4'h1, MODE_18, MODE_9, MODE_18, MODE_9, 1'b1, | 
|  | 1'b0, UPAF_DBITS1, 1'b0, UPAE_DBITS1, 4'h1, MODE_18, MODE_9, MODE_18, MODE_9, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg1[17:0]), | 
|  | .WDATA_A2_i(in_reg2[17:0]), | 
|  | .RDATA_A1_o(fifo1_flags), | 
|  | .RDATA_A2_o(fifo2_flags), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk1), | 
|  | .CLK_A2_i(Push_Clk2), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b1), | 
|  | .WEN_A1_i(PUSH1), | 
|  | .WEN_A2_i(PUSH2), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg1[17:0]), | 
|  | .RDATA_B2_o(out_reg2[17:0]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk1), | 
|  | .CLK_B2_i(Pop_Clk2), | 
|  | .REN_B1_i(POP1), | 
|  | .REN_B2_i(POP2), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush1), | 
|  | .FLUSH2_i(Async_Flush2) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam U1.MODE_BITS = { 1'b1, | 
|  | UPAF_DBITS2, UPAE_DBITS2, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b1, | 
|  | 1'b0, UPAF_DBITS1, 1'b0, UPAE_DBITS1, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg1[17:0]), | 
|  | .WDATA_A2_i(in_reg2[17:0]), | 
|  | .RDATA_A1_o(fifo1_flags), | 
|  | .RDATA_A2_o(fifo2_flags), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk1), | 
|  | .CLK_A2_i(Push_Clk2), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b1), | 
|  | .WEN_A1_i(PUSH1), | 
|  | .WEN_A2_i(PUSH2), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg1[17:0]), | 
|  | .RDATA_B2_o(out_reg2[17:0]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk1), | 
|  | .CLK_B2_i(Pop_Clk2), | 
|  | .REN_B1_i(POP1), | 
|  | .REN_B2_i(POP2), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush1), | 
|  | .FLUSH2_i(Async_Flush2) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam U1.MODE_BITS = { 1'b1, | 
|  | UPAF_DBITS2, UPAE_DBITS2, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b1, | 
|  | 1'b0, UPAF_DBITS1, 1'b0, UPAE_DBITS1, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg1[17:0]), | 
|  | .WDATA_A2_i(in_reg2[17:0]), | 
|  | .RDATA_A1_o(fifo1_flags), | 
|  | .RDATA_A2_o(fifo2_flags), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk1), | 
|  | .CLK_A2_i(Push_Clk2), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b1), | 
|  | .WEN_A1_i(PUSH1), | 
|  | .WEN_A2_i(PUSH2), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg1[17:0]), | 
|  | .RDATA_B2_o(out_reg2[17:0]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk1), | 
|  | .CLK_B2_i(Pop_Clk2), | 
|  | .REN_B1_i(POP1), | 
|  | .REN_B2_i(POP2), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush1), | 
|  | .FLUSH2_i(Async_Flush2) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | default: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 8, 9: begin | 
|  | defparam U1.MODE_BITS = { 1'b1, | 
|  | UPAF_DBITS2, UPAE_DBITS2, 4'h1, MODE_9, MODE_9, MODE_9, MODE_9, 1'b1, | 
|  | 1'b0, UPAF_DBITS1, 1'b0, UPAE_DBITS1, 4'h1, MODE_9, MODE_9, MODE_9, MODE_9, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg1[17:0]), | 
|  | .WDATA_A2_i(in_reg2[17:0]), | 
|  | .RDATA_A1_o(fifo1_flags), | 
|  | .RDATA_A2_o(fifo2_flags), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk1), | 
|  | .CLK_A2_i(Push_Clk2), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b1), | 
|  | .WEN_A1_i(PUSH1), | 
|  | .WEN_A2_i(PUSH2), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg1[17:0]), | 
|  | .RDATA_B2_o(out_reg2[17:0]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk1), | 
|  | .CLK_B2_i(Pop_Clk2), | 
|  | .REN_B1_i(POP1), | 
|  | .REN_B2_i(POP2), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush1), | 
|  | .FLUSH2_i(Async_Flush2) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam U1.MODE_BITS = { 1'b1, | 
|  | UPAF_DBITS2, UPAE_DBITS2, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b1, | 
|  | 1'b0, UPAF_DBITS1, 1'b0, UPAE_DBITS1, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg1[17:0]), | 
|  | .WDATA_A2_i(in_reg2[17:0]), | 
|  | .RDATA_A1_o(fifo1_flags), | 
|  | .RDATA_A2_o(fifo2_flags), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk1), | 
|  | .CLK_A2_i(Push_Clk2), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b1), | 
|  | .WEN_A1_i(PUSH1), | 
|  | .WEN_A2_i(PUSH2), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg1[17:0]), | 
|  | .RDATA_B2_o(out_reg2[17:0]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk1), | 
|  | .CLK_B2_i(Pop_Clk2), | 
|  | .REN_B1_i(POP1), | 
|  | .REN_B2_i(POP2), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush1), | 
|  | .FLUSH2_i(Async_Flush2) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam U1.MODE_BITS = { 1'b1, | 
|  | UPAF_DBITS2, UPAE_DBITS2, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b1, | 
|  | 1'b0, UPAF_DBITS1, 1'b0, UPAE_DBITS1, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg1[17:0]), | 
|  | .WDATA_A2_i(in_reg2[17:0]), | 
|  | .RDATA_A1_o(fifo1_flags), | 
|  | .RDATA_A2_o(fifo2_flags), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk1), | 
|  | .CLK_A2_i(Push_Clk2), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b1), | 
|  | .WEN_A1_i(PUSH1), | 
|  | .WEN_A2_i(PUSH2), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg1[17:0]), | 
|  | .RDATA_B2_o(out_reg2[17:0]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk1), | 
|  | .CLK_B2_i(Pop_Clk2), | 
|  | .REN_B1_i(POP1), | 
|  | .REN_B2_i(POP2), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush1), | 
|  | .FLUSH2_i(Async_Flush2) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | endcase | 
|  |  | 
|  | generate | 
|  | if (RD_DATA_WIDTH == 9) begin | 
|  | assign DOUT1[RD_DATA_WIDTH-1:0] = {out_reg1[16], out_reg1[7:0]}; | 
|  | assign DOUT2[RD_DATA_WIDTH-1:0] = {out_reg2[16], out_reg2[7:0]}; | 
|  | end else begin | 
|  | assign DOUT1[RD_DATA_WIDTH-1:0] = out_reg1[RD_DATA_WIDTH-1:0]; | 
|  | assign DOUT2[RD_DATA_WIDTH-1:0] = out_reg2[RD_DATA_WIDTH-1:0]; | 
|  | end | 
|  | endgenerate | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module BRAM2x18_AFIFO ( | 
|  | DIN1, | 
|  | PUSH1, | 
|  | POP1, | 
|  | Push_Clk1, | 
|  | Pop_Clk1, | 
|  | Async_Flush1, | 
|  | Overrun_Error1, | 
|  | Full_Watermark1, | 
|  | Almost_Full1, | 
|  | Full1, | 
|  | Underrun_Error1, | 
|  | Empty_Watermark1, | 
|  | Almost_Empty1, | 
|  | Empty1, | 
|  | DOUT1, | 
|  |  | 
|  | DIN2, | 
|  | PUSH2, | 
|  | POP2, | 
|  | Push_Clk2, | 
|  | Pop_Clk2, | 
|  | Async_Flush2, | 
|  | Overrun_Error2, | 
|  | Full_Watermark2, | 
|  | Almost_Full2, | 
|  | Full2, | 
|  | Underrun_Error2, | 
|  | Empty_Watermark2, | 
|  | Almost_Empty2, | 
|  | Empty2, | 
|  | DOUT2 | 
|  | ); | 
|  |  | 
|  | parameter WR_DATA_WIDTH = 18; | 
|  | parameter RD_DATA_WIDTH = 18; | 
|  |  | 
|  |  | 
|  | parameter UPAE_DBITS1 = 11'd10; | 
|  | parameter UPAF_DBITS1 = 11'd10; | 
|  |  | 
|  | parameter UPAE_DBITS2 = 11'd10; | 
|  | parameter UPAF_DBITS2 = 11'd10; | 
|  |  | 
|  | localparam MODE_36 = 3'b011; // 36- or 32-bit | 
|  | localparam MODE_18 = 3'b010; // 18- or 16-bit | 
|  | localparam MODE_9 = 3'b001; // 9- or 8-bit | 
|  | localparam MODE_4 = 3'b100; // 4-bit | 
|  | localparam MODE_2 = 3'b110; // 2-bit | 
|  | localparam MODE_1 = 3'b101; // 1-bit | 
|  |  | 
|  | input wire Push_Clk1, Pop_Clk1; | 
|  | input wire PUSH1, POP1; | 
|  | input wire [WR_DATA_WIDTH-1:0] DIN1; | 
|  | input wire Async_Flush1; | 
|  | output wire [RD_DATA_WIDTH-1:0] DOUT1; | 
|  | output wire Almost_Full1, Almost_Empty1; | 
|  | output wire Full1, Empty1; | 
|  | output wire Full_Watermark1, Empty_Watermark1; | 
|  | output wire Overrun_Error1, Underrun_Error1; | 
|  |  | 
|  | input wire Push_Clk2, Pop_Clk2; | 
|  | input wire PUSH2, POP2; | 
|  | input wire [WR_DATA_WIDTH-1:0] DIN2; | 
|  | input wire Async_Flush2; | 
|  | output wire [RD_DATA_WIDTH-1:0] DOUT2; | 
|  | output wire Almost_Full2, Almost_Empty2; | 
|  | output wire Full2, Empty2; | 
|  | output wire Full_Watermark2, Empty_Watermark2; | 
|  | output wire Overrun_Error2, Underrun_Error2; | 
|  |  | 
|  | wire [17:0] in_reg1; | 
|  | wire [17:0] out_reg1; | 
|  | wire [17:0] fifo1_flags; | 
|  |  | 
|  | wire [17:0] in_reg2; | 
|  | wire [17:0] out_reg2; | 
|  | wire [17:0] fifo2_flags; | 
|  |  | 
|  | assign Overrun_Error1 = fifo1_flags[0]; | 
|  | assign Full_Watermark1 = fifo1_flags[1]; | 
|  | assign Almost_Full1 = fifo1_flags[2]; | 
|  | assign Full1 = fifo1_flags[3]; | 
|  | assign Underrun_Error1 = fifo1_flags[4]; | 
|  | assign Empty_Watermark1 = fifo1_flags[5]; | 
|  | assign Almost_Empty1 = fifo1_flags[6]; | 
|  | assign Empty1 = fifo1_flags[7]; | 
|  |  | 
|  | assign Overrun_Error2 = fifo2_flags[0]; | 
|  | assign Full_Watermark2 = fifo2_flags[1]; | 
|  | assign Almost_Full2 = fifo2_flags[2]; | 
|  | assign Full2 = fifo2_flags[3]; | 
|  | assign Underrun_Error2 = fifo2_flags[4]; | 
|  | assign Empty_Watermark2 = fifo2_flags[5]; | 
|  | assign Almost_Empty2 = fifo2_flags[6]; | 
|  | assign Empty2 = fifo2_flags[7]; | 
|  |  | 
|  | generate | 
|  | if (WR_DATA_WIDTH == 18) begin | 
|  | assign in_reg1[17:0] = DIN1[17:0]; | 
|  | assign in_reg2[17:0] = DIN2[17:0]; | 
|  | end else if (WR_DATA_WIDTH == 9) begin | 
|  | assign in_reg1[17:0] = {1'b0, DIN1[8], 8'h0, DIN1[7:0]}; | 
|  | assign in_reg2[17:0] = {1'b0, DIN2[8], 8'h0, DIN2[7:0]}; | 
|  | end else begin | 
|  | assign in_reg1[17:WR_DATA_WIDTH]  = 0; | 
|  | assign in_reg1[WR_DATA_WIDTH-1:0] = DIN1[WR_DATA_WIDTH-1:0]; | 
|  | assign in_reg2[17:WR_DATA_WIDTH]  = 0; | 
|  | assign in_reg2[WR_DATA_WIDTH-1:0] = DIN2[WR_DATA_WIDTH-1:0]; | 
|  | end | 
|  | endgenerate | 
|  |  | 
|  | case (RD_DATA_WIDTH) | 
|  | 8, 9: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 8, 9: begin | 
|  | defparam U1.MODE_BITS = { 1'b1, | 
|  | UPAF_DBITS2, UPAE_DBITS2, 4'h1, MODE_9, MODE_9, MODE_9, MODE_9, 1'b0, | 
|  | 1'b0, UPAF_DBITS1, 1'b0, UPAE_DBITS1, 4'h1, MODE_9, MODE_9, MODE_9, MODE_9, 1'b0 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg1[17:0]), | 
|  | .WDATA_A2_i(in_reg2[17:0]), | 
|  | .RDATA_A1_o(fifo1_flags), | 
|  | .RDATA_A2_o(fifo2_flags), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk1), | 
|  | .CLK_A2_i(Push_Clk2), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b1), | 
|  | .WEN_A1_i(PUSH1), | 
|  | .WEN_A2_i(PUSH2), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg1[17:0]), | 
|  | .RDATA_B2_o(out_reg2[17:0]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk1), | 
|  | .CLK_B2_i(Pop_Clk2), | 
|  | .REN_B1_i(POP1), | 
|  | .REN_B2_i(POP2), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush1), | 
|  | .FLUSH2_i(Async_Flush2) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam U1.MODE_BITS = { 1'b1, | 
|  | UPAF_DBITS2, UPAE_DBITS2, 4'h1, MODE_9, MODE_18, MODE_9, MODE_18, 1'b0, | 
|  | 1'b0, UPAF_DBITS1, 1'b0, UPAE_DBITS1, 4'h1, MODE_9, MODE_18, MODE_9, MODE_18, 1'b0 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg1[17:0]), | 
|  | .WDATA_A2_i(in_reg2[17:0]), | 
|  | .RDATA_A1_o(fifo1_flags), | 
|  | .RDATA_A2_o(fifo2_flags), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk1), | 
|  | .CLK_A2_i(Push_Clk2), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b1), | 
|  | .WEN_A1_i(PUSH1), | 
|  | .WEN_A2_i(PUSH2), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg1[17:0]), | 
|  | .RDATA_B2_o(out_reg2[17:0]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk1), | 
|  | .CLK_B2_i(Pop_Clk2), | 
|  | .REN_B1_i(POP1), | 
|  | .REN_B2_i(POP2), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush1), | 
|  | .FLUSH2_i(Async_Flush2) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam U1.MODE_BITS = { 1'b1, | 
|  | UPAF_DBITS2, UPAE_DBITS2, 4'h1, MODE_9, MODE_9, MODE_9, MODE_9, 1'b0, | 
|  | 1'b0, UPAF_DBITS1, 1'b0, UPAE_DBITS1, 4'h1, MODE_9, MODE_9, MODE_9, MODE_9, 1'b0 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg1[17:0]), | 
|  | .WDATA_A2_i(in_reg2[17:0]), | 
|  | .RDATA_A1_o(fifo1_flags), | 
|  | .RDATA_A2_o(fifo2_flags), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk1), | 
|  | .CLK_A2_i(Push_Clk2), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b1), | 
|  | .WEN_A1_i(PUSH1), | 
|  | .WEN_A2_i(PUSH2), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg1[17:0]), | 
|  | .RDATA_B2_o(out_reg2[17:0]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk1), | 
|  | .CLK_B2_i(Pop_Clk2), | 
|  | .REN_B1_i(POP1), | 
|  | .REN_B2_i(POP2), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush1), | 
|  | .FLUSH2_i(Async_Flush2) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | 16, 18: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 8, 9: begin | 
|  | defparam U1.MODE_BITS = { 1'b1, | 
|  | UPAF_DBITS2, UPAE_DBITS2, 4'h1, MODE_18, MODE_9, MODE_18, MODE_9, 1'b0, | 
|  | 1'b0, UPAF_DBITS1, 1'b0, UPAE_DBITS1, 4'h1, MODE_18, MODE_9, MODE_18, MODE_9, 1'b0 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg1[17:0]), | 
|  | .WDATA_A2_i(in_reg2[17:0]), | 
|  | .RDATA_A1_o(fifo1_flags), | 
|  | .RDATA_A2_o(fifo2_flags), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk1), | 
|  | .CLK_A2_i(Push_Clk2), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b1), | 
|  | .WEN_A1_i(PUSH1), | 
|  | .WEN_A2_i(PUSH2), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg1[17:0]), | 
|  | .RDATA_B2_o(out_reg2[17:0]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk1), | 
|  | .CLK_B2_i(Pop_Clk2), | 
|  | .REN_B1_i(POP1), | 
|  | .REN_B2_i(POP2), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush1), | 
|  | .FLUSH2_i(Async_Flush2) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam U1.MODE_BITS = { 1'b1, | 
|  | UPAF_DBITS2, UPAE_DBITS2, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b0, | 
|  | 1'b0, UPAF_DBITS1, 1'b0, UPAE_DBITS1, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b0 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg1[17:0]), | 
|  | .WDATA_A2_i(in_reg2[17:0]), | 
|  | .RDATA_A1_o(fifo1_flags), | 
|  | .RDATA_A2_o(fifo2_flags), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk1), | 
|  | .CLK_A2_i(Push_Clk2), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b1), | 
|  | .WEN_A1_i(PUSH1), | 
|  | .WEN_A2_i(PUSH2), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg1[17:0]), | 
|  | .RDATA_B2_o(out_reg2[17:0]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk1), | 
|  | .CLK_B2_i(Pop_Clk2), | 
|  | .REN_B1_i(POP1), | 
|  | .REN_B2_i(POP2), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush1), | 
|  | .FLUSH2_i(Async_Flush2) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam U1.MODE_BITS = { 1'b1, | 
|  | UPAF_DBITS2, UPAE_DBITS2, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b0, | 
|  | 1'b0, UPAF_DBITS1, 1'b0, UPAE_DBITS1, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b0 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg1[17:0]), | 
|  | .WDATA_A2_i(in_reg2[17:0]), | 
|  | .RDATA_A1_o(fifo1_flags), | 
|  | .RDATA_A2_o(fifo2_flags), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk1), | 
|  | .CLK_A2_i(Push_Clk2), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b1), | 
|  | .WEN_A1_i(PUSH1), | 
|  | .WEN_A2_i(PUSH2), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg1[17:0]), | 
|  | .RDATA_B2_o(out_reg2[17:0]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk1), | 
|  | .CLK_B2_i(Pop_Clk2), | 
|  | .REN_B1_i(POP1), | 
|  | .REN_B2_i(POP2), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush1), | 
|  | .FLUSH2_i(Async_Flush2) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | default: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 8, 9: begin | 
|  | defparam U1.MODE_BITS = { 1'b1, | 
|  | UPAF_DBITS2, UPAE_DBITS2, 4'h1, MODE_9, MODE_9, MODE_9, MODE_9, 1'b0, | 
|  | 1'b0, UPAF_DBITS1, 1'b0, UPAE_DBITS1, 4'h1, MODE_9, MODE_9, MODE_9, MODE_9, 1'b0 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg1[17:0]), | 
|  | .WDATA_A2_i(in_reg2[17:0]), | 
|  | .RDATA_A1_o(fifo1_flags), | 
|  | .RDATA_A2_o(fifo2_flags), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk1), | 
|  | .CLK_A2_i(Push_Clk2), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b1), | 
|  | .WEN_A1_i(PUSH1), | 
|  | .WEN_A2_i(PUSH2), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg1[17:0]), | 
|  | .RDATA_B2_o(out_reg2[17:0]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk1), | 
|  | .CLK_B2_i(Pop_Clk2), | 
|  | .REN_B1_i(POP1), | 
|  | .REN_B2_i(POP2), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush1), | 
|  | .FLUSH2_i(Async_Flush2) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam U1.MODE_BITS = { 1'b1, | 
|  | UPAF_DBITS2, UPAE_DBITS2, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b0, | 
|  | 1'b0, UPAF_DBITS1, 1'b0, UPAE_DBITS1, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b0 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg1[17:0]), | 
|  | .WDATA_A2_i(in_reg2[17:0]), | 
|  | .RDATA_A1_o(fifo1_flags), | 
|  | .RDATA_A2_o(fifo2_flags), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk1), | 
|  | .CLK_A2_i(Push_Clk2), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b1), | 
|  | .WEN_A1_i(PUSH1), | 
|  | .WEN_A2_i(PUSH2), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg1[17:0]), | 
|  | .RDATA_B2_o(out_reg2[17:0]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk1), | 
|  | .CLK_B2_i(Pop_Clk2), | 
|  | .REN_B1_i(POP1), | 
|  | .REN_B2_i(POP2), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush1), | 
|  | .FLUSH2_i(Async_Flush2) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam U1.MODE_BITS = { 1'b1, | 
|  | UPAF_DBITS2, UPAE_DBITS2, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b0, | 
|  | 1'b0, UPAF_DBITS1, 1'b0, UPAE_DBITS1, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b0 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* is_split = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg1[17:0]), | 
|  | .WDATA_A2_i(in_reg2[17:0]), | 
|  | .RDATA_A1_o(fifo1_flags), | 
|  | .RDATA_A2_o(fifo2_flags), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk1), | 
|  | .CLK_A2_i(Push_Clk2), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b1), | 
|  | .WEN_A1_i(PUSH1), | 
|  | .WEN_A2_i(PUSH2), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg1[17:0]), | 
|  | .RDATA_B2_o(out_reg2[17:0]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk1), | 
|  | .CLK_B2_i(Pop_Clk2), | 
|  | .REN_B1_i(POP1), | 
|  | .REN_B2_i(POP2), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush1), | 
|  | .FLUSH2_i(Async_Flush2) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | endcase | 
|  |  | 
|  | generate | 
|  | if (RD_DATA_WIDTH == 9) begin | 
|  | assign DOUT1[RD_DATA_WIDTH-1:0] = {out_reg1[16], out_reg1[7:0]}; | 
|  | assign DOUT2[RD_DATA_WIDTH-1:0] = {out_reg2[16], out_reg2[7:0]}; | 
|  | end else begin | 
|  | assign DOUT1[RD_DATA_WIDTH-1:0] = out_reg1[RD_DATA_WIDTH-1:0]; | 
|  | assign DOUT2[RD_DATA_WIDTH-1:0] = out_reg2[RD_DATA_WIDTH-1:0]; | 
|  | end | 
|  | endgenerate | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module SFIFO_36K_BLK ( | 
|  | DIN, | 
|  | PUSH, | 
|  | POP, | 
|  | CLK, | 
|  | Async_Flush, | 
|  | Overrun_Error, | 
|  | Full_Watermark, | 
|  | Almost_Full, | 
|  | Full, | 
|  | Underrun_Error, | 
|  | Empty_Watermark, | 
|  | Almost_Empty, | 
|  | Empty, | 
|  | DOUT | 
|  | ); | 
|  |  | 
|  | parameter WR_DATA_WIDTH = 36; | 
|  | parameter RD_DATA_WIDTH = 36; | 
|  | parameter UPAE_DBITS = 12'd10; | 
|  | parameter UPAF_DBITS = 12'd10; | 
|  |  | 
|  | localparam MODE_36 = 3'b011; // 36- or 32-bit | 
|  | localparam MODE_18 = 3'b010; // 18- or 16-bit | 
|  | localparam MODE_9 = 3'b001; // 9- or 8-bit | 
|  | localparam MODE_4 = 3'b100; // 4-bit | 
|  | localparam MODE_2 = 3'b110; // 2-bit | 
|  | localparam MODE_1 = 3'b101; // 1-bit | 
|  |  | 
|  | input wire CLK; | 
|  | input wire PUSH, POP; | 
|  | input wire [WR_DATA_WIDTH-1:0] DIN; | 
|  | input wire Async_Flush; | 
|  | output wire [RD_DATA_WIDTH-1:0] DOUT; | 
|  | output wire Almost_Full, Almost_Empty; | 
|  | output wire Full, Empty; | 
|  | output wire Full_Watermark, Empty_Watermark; | 
|  | output wire Overrun_Error, Underrun_Error; | 
|  |  | 
|  | wire [35:0] in_reg; | 
|  | wire [35:0] out_reg; | 
|  | wire [17:0] fifo_flags; | 
|  |  | 
|  | wire [35:0] RD_DATA_CMPL; | 
|  | wire [35:WR_DATA_WIDTH] WR_DATA_CMPL; | 
|  |  | 
|  | wire Push_Clk, Pop_Clk; | 
|  |  | 
|  | assign Push_Clk = CLK; | 
|  | assign Pop_Clk = CLK; | 
|  |  | 
|  | assign Overrun_Error = fifo_flags[0]; | 
|  | assign Full_Watermark = fifo_flags[1]; | 
|  | assign Almost_Full = fifo_flags[2]; | 
|  | assign Full = fifo_flags[3]; | 
|  | assign Underrun_Error = fifo_flags[4]; | 
|  | assign Empty_Watermark = fifo_flags[5]; | 
|  | assign Almost_Empty = fifo_flags[6]; | 
|  | assign Empty = fifo_flags[7]; | 
|  |  | 
|  | generate | 
|  | if (WR_DATA_WIDTH == 36) begin | 
|  | assign in_reg[WR_DATA_WIDTH-1:0] = DIN[WR_DATA_WIDTH-1:0]; | 
|  | end else if (WR_DATA_WIDTH > 18 && WR_DATA_WIDTH < 36) begin | 
|  | assign in_reg[WR_DATA_WIDTH+1:18] = DIN[WR_DATA_WIDTH-1:16]; | 
|  | assign in_reg[17:0] = {2'b00,DIN[15:0]}; | 
|  | end else if (WR_DATA_WIDTH == 9) begin | 
|  | assign in_reg[35:0] = {19'h0, DIN[8], 8'h0, DIN[7:0]}; | 
|  | end else begin | 
|  | assign in_reg[35:WR_DATA_WIDTH]  = 0; | 
|  | assign in_reg[WR_DATA_WIDTH-1:0] = DIN[WR_DATA_WIDTH-1:0]; | 
|  | end | 
|  | endgenerate | 
|  |  | 
|  | generate | 
|  | if (RD_DATA_WIDTH == 36) begin | 
|  | assign RD_DATA_CMPL = out_reg; | 
|  | end else if (RD_DATA_WIDTH > 18 && RD_DATA_WIDTH < 36) begin | 
|  | assign RD_DATA_CMPL  = {2'b00,out_reg[35:18],out_reg[15:0]}; | 
|  | end else if (RD_DATA_WIDTH == 9) begin | 
|  | assign RD_DATA_CMPL = { 27'h0, out_reg[16], out_reg[7:0]}; | 
|  | end else begin | 
|  | assign RD_DATA_CMPL = {18'h0, out_reg[17:0]}; | 
|  | end | 
|  | endgenerate | 
|  |  | 
|  | case (RD_DATA_WIDTH) | 
|  | 8, 9: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 8, 9: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_9, MODE_9, MODE_9, MODE_9, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_18, MODE_9, MODE_18, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_9, MODE_18, MODE_9, MODE_18, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  | end | 
|  | 32, 36: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_36, MODE_9, MODE_36, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_9, MODE_36, MODE_9, MODE_36, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_9, MODE_9, MODE_9, MODE_9, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | 16, 18: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 8, 9: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_9, MODE_18, MODE_9, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_18, MODE_9, MODE_18, MODE_9, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  | end | 
|  | 32, 36: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_36, MODE_18, MODE_36, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_18, MODE_36, MODE_18, MODE_36, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | 32, 36: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 8, 9: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_9, MODE_36, MODE_9, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_36, MODE_9, MODE_36, MODE_9, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_18, MODE_36, MODE_18, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_36, MODE_18, MODE_36, MODE_18, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  | end | 
|  | 32, 36: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_36, MODE_36, MODE_36, MODE_36, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_36, MODE_36, MODE_36, MODE_36, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | default: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 8, 9: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_9, MODE_9, MODE_9, MODE_9, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  | end | 
|  | 32, 36: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_36, MODE_36, MODE_36, MODE_36, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  | end | 
|  | default: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_36, MODE_36, MODE_36, MODE_36, 1'b1 | 
|  | }; | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 1 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  | end | 
|  | endcase | 
|  | end | 
|  | endcase | 
|  |  | 
|  | assign DOUT[RD_DATA_WIDTH-1 : 0] = RD_DATA_CMPL[RD_DATA_WIDTH-1 : 0]; | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module AFIFO_36K_BLK ( | 
|  | DIN, | 
|  | PUSH, | 
|  | POP, | 
|  | Push_Clk, | 
|  | Pop_Clk, | 
|  | Async_Flush, | 
|  | Overrun_Error, | 
|  | Full_Watermark, | 
|  | Almost_Full, | 
|  | Full, | 
|  | Underrun_Error, | 
|  | Empty_Watermark, | 
|  | Almost_Empty, | 
|  | Empty, | 
|  | DOUT | 
|  | ); | 
|  |  | 
|  | parameter WR_DATA_WIDTH = 36; | 
|  | parameter RD_DATA_WIDTH = 36; | 
|  | parameter UPAE_DBITS = 12'd10; | 
|  | parameter UPAF_DBITS = 12'd10; | 
|  |  | 
|  | localparam MODE_36 = 3'b011; // 36- or 32-bit | 
|  | localparam MODE_18 = 3'b010; // 18- or 16-bit | 
|  | localparam MODE_9 = 3'b001; // 9- or 8-bit | 
|  | localparam MODE_4 = 3'b100; // 4-bit | 
|  | localparam MODE_2 = 3'b110; // 2-bit | 
|  | localparam MODE_1 = 3'b101; // 1-bit | 
|  |  | 
|  | input wire Push_Clk, Pop_Clk; | 
|  | input wire PUSH, POP; | 
|  | input wire [WR_DATA_WIDTH-1:0] DIN; | 
|  | input wire Async_Flush; | 
|  | output wire [RD_DATA_WIDTH-1:0] DOUT; | 
|  | output wire Almost_Full, Almost_Empty; | 
|  | output wire Full, Empty; | 
|  | output wire Full_Watermark, Empty_Watermark; | 
|  | output wire Overrun_Error, Underrun_Error; | 
|  |  | 
|  | wire [35:0] in_reg; | 
|  | wire [35:0] out_reg; | 
|  | wire [17:0] fifo_flags; | 
|  |  | 
|  | wire [35:0] RD_DATA_CMPL; | 
|  | wire [35:WR_DATA_WIDTH] WR_DATA_CMPL; | 
|  |  | 
|  | assign Overrun_Error = fifo_flags[0]; | 
|  | assign Full_Watermark = fifo_flags[1]; | 
|  | assign Almost_Full = fifo_flags[2]; | 
|  | assign Full = fifo_flags[3]; | 
|  | assign Underrun_Error = fifo_flags[4]; | 
|  | assign Empty_Watermark = fifo_flags[5]; | 
|  | assign Almost_Empty = fifo_flags[6]; | 
|  | assign Empty = fifo_flags[7]; | 
|  |  | 
|  | generate | 
|  | if (WR_DATA_WIDTH == 36) begin | 
|  | assign in_reg[WR_DATA_WIDTH-1:0] = DIN[WR_DATA_WIDTH-1:0]; | 
|  | end else if (WR_DATA_WIDTH > 18 && WR_DATA_WIDTH < 36) begin | 
|  | assign in_reg[WR_DATA_WIDTH+1:18] = DIN[WR_DATA_WIDTH-1:16]; | 
|  | assign in_reg[17:0] = {2'b00,DIN[15:0]}; | 
|  | end else if (WR_DATA_WIDTH == 9) begin | 
|  | assign in_reg[35:0] = {19'h0, DIN[8], 8'h0, DIN[7:0]}; | 
|  | end else begin | 
|  | assign in_reg[35:WR_DATA_WIDTH]  = 0; | 
|  | assign in_reg[WR_DATA_WIDTH-1:0] = DIN[WR_DATA_WIDTH-1:0]; | 
|  | end | 
|  | endgenerate | 
|  |  | 
|  | generate | 
|  | if (RD_DATA_WIDTH == 36) begin | 
|  | assign RD_DATA_CMPL = out_reg; | 
|  | end else if (RD_DATA_WIDTH > 18 && RD_DATA_WIDTH < 36) begin | 
|  | assign RD_DATA_CMPL  = {2'b00,out_reg[35:18],out_reg[15:0]}; | 
|  | end else if (RD_DATA_WIDTH == 9) begin | 
|  | assign RD_DATA_CMPL = { 27'h0, out_reg[16], out_reg[7:0]}; | 
|  | end else begin | 
|  | assign RD_DATA_CMPL = {18'h0, out_reg[17:0]}; | 
|  | end | 
|  | endgenerate | 
|  |  | 
|  | case (RD_DATA_WIDTH) | 
|  | 8, 9: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 8, 9: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_9, MODE_9, MODE_9, MODE_9, 1'b0 | 
|  | }; | 
|  |  | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  |  | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_18, MODE_9, MODE_18, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_9, MODE_18, MODE_9, MODE_18, 1'b0 | 
|  | }; | 
|  |  | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  |  | 
|  | end | 
|  | 32, 36: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_36, MODE_9, MODE_36, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_9, MODE_36, MODE_9, MODE_36, 1'b0 | 
|  | }; | 
|  |  | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  |  | 
|  | end | 
|  | default: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_9, MODE_9, MODE_9, MODE_9, 1'b0 | 
|  | }; | 
|  |  | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  |  | 
|  | end | 
|  | endcase | 
|  | end | 
|  | 16, 18: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 8, 9: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_9, MODE_18, MODE_9, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_18, MODE_9, MODE_18, MODE_9, 1'b0 | 
|  | }; | 
|  |  | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  |  | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b0 | 
|  | }; | 
|  |  | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  |  | 
|  | end | 
|  | 32, 36: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_36, MODE_18, MODE_36, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_18, MODE_36, MODE_18, MODE_36, 1'b0 | 
|  | }; | 
|  |  | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  |  | 
|  | end | 
|  | default: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b0 | 
|  | }; | 
|  |  | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  |  | 
|  | end | 
|  | endcase | 
|  | end | 
|  | 32, 36: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 8, 9: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_9, MODE_36, MODE_9, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_36, MODE_9, MODE_36, MODE_9, 1'b0 | 
|  | }; | 
|  |  | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  |  | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_18, MODE_36, MODE_18, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_36, MODE_18, MODE_36, MODE_18, 1'b0 | 
|  | }; | 
|  |  | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  |  | 
|  | end | 
|  | 32, 36: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_36, MODE_36, MODE_36, MODE_36, 1'b0 | 
|  | }; | 
|  |  | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  |  | 
|  | end | 
|  | default: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_36, MODE_36, MODE_36, MODE_36, 1'b0 | 
|  | }; | 
|  |  | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  |  | 
|  | end | 
|  | endcase | 
|  | end | 
|  | default: begin | 
|  | case (WR_DATA_WIDTH) | 
|  | 8, 9: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_9, MODE_9, MODE_9, MODE_9, 1'b0 | 
|  | }; | 
|  |  | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  |  | 
|  | end | 
|  | 16, 18: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_18, MODE_18, MODE_18, MODE_18, 1'b0 | 
|  | }; | 
|  |  | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  |  | 
|  | end | 
|  | 32, 36: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_36, MODE_36, MODE_36, MODE_36, 1'b0 | 
|  | }; | 
|  |  | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  |  | 
|  | end | 
|  | default: begin | 
|  | defparam U1.MODE_BITS = { 1'b0, | 
|  | 11'd10, 11'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0, | 
|  | UPAF_DBITS, UPAE_DBITS, 4'h1, MODE_36, MODE_36, MODE_36, MODE_36, 1'b0 | 
|  | }; | 
|  |  | 
|  | (* is_fifo = 1 *) | 
|  | (* sync_fifo = 0 *) | 
|  | (* rd_data_width = RD_DATA_WIDTH *) | 
|  | (* wr_data_width = WR_DATA_WIDTH *) | 
|  | TDP36K U1 ( | 
|  | .RESET_ni(1'b1), | 
|  | .WDATA_A1_i(in_reg[17:0]), | 
|  | .WDATA_A2_i(in_reg[35:18]), | 
|  | .RDATA_A1_o(fifo_flags), | 
|  | .RDATA_A2_o(), | 
|  | .ADDR_A1_i(14'h0), | 
|  | .ADDR_A2_i(14'h0), | 
|  | .CLK_A1_i(Push_Clk), | 
|  | .CLK_A2_i(1'b0), | 
|  | .REN_A1_i(1'b1), | 
|  | .REN_A2_i(1'b0), | 
|  | .WEN_A1_i(PUSH), | 
|  | .WEN_A2_i(1'b0), | 
|  | .BE_A1_i(2'b11), | 
|  | .BE_A2_i(2'b11), | 
|  |  | 
|  | .WDATA_B1_i(18'h0), | 
|  | .WDATA_B2_i(18'h0), | 
|  | .RDATA_B1_o(out_reg[17:0]), | 
|  | .RDATA_B2_o(out_reg[35:18]), | 
|  | .ADDR_B1_i(14'h0), | 
|  | .ADDR_B2_i(14'h0), | 
|  | .CLK_B1_i(Pop_Clk), | 
|  | .CLK_B2_i(1'b0), | 
|  | .REN_B1_i(POP), | 
|  | .REN_B2_i(1'b0), | 
|  | .WEN_B1_i(1'b0), | 
|  | .WEN_B2_i(1'b0), | 
|  | .BE_B1_i(2'b11), | 
|  | .BE_B2_i(2'b11), | 
|  |  | 
|  | .FLUSH1_i(Async_Flush), | 
|  | .FLUSH2_i(1'b0) | 
|  | ); | 
|  |  | 
|  | end | 
|  | endcase | 
|  | end | 
|  | endcase | 
|  |  | 
|  | assign DOUT[RD_DATA_WIDTH-1 : 0] = RD_DATA_CMPL[RD_DATA_WIDTH-1 : 0]; | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | //=============================================================================== | 
|  | module TDP36K_FIFO_ASYNC_WR_X9_RD_X9_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_ASYNC_WR_X9_RD_X18_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_ASYNC_WR_X9_RD_X36_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_ASYNC_WR_X18_RD_X9_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_ASYNC_WR_X18_RD_X18_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_ASYNC_WR_X18_RD_X36_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_ASYNC_WR_X36_RD_X9_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_ASYNC_WR_X36_RD_X18_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_ASYNC_WR_X36_RD_X36_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  |  | 
|  | module TDP36K_FIFO_ASYNC_WR_X9_RD_X9_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_ASYNC_WR_X9_RD_X18_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_ASYNC_WR_X18_RD_X9_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_ASYNC_WR_X18_RD_X18_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_SYNC_WR_X9_RD_X9_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_SYNC_WR_X9_RD_X18_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_SYNC_WR_X9_RD_X36_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_SYNC_WR_X18_RD_X9_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_SYNC_WR_X18_RD_X18_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_SYNC_WR_X18_RD_X36_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_SYNC_WR_X36_RD_X9_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_SYNC_WR_X36_RD_X18_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_SYNC_WR_X36_RD_X36_nonsplit ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  |  | 
|  | module TDP36K_FIFO_SYNC_WR_X9_RD_X9_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_SYNC_WR_X9_RD_X18_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_SYNC_WR_X18_RD_X9_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule | 
|  |  | 
|  | module TDP36K_FIFO_SYNC_WR_X18_RD_X18_split ( | 
|  | RESET_ni, | 
|  | WEN_A1_i,   WEN_B1_i, | 
|  | REN_A1_i,   REN_B1_i, | 
|  | CLK_A1_i,   CLK_B1_i, | 
|  | BE_A1_i,    BE_B1_i, | 
|  | ADDR_A1_i,  ADDR_B1_i, | 
|  | WDATA_A1_i, WDATA_B1_i, | 
|  | RDATA_A1_o, RDATA_B1_o, | 
|  | FLUSH1_i, | 
|  | WEN_A2_i,   WEN_B2_i, | 
|  | REN_A2_i,   REN_B2_i, | 
|  | CLK_A2_i,   CLK_B2_i, | 
|  | BE_A2_i,    BE_B2_i, | 
|  | ADDR_A2_i,  ADDR_B2_i, | 
|  | WDATA_A2_i, WDATA_B2_i, | 
|  | RDATA_A2_o, RDATA_B2_o, | 
|  | FLUSH2_i | 
|  | ); | 
|  | parameter [80:0] MODE_BITS = 81'd0; | 
|  |  | 
|  | input wire  RESET_ni; | 
|  | input wire  WEN_A1_i, WEN_B1_i; | 
|  | input wire  REN_A1_i, REN_B1_i; | 
|  | input wire  WEN_A2_i, WEN_B2_i; | 
|  | input wire  REN_A2_i, REN_B2_i; | 
|  |  | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B1_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_A2_i; | 
|  | (* clkbuf_sink *) | 
|  | input wire  CLK_B2_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A1_i,    BE_B1_i; | 
|  | input wire  [14:0] ADDR_A1_i,  ADDR_B1_i; | 
|  | input wire  [17:0] WDATA_A1_i, WDATA_B1_i; | 
|  | output wire [17:0] RDATA_A1_o, RDATA_B1_o; | 
|  |  | 
|  | input wire  FLUSH1_i; | 
|  |  | 
|  | input wire  [ 1:0] BE_A2_i,    BE_B2_i; | 
|  | input wire  [13:0] ADDR_A2_i,  ADDR_B2_i; | 
|  | input wire  [17:0] WDATA_A2_i, WDATA_B2_i; | 
|  | output wire [17:0] RDATA_A2_o, RDATA_B2_o; | 
|  |  | 
|  | input wire  FLUSH2_i; | 
|  |  | 
|  | TDP36K #(.MODE_BITS(MODE_BITS)) bram ( | 
|  | .RESET_ni   (RESET_ni), | 
|  | .WEN_A1_i   (WEN_A1_i),   .WEN_B1_i   (WEN_B1_i), | 
|  | .REN_A1_i   (REN_A1_i),   .REN_B1_i   (REN_B1_i), | 
|  | .CLK_A1_i   (CLK_A1_i),   .CLK_B1_i   (CLK_B1_i), | 
|  | .BE_A1_i    (BE_A1_i),    .BE_B1_i    (BE_B1_i), | 
|  | .ADDR_A1_i  (ADDR_A1_i),  .ADDR_B1_i  (ADDR_B1_i), | 
|  | .WDATA_A1_i (WDATA_A1_i), .WDATA_B1_i (WDATA_B1_i), | 
|  | .RDATA_A1_o (RDATA_A1_o), .RDATA_B1_o (RDATA_B1_o), | 
|  | .FLUSH1_i   (FLUSH1_i), | 
|  | .WEN_A2_i   (WEN_A2_i),   .WEN_B2_i   (WEN_B2_i), | 
|  | .REN_A2_i   (REN_A2_i),   .REN_B2_i   (REN_B2_i), | 
|  | .CLK_A2_i   (CLK_A2_i),   .CLK_B2_i   (CLK_B2_i), | 
|  | .BE_A2_i    (BE_A2_i),    .BE_B2_i    (BE_B2_i), | 
|  | .ADDR_A2_i  (ADDR_A2_i),  .ADDR_B2_i  (ADDR_B2_i), | 
|  | .WDATA_A2_i (WDATA_A2_i), .WDATA_B2_i (WDATA_B2_i), | 
|  | .RDATA_A2_o (RDATA_A2_o), .RDATA_B2_o (RDATA_B2_o), | 
|  | .FLUSH2_i   (FLUSH2_i) | 
|  | ); | 
|  |  | 
|  | `ifdef SDF_SIM | 
|  | specify | 
|  | (FLUSH1_i => RDATA_A1_o[0]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[1]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[2]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[3]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[4]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[5]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[6]) = 0; | 
|  | (FLUSH1_i => RDATA_A1_o[7]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[0]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[1]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[2]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[3]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[4]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[5]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[6]) = 0; | 
|  | (FLUSH2_i => RDATA_A2_o[7]) = 0; | 
|  | (negedge RESET_ni => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (negedge RESET_ni => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | (posedge CLK_A1_i => (RDATA_A1_o +: WDATA_A1_i)) = 0; | 
|  | (posedge CLK_B1_i => (RDATA_B1_o +: WDATA_B1_i)) = 0; | 
|  | (posedge CLK_A2_i => (RDATA_A2_o +: WDATA_A2_i)) = 0; | 
|  | (posedge CLK_B2_i => (RDATA_B2_o +: WDATA_B2_i)) = 0; | 
|  | $setuphold(posedge CLK_A1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, FLUSH1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WEN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, REN_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, BE_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, ADDR_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A1_i, WDATA_A1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WEN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, REN_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, BE_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, ADDR_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_B1_i, WDATA_B1_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, FLUSH2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WEN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, REN_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, BE_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, ADDR_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_A2_i, WDATA_A2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, RESET_ni, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WEN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, REN_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, BE_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, ADDR_B2_i, 0, 0); | 
|  | $setuphold(posedge CLK_B2_i, WDATA_B2_i, 0, 0); | 
|  | endspecify | 
|  | `endif | 
|  |  | 
|  | endmodule |