|  | // Copyright (C) 2020-2021  The SymbiFlow Authors. | 
|  | // | 
|  | // Use of this source code is governed by a ISC-style | 
|  | // license that can be found in the LICENSE file or at | 
|  | // https://opensource.org/licenses/ISC | 
|  | // | 
|  | // SPDX-License-Identifier:ISC | 
|  |  | 
|  | (* blackbox *) | 
|  | (* keep *) | 
|  | module qlal3_left_assp_macro ( | 
|  | input         A2F_ACK, | 
|  | output [ 7:0] A2F_ADDR, | 
|  | output [ 7:0] A2F_Control, | 
|  | input  [ 7:0] A2F_GP_IN, | 
|  | output [ 7:0] A2F_GP_OUT, | 
|  | input  [ 7:0] A2F_RD_DATA, | 
|  | output        A2F_REQ, | 
|  | output        A2F_RWn, | 
|  | input  [ 6:0] A2F_Status, | 
|  | output [ 7:0] A2F_WR_DATA, | 
|  | input  [31:0] Amult0, | 
|  | input  [31:0] Bmult0, | 
|  | output [63:0] Cmult0, | 
|  | input  [ 8:0] RAM0_ADDR, | 
|  | input         RAM0_CLK, | 
|  | input         RAM0_CLKS, | 
|  | output [35:0] RAM0_RD_DATA, | 
|  | input         RAM0_RD_EN, | 
|  | input         RAM0_RME_af, | 
|  | input  [ 3:0] RAM0_RM_af, | 
|  | input         RAM0_TEST1_af, | 
|  | input  [ 3:0] RAM0_WR_BE, | 
|  | input  [35:0] RAM0_WR_DATA, | 
|  | input         RAM0_WR_EN, | 
|  | input  [11:0] RAM8K_P0_ADDR, | 
|  | input         RAM8K_P0_CLK, | 
|  | input         RAM8K_P0_CLKS, | 
|  | input  [ 1:0] RAM8K_P0_WR_BE, | 
|  | input  [16:0] RAM8K_P0_WR_DATA, | 
|  | input         RAM8K_P0_WR_EN, | 
|  | input  [11:0] RAM8K_P1_ADDR, | 
|  | input         RAM8K_P1_CLK, | 
|  | input         RAM8K_P1_CLKS, | 
|  | output [16:0] RAM8K_P1_RD_DATA, | 
|  | input         RAM8K_P1_RD_EN, | 
|  | input         RAM8K_P1_mux, | 
|  | input         RAM8K_RME_af, | 
|  | input  [ 3:0] RAM8K_RM_af, | 
|  | input         RAM8K_TEST1_af, | 
|  | output        RAM8K_fifo_almost_empty, | 
|  | output        RAM8K_fifo_almost_full, | 
|  | output [ 3:0] RAM8K_fifo_empty_flag, | 
|  | input         RAM8K_fifo_en, | 
|  | output [ 3:0] RAM8K_fifo_full_flag, | 
|  | input         RESET_n, | 
|  | input         RESET_nS, | 
|  | input         SEL_18_bottom, | 
|  | input         SEL_18_left, | 
|  | input         SEL_18_right, | 
|  | input         SEL_18_top, | 
|  | input         SPI_CLK, | 
|  | input         SPI_CLKS, | 
|  | output        SPI_MISO, | 
|  | output        SPI_MISOe, | 
|  | input         SPI_MOSI, | 
|  | input         SPI_SSn, | 
|  | output        SYSCLK, | 
|  | output        SYSCLK_x2, | 
|  | input         Valid_mult0, | 
|  | input  [ 3:0] af_burnin_mode, | 
|  | input  [31:0] af_dev_id, | 
|  | input         af_fpga_int_en, | 
|  | input         af_opt_0, | 
|  | input         af_opt_1, | 
|  | input         \af_plat_id[0] , | 
|  | input         \af_plat_id[1] , | 
|  | input         \af_plat_id[2] , | 
|  | input         \af_plat_id[3] , | 
|  | input         \af_plat_id[4] , | 
|  | input         \af_plat_id[5] , | 
|  | input         \af_plat_id[6] , | 
|  | input         \af_plat_id[7] , | 
|  | input         af_spi_cpha, | 
|  | input         af_spi_cpol, | 
|  | input         af_spi_lsbf, | 
|  | input         default_SPI_IO_mux, | 
|  | input         drive_io_en_0, | 
|  | input         drive_io_en_1, | 
|  | input         drive_io_en_2, | 
|  | input         drive_io_en_3, | 
|  | input         drive_io_en_4, | 
|  | input         drive_io_en_5, | 
|  | output        fast_clk_out, | 
|  | input  [ 7:0] int_i, | 
|  | output        int_o, | 
|  | input         osc_en, | 
|  | input         osc_fsel, | 
|  | input  [ 2:0] osc_sel, | 
|  | input  [ 1:0] reg_addr_int, | 
|  | input         reg_clk_int, | 
|  | input         reg_clk_intS, | 
|  | output [ 7:0] reg_rd_data_int, | 
|  | input         reg_rd_en_int, | 
|  | input  [ 7:0] reg_wr_data_int, | 
|  | input         reg_wr_en_int | 
|  | ); | 
|  | endmodule | 
|  |  | 
|  | (* blackbox *) | 
|  | (* keep *) | 
|  | module qlal3_right_assp_macro ( | 
|  | input  [31:0] Amult1, | 
|  | input  [31:0] Bmult1, | 
|  | output [63:0] Cmult1, | 
|  | output        DrivingI2cBusOut, | 
|  | input  [ 8:0] RAM1_ADDR, | 
|  | input         RAM1_CLK, | 
|  | input         RAM1_CLKS, | 
|  | output [35:0] RAM1_RD_DATA, | 
|  | input         RAM1_RD_EN, | 
|  | input         RAM1_RME_af, | 
|  | input  [ 3:0] RAM1_RM_af, | 
|  | input         RAM1_TEST1_af, | 
|  | input  [ 3:0] RAM1_WR_BE, | 
|  | input  [35:0] RAM1_WR_DATA, | 
|  | input         RAM1_WR_EN, | 
|  | input  [ 8:0] RAM2_P0_ADDR, | 
|  | input         RAM2_P0_CLK, | 
|  | input         RAM2_P0_CLKS, | 
|  | input  [ 3:0] RAM2_P0_WR_BE, | 
|  | input  [31:0] RAM2_P0_WR_DATA, | 
|  | input         RAM2_P0_WR_EN, | 
|  | input  [ 8:0] RAM2_P1_ADDR, | 
|  | input         RAM2_P1_CLK, | 
|  | input         RAM2_P1_CLKS, | 
|  | output [31:0] RAM2_P1_RD_DATA, | 
|  | input         RAM2_P1_RD_EN, | 
|  | input         RAM2_RME_af, | 
|  | input  [ 3:0] RAM2_RM_af, | 
|  | input         RAM2_TEST1_af, | 
|  | input  [ 8:0] RAM3_P0_ADDR, | 
|  | input         RAM3_P0_CLK, | 
|  | input         RAM3_P0_CLKS, | 
|  | input  [31:0] RAM3_P0_WR_DATA, | 
|  | input  [ 3:0] RAM3_P0_WR_EN, | 
|  | input  [ 8:0] RAM3_P1_ADDR, | 
|  | input         RAM3_P1_CLK, | 
|  | input         RAM3_P1_CLKS, | 
|  | output [31:0] RAM3_P1_RD_DATA, | 
|  | input         RAM3_P1_RD_EN, | 
|  | input         RAM3_RME_af, | 
|  | input  [ 3:0] RAM3_RM_af, | 
|  | input         RAM3_TEST1_af, | 
|  | input         SCL_i, | 
|  | output        SCL_o, | 
|  | output        SCL_oen, | 
|  | input         SDA_i, | 
|  | output        SDA_o, | 
|  | output        SDA_oen, | 
|  | input         Valid_mult1, | 
|  | input         al_clr_i, | 
|  | output        al_o, | 
|  | input         al_stick_en_i, | 
|  | input         arst, | 
|  | input         arstS, | 
|  | output        i2c_busy_o, | 
|  | input         rxack_clr_i, | 
|  | output        rxack_o, | 
|  | input         rxack_stick_en_i, | 
|  | output        tip_o, | 
|  | output        wb_ack, | 
|  | input  [ 2:0] wb_adr, | 
|  | input         wb_clk, | 
|  | input         wb_clkS, | 
|  | input         wb_cyc, | 
|  | input  [ 7:0] wb_dat_i, | 
|  | output [ 7:0] wb_dat_o, | 
|  | output        wb_inta, | 
|  | input         wb_rst, | 
|  | input         wb_rstS, | 
|  | input         wb_stb, | 
|  | input         wb_we | 
|  | ); | 
|  | endmodule | 
|  |  | 
|  | // ============================================================================ | 
|  | // Cells common to ASSPL and ASSPR | 
|  |  | 
|  | (* blackbox *) | 
|  | module qlal3_mult_32x32_cell ( | 
|  | input  [31:0] Amult, | 
|  | input  [31:0] Bmult, | 
|  | input         Valid_mult, | 
|  | output [63:0] Cmult | 
|  | ); | 
|  | endmodule | 
|  |  | 
|  | (* blackbox *) | 
|  | module qlal3_ram_512x36_cell ( | 
|  | input  [ 8:0] RAM_ADDR, | 
|  | input         RAM_CLK, | 
|  | input         RAM_CLKS, | 
|  | output [35:0] RAM_RD_DATA, | 
|  | input         RAM_RD_EN, | 
|  | input         RAM_RME_af, | 
|  | input  [ 3:0] RAM_RM_af, | 
|  | input         RAM_TEST1_af, | 
|  | input  [ 3:0] RAM_WR_BE, | 
|  | input  [35:0] RAM_WR_DATA, | 
|  | input         RAM_WR_EN | 
|  | ); | 
|  | endmodule | 
|  |  | 
|  | (* blackbox *) | 
|  | module qlal3_ram_512x32_cell ( | 
|  | input  [ 8:0] RAM_P0_ADDR, | 
|  | input         RAM_P0_CLK, | 
|  | input         RAM_P0_CLKS, | 
|  | input  [ 3:0] RAM_P0_WR_BE, | 
|  | input  [31:0] RAM_P0_WR_DATA, | 
|  | input         RAM_P0_WR_EN, | 
|  | input  [ 8:0] RAM_P1_ADDR, | 
|  | input         RAM_P1_CLK, | 
|  | input         RAM_P1_CLKS, | 
|  | output [31:0] RAM_P1_RD_DATA, | 
|  | input         RAM_P1_RD_EN, | 
|  | input         RAM_RME_af, | 
|  | input  [ 3:0] RAM_RM_af, | 
|  | input         RAM_TEST1_af, | 
|  | ); | 
|  | endmodule | 
|  |  | 
|  | (* blackbox *) | 
|  | module qlal3_ram_4096x17_cell ( | 
|  | input  [11:0] RAM_P0_ADDR, | 
|  | input         RAM_P0_CLK, | 
|  | input         RAM_P0_CLKS, | 
|  | input  [ 1:0] RAM_P0_WR_BE, | 
|  | input  [16:0] RAM_P0_WR_DATA, | 
|  | input         RAM_P0_WR_EN, | 
|  | input  [11:0] RAM_P1_ADDR, | 
|  | input         RAM_P1_CLK, | 
|  | input         RAM_P1_CLKS, | 
|  | output [16:0] RAM_P1_RD_DATA, | 
|  | input         RAM_P1_RD_EN, | 
|  | input         RAM_P1_mux, | 
|  | input         RAM_RME_af, | 
|  | input  [ 3:0] RAM_RM_af, | 
|  | input         RAM_TEST1_af, | 
|  | output        RAM_fifo_almost_empty, | 
|  | output        RAM_fifo_almost_full, | 
|  | output [ 3:0] RAM_fifo_empty_flag, | 
|  | input         RAM_fifo_en, | 
|  | output [ 3:0] RAM_fifo_full_flag | 
|  | ); | 
|  | endmodule | 
|  |  | 
|  | // ============================================================================ | 
|  | // Cells specific to ASSPL | 
|  |  | 
|  | (* blackbox *) | 
|  | module qlal3_spi_cell ( | 
|  | input         A2F_ACK, | 
|  | output [ 7:0] A2F_ADDR, | 
|  | output [ 7:0] A2F_Control, | 
|  | input  [ 7:0] A2F_GP_IN, | 
|  | output [ 7:0] A2F_GP_OUT, | 
|  | input  [ 7:0] A2F_RD_DATA, | 
|  | output        A2F_REQ, | 
|  | output        A2F_RWn, | 
|  | input  [ 6:0] A2F_Status, | 
|  | output [ 7:0] A2F_WR_DATA, | 
|  |  | 
|  | input         af_spi_cpha, | 
|  | input         af_spi_cpol, | 
|  | input         af_spi_lsbf, | 
|  |  | 
|  | input         SPI_CLK, | 
|  | input         SPI_CLKS, | 
|  | output        SPI_MISO, | 
|  | output        SPI_MISOe, | 
|  | input         SPI_MOSI, | 
|  | input         SPI_SSn | 
|  | ); | 
|  | endmodule | 
|  |  | 
|  | (* blackbox *) | 
|  | module qlal3_interrupt_controller_cell ( | 
|  | input         af_fpga_int_en, | 
|  | input  [ 7:0] int_i, | 
|  | output        int_o, | 
|  |  | 
|  | input  [ 1:0] reg_addr_int, | 
|  | input         reg_clk_int, | 
|  | input         reg_clk_intS, | 
|  | output [ 7:0] reg_rd_data_int, | 
|  | input         reg_rd_en_int, | 
|  | input  [ 7:0] reg_wr_data_int, | 
|  | input         reg_wr_en_int | 
|  | ); | 
|  | endmodule | 
|  |  | 
|  | (* blackbox *) | 
|  | module qlal3_oscillator_cell ( | 
|  | input         osc_en, | 
|  | input         osc_fsel, | 
|  | input  [ 2:0] osc_sel, | 
|  | output        fast_clk_out | 
|  | ); | 
|  | endmodule | 
|  |  | 
|  | (* blackbox *) | 
|  | module qlal3_io_control_cell ( | 
|  | input         default_SPI_IO_mux, | 
|  | input         drive_io_en_0, | 
|  | input         drive_io_en_1, | 
|  | input         drive_io_en_2, | 
|  | input         drive_io_en_3, | 
|  | input         drive_io_en_4, | 
|  | input         drive_io_en_5 | 
|  | ); | 
|  | endmodule | 
|  |  | 
|  | (* blackbox *) | 
|  | module qlal3_system_cell ( | 
|  | input         RESET_n, | 
|  | input         RESET_nS, | 
|  | input         SEL_18_bottom, | 
|  | input         SEL_18_left, | 
|  | input         SEL_18_right, | 
|  | input         SEL_18_top, | 
|  | output        SYSCLK, | 
|  | output        SYSCLK_x2, | 
|  | input  [ 3:0] af_burnin_mode, | 
|  | input  [31:0] af_dev_id, | 
|  | input         af_opt_0, | 
|  | input         af_opt_1, | 
|  | input         \af_plat_id[0] , | 
|  | input         \af_plat_id[1] , | 
|  | input         \af_plat_id[2] , | 
|  | input         \af_plat_id[3] , | 
|  | input         \af_plat_id[4] , | 
|  | input         \af_plat_id[5] , | 
|  | input         \af_plat_id[6] , | 
|  | input         \af_plat_id[7] | 
|  | ); | 
|  | endmodule | 
|  |  | 
|  | // ============================================================================ | 
|  | // Cells specific to ASSPR | 
|  |  | 
|  | (* blackbox *) | 
|  | module qlal3_i2c_cell ( | 
|  | input         arst, | 
|  | input         arstS, | 
|  |  | 
|  | output        wb_ack, | 
|  | input  [ 2:0] wb_adr, | 
|  | input         wb_clk, | 
|  | input         wb_clkS, | 
|  | input         wb_cyc, | 
|  | input  [ 7:0] wb_dat_i, | 
|  | output [ 7:0] wb_dat_o, | 
|  | output        wb_inta, | 
|  | input         wb_rst, | 
|  | input         wb_rstS, | 
|  | input         wb_stb, | 
|  | input         wb_we, | 
|  |  | 
|  | input         al_clr_i, | 
|  | output        al_o, | 
|  | input         al_stick_en_i, | 
|  | output        i2c_busy_o, | 
|  | input         rxack_clr_i, | 
|  | output        rxack_o, | 
|  | input         rxack_stick_en_i, | 
|  | output        tip_o, | 
|  | output        DrivingI2cBusOut, | 
|  |  | 
|  | input         SCL_i, | 
|  | output        SCL_o, | 
|  | output        SCL_oen, | 
|  | input         SDA_i, | 
|  | output        SDA_o, | 
|  | output        SDA_oen | 
|  | ); | 
|  | endmodule | 
|  |  |