end
end
- PDPW16KD #(
- .INITVAL_00(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_01(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_02(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_03(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_04(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_05(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_06(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_07(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_08(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_09(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0A(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0B(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0C(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0D(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0E(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0F(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_10(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_11(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_12(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_13(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_14(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_15(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_16(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_17(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_18(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_19(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1A(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1B(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1C(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1D(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1E(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1F(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_20(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_21(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_22(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_23(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_24(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_25(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_26(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_27(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_28(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_29(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2A(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2B(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2C(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2D(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2E(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2F(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_30(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_31(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_32(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_33(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_34(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_35(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_36(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_37(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_38(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_39(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3A(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3B(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3C(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3D(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3E(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3F(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- // Ordinarily this would be 2048 elements deep, 9 bits wide, but Yosys doesn't have support
- // for bit widths other than 36 (https://github.com/YosysHQ/yosys/issues/2143)
- // Since we don't need 2048 (or even 512) elements here, run it in 36 bit data mode with 512 elements
- .DATA_WIDTH_W(36),
- .DATA_WIDTH_R(36)
+ pinyon_ram_wishbone #(
+ .BLOCK_RAM_ADDR_BUS_WIDTH(9),
+ .BLOCK_RAM_DATA_BUS_WIDTH(8)
) lpc_fw_cycle_input_xfer_bram(
- .BE3(1'b1),
- .BE2(1'b1),
- .BE1(1'b1),
- .BE0(1'b1),
- .DI7(lpc_fw_input_xfer_write_data[7]),
- .DI6(lpc_fw_input_xfer_write_data[6]),
- .DI5(lpc_fw_input_xfer_write_data[5]),
- .DI4(lpc_fw_input_xfer_write_data[4]),
- .DI3(lpc_fw_input_xfer_write_data[3]),
- .DI2(lpc_fw_input_xfer_write_data[2]),
- .DI1(lpc_fw_input_xfer_write_data[1]),
- .DI0(lpc_fw_input_xfer_write_data[0]),
- .CSW2(1'b0),
- .CSW1(1'b0),
- .CSW0(1'b0),
- .ADW8(lpc_fw_input_xfer_write_addr[8]),
- .ADW7(lpc_fw_input_xfer_write_addr[7]),
- .ADW6(lpc_fw_input_xfer_write_addr[6]),
- .ADW5(lpc_fw_input_xfer_write_addr[5]),
- .ADW4(lpc_fw_input_xfer_write_addr[4]),
- .ADW3(lpc_fw_input_xfer_write_addr[3]),
- .ADW2(lpc_fw_input_xfer_write_addr[2]),
- .ADW1(lpc_fw_input_xfer_write_addr[1]),
- .ADW0(lpc_fw_input_xfer_write_addr[0]),
- // NOTE
- // The ECP5 block RAMs operate in a non-intuitive manner.
- // To connect both ports to the same set of memory cells, one port has to be attached
- // 1:1 in address and data lines, while the other is offset (data + 18, address + 5).
- .DO25(lpc_fw_input_xfer_read_data[7]),
- .DO24(lpc_fw_input_xfer_read_data[6]),
- .DO23(lpc_fw_input_xfer_read_data[5]),
- .DO22(lpc_fw_input_xfer_read_data[4]),
- .DO21(lpc_fw_input_xfer_read_data[3]),
- .DO20(lpc_fw_input_xfer_read_data[2]),
- .DO19(lpc_fw_input_xfer_read_data[1]),
- .DO18(lpc_fw_input_xfer_read_data[0]),
- .CSR2(1'b0),
- .CSR1(1'b0),
- .CSR0(1'b0),
- .ADR13(lpc_fw_input_xfer_read_addr[8]),
- .ADR12(lpc_fw_input_xfer_read_addr[7]),
- .ADR11(lpc_fw_input_xfer_read_addr[6]),
- .ADR10(lpc_fw_input_xfer_read_addr[5]),
- .ADR9(lpc_fw_input_xfer_read_addr[4]),
- .ADR8(lpc_fw_input_xfer_read_addr[3]),
- .ADR7(lpc_fw_input_xfer_read_addr[2]),
- .ADR6(lpc_fw_input_xfer_read_addr[1]),
- .ADR5(lpc_fw_input_xfer_read_addr[0]),
- .ADR4(1'b0),
- .ADR3(1'b0),
- .ADR2(1'b0),
- .ADR1(1'b0),
- .ADR0(1'b0),
- .CEW(lpc_fw_input_xfer_write_wren),
- .CLKW(lpc_fw_input_xfer_write_clk),
- .CER(1'b1),
- .CLKR(lpc_clock),
- .OCER(1'b1),
- .RST(1'b0)
+ .wb_read_port_clk(lpc_clock),
+ .wb_read_port_adr(lpc_fw_input_xfer_read_addr),
+ .wb_read_port_dat_r(lpc_fw_input_xfer_read_data),
+
+ .wb_write_port_clk(lpc_fw_input_xfer_write_clk),
+ .wb_write_port_cyc(lpc_fw_input_xfer_write_wren),
+ .wb_write_port_stb(lpc_fw_input_xfer_write_wren),
+ .wb_write_port_we(lpc_fw_input_xfer_write_wren),
+ .wb_write_port_adr(lpc_fw_input_xfer_write_addr),
+ .wb_write_port_dat_w(lpc_fw_input_xfer_write_data)
);
- PDPW16KD #(
- .INITVAL_00(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_01(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_02(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_03(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_04(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_05(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_06(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_07(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_08(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_09(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0A(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0B(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0C(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0D(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0E(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0F(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_10(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_11(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_12(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_13(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_14(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_15(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_16(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_17(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_18(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_19(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1A(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1B(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1C(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1D(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1E(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1F(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_20(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_21(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_22(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_23(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_24(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_25(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_26(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_27(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_28(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_29(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2A(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2B(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2C(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2D(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2E(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2F(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_30(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_31(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_32(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_33(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_34(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_35(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_36(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_37(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_38(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_39(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3A(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3B(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3C(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3D(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3E(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3F(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- // Ordinarily this would be 2048 elements deep, 9 bits wide, but Yosys doesn't have support
- // for bit widths other than 36 (https://github.com/YosysHQ/yosys/issues/2143)
- // Since we don't need 2048 (or even 512) elements here, run it in 36 bit data mode with 512 elements
- .DATA_WIDTH_W(36),
- .DATA_WIDTH_R(36)
+ pinyon_ram_wishbone #(
+ .BLOCK_RAM_ADDR_BUS_WIDTH(9),
+ .BLOCK_RAM_DATA_BUS_WIDTH(8)
) lpc_fw_cycle_output_xfer_bram(
- .BE3(1'b1),
- .BE2(1'b1),
- .BE1(1'b1),
- .BE0(1'b1),
- .DI7(lpc_fw_output_xfer_write_data[7]),
- .DI6(lpc_fw_output_xfer_write_data[6]),
- .DI5(lpc_fw_output_xfer_write_data[5]),
- .DI4(lpc_fw_output_xfer_write_data[4]),
- .DI3(lpc_fw_output_xfer_write_data[3]),
- .DI2(lpc_fw_output_xfer_write_data[2]),
- .DI1(lpc_fw_output_xfer_write_data[1]),
- .DI0(lpc_fw_output_xfer_write_data[0]),
- .CSW2(1'b0),
- .CSW1(1'b0),
- .CSW0(1'b0),
- .ADW8(lpc_fw_output_xfer_write_addr[8]),
- .ADW7(lpc_fw_output_xfer_write_addr[7]),
- .ADW6(lpc_fw_output_xfer_write_addr[6]),
- .ADW5(lpc_fw_output_xfer_write_addr[5]),
- .ADW4(lpc_fw_output_xfer_write_addr[4]),
- .ADW3(lpc_fw_output_xfer_write_addr[3]),
- .ADW2(lpc_fw_output_xfer_write_addr[2]),
- .ADW1(lpc_fw_output_xfer_write_addr[1]),
- .ADW0(lpc_fw_output_xfer_write_addr[0]),
- // NOTE
- // The ECP5 block RAMs operate in a non-intuitive manner.
- // To connect both ports to the same set of memory cells, one port has to be attached
- // 1:1 in address and data lines, while the other is offset (data + 18, address + 5).
- .DO25(lpc_fw_output_xfer_read_data[7]),
- .DO24(lpc_fw_output_xfer_read_data[6]),
- .DO23(lpc_fw_output_xfer_read_data[5]),
- .DO22(lpc_fw_output_xfer_read_data[4]),
- .DO21(lpc_fw_output_xfer_read_data[3]),
- .DO20(lpc_fw_output_xfer_read_data[2]),
- .DO19(lpc_fw_output_xfer_read_data[1]),
- .DO18(lpc_fw_output_xfer_read_data[0]),
- .CSR2(1'b0),
- .CSR1(1'b0),
- .CSR0(1'b0),
- .ADR13(lpc_fw_output_xfer_read_addr[8]),
- .ADR12(lpc_fw_output_xfer_read_addr[7]),
- .ADR11(lpc_fw_output_xfer_read_addr[6]),
- .ADR10(lpc_fw_output_xfer_read_addr[5]),
- .ADR9(lpc_fw_output_xfer_read_addr[4]),
- .ADR8(lpc_fw_output_xfer_read_addr[3]),
- .ADR7(lpc_fw_output_xfer_read_addr[2]),
- .ADR6(lpc_fw_output_xfer_read_addr[1]),
- .ADR5(lpc_fw_output_xfer_read_addr[0]),
- .ADR4(1'b0),
- .ADR3(1'b0),
- .ADR2(1'b0),
- .ADR1(1'b0),
- .ADR0(1'b0),
- .CEW(lpc_fw_output_xfer_write_wren),
- .CLKW(lpc_clock),
- .CER(1'b1),
- .CLKR(lpc_fw_output_xfer_read_clk),
- .OCER(1'b1),
- .RST(1'b0)
+ .wb_read_port_clk(lpc_fw_output_xfer_read_clk),
+ .wb_read_port_adr(lpc_fw_output_xfer_read_addr),
+ .wb_read_port_dat_r(lpc_fw_output_xfer_read_data),
+
+ .wb_write_port_clk(lpc_clock),
+ .wb_write_port_cyc(lpc_fw_output_xfer_write_wren),
+ .wb_write_port_stb(lpc_fw_output_xfer_write_wren),
+ .wb_write_port_we(lpc_fw_output_xfer_write_wren),
+ .wb_write_port_adr(lpc_fw_output_xfer_write_addr),
+ .wb_write_port_dat_w(lpc_fw_output_xfer_write_data)
);
- PDPW16KD #(
- .INITVAL_00(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_01(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_02(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_03(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_04(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_05(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_06(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_07(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_08(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_09(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0A(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0B(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0C(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0D(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0E(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0F(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_10(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_11(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_12(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_13(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_14(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_15(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_16(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_17(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_18(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_19(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1A(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1B(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1C(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1D(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1E(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1F(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_20(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_21(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_22(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_23(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_24(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_25(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_26(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_27(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_28(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_29(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2A(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2B(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2C(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2D(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2E(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2F(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_30(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_31(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_32(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_33(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_34(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_35(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_36(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_37(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_38(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_39(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3A(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3B(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3C(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3D(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3E(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3F(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- // Ordinarily this would be 2048 elements deep, 9 bits wide, but Yosys doesn't have support
- // for bit widths other than 36 (https://github.com/YosysHQ/yosys/issues/2143)
- // Since we don't need 2048 (or even 512) elements here, run it in 36 bit data mode with 512 elements
- .DATA_WIDTH_W(36),
- .DATA_WIDTH_R(36)
+ pinyon_ram_wishbone #(
+ .BLOCK_RAM_ADDR_BUS_WIDTH(9),
+ .BLOCK_RAM_DATA_BUS_WIDTH(8)
) ipmi_bt_cycle_input_xfer_bram(
- .BE3(1'b1),
- .BE2(1'b1),
- .BE1(1'b1),
- .BE0(1'b1),
- .DI7(ipmi_bt_input_xfer_write_data[7]),
- .DI6(ipmi_bt_input_xfer_write_data[6]),
- .DI5(ipmi_bt_input_xfer_write_data[5]),
- .DI4(ipmi_bt_input_xfer_write_data[4]),
- .DI3(ipmi_bt_input_xfer_write_data[3]),
- .DI2(ipmi_bt_input_xfer_write_data[2]),
- .DI1(ipmi_bt_input_xfer_write_data[1]),
- .DI0(ipmi_bt_input_xfer_write_data[0]),
- .CSW2(1'b0),
- .CSW1(1'b0),
- .CSW0(1'b0),
- .ADW8(ipmi_bt_input_xfer_write_addr[8]),
- .ADW7(ipmi_bt_input_xfer_write_addr[7]),
- .ADW6(ipmi_bt_input_xfer_write_addr[6]),
- .ADW5(ipmi_bt_input_xfer_write_addr[5]),
- .ADW4(ipmi_bt_input_xfer_write_addr[4]),
- .ADW3(ipmi_bt_input_xfer_write_addr[3]),
- .ADW2(ipmi_bt_input_xfer_write_addr[2]),
- .ADW1(ipmi_bt_input_xfer_write_addr[1]),
- .ADW0(ipmi_bt_input_xfer_write_addr[0]),
- // NOTE
- // The ECP5 block RAMs operate in a non-intuitive manner.
- // To connect both ports to the same set of memory cells, one port has to be attached
- // 1:1 in address and data lines, while the other is offset (data + 18, address + 5).
- .DO25(ipmi_bt_input_xfer_read_data[7]),
- .DO24(ipmi_bt_input_xfer_read_data[6]),
- .DO23(ipmi_bt_input_xfer_read_data[5]),
- .DO22(ipmi_bt_input_xfer_read_data[4]),
- .DO21(ipmi_bt_input_xfer_read_data[3]),
- .DO20(ipmi_bt_input_xfer_read_data[2]),
- .DO19(ipmi_bt_input_xfer_read_data[1]),
- .DO18(ipmi_bt_input_xfer_read_data[0]),
- .CSR2(1'b0),
- .CSR1(1'b0),
- .CSR0(1'b0),
- .ADR13(ipmi_bt_input_xfer_read_addr[8]),
- .ADR12(ipmi_bt_input_xfer_read_addr[7]),
- .ADR11(ipmi_bt_input_xfer_read_addr[6]),
- .ADR10(ipmi_bt_input_xfer_read_addr[5]),
- .ADR9(ipmi_bt_input_xfer_read_addr[4]),
- .ADR8(ipmi_bt_input_xfer_read_addr[3]),
- .ADR7(ipmi_bt_input_xfer_read_addr[2]),
- .ADR6(ipmi_bt_input_xfer_read_addr[1]),
- .ADR5(ipmi_bt_input_xfer_read_addr[0]),
- .ADR4(1'b0),
- .ADR3(1'b0),
- .ADR2(1'b0),
- .ADR1(1'b0),
- .ADR0(1'b0),
- .CEW(ipmi_bt_input_xfer_write_wren),
- .CLKW(ipmi_bt_input_xfer_write_clk),
- .CER(1'b1),
- .CLKR(lpc_clock),
- .OCER(1'b1),
- .RST(1'b0)
+ .wb_read_port_clk(lpc_clock),
+ .wb_read_port_adr(ipmi_bt_input_xfer_read_addr),
+ .wb_read_port_dat_r(ipmi_bt_input_xfer_read_data),
+
+ .wb_write_port_clk(ipmi_bt_input_xfer_write_clk),
+ .wb_write_port_cyc(ipmi_bt_input_xfer_write_wren),
+ .wb_write_port_stb(ipmi_bt_input_xfer_write_wren),
+ .wb_write_port_we(ipmi_bt_input_xfer_write_wren),
+ .wb_write_port_adr(ipmi_bt_input_xfer_write_addr),
+ .wb_write_port_dat_w(ipmi_bt_input_xfer_write_data)
);
- PDPW16KD #(
- .INITVAL_00(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_01(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_02(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_03(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_04(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_05(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_06(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_07(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_08(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_09(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0A(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0B(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0C(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0D(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0E(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_0F(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_10(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_11(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_12(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_13(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_14(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_15(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_16(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_17(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_18(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_19(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1A(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1B(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1C(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1D(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1E(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_1F(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_20(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_21(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_22(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_23(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_24(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_25(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_26(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_27(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_28(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_29(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2A(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2B(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2C(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2D(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2E(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_2F(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_30(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_31(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_32(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_33(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_34(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_35(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_36(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_37(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_38(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_39(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3A(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3B(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3C(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3D(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3E(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- .INITVAL_3F(320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000),
- // Ordinarily this would be 2048 elements deep, 9 bits wide, but Yosys doesn't have support
- // for bit widths other than 36 (https://github.com/YosysHQ/yosys/issues/2143)
- // Since we don't need 2048 (or even 512) elements here, run it in 36 bit data mode with 512 elements
- .DATA_WIDTH_W(36),
- .DATA_WIDTH_R(36)
+ pinyon_ram_wishbone #(
+ .BLOCK_RAM_ADDR_BUS_WIDTH(9),
+ .BLOCK_RAM_DATA_BUS_WIDTH(8)
) ipmi_bt_cycle_output_xfer_bram(
- .BE3(1'b1),
- .BE2(1'b1),
- .BE1(1'b1),
- .BE0(1'b1),
- .DI7(ipmi_bt_output_xfer_write_data[7]),
- .DI6(ipmi_bt_output_xfer_write_data[6]),
- .DI5(ipmi_bt_output_xfer_write_data[5]),
- .DI4(ipmi_bt_output_xfer_write_data[4]),
- .DI3(ipmi_bt_output_xfer_write_data[3]),
- .DI2(ipmi_bt_output_xfer_write_data[2]),
- .DI1(ipmi_bt_output_xfer_write_data[1]),
- .DI0(ipmi_bt_output_xfer_write_data[0]),
- .CSW2(1'b0),
- .CSW1(1'b0),
- .CSW0(1'b0),
- .ADW8(ipmi_bt_output_xfer_write_addr[8]),
- .ADW7(ipmi_bt_output_xfer_write_addr[7]),
- .ADW6(ipmi_bt_output_xfer_write_addr[6]),
- .ADW5(ipmi_bt_output_xfer_write_addr[5]),
- .ADW4(ipmi_bt_output_xfer_write_addr[4]),
- .ADW3(ipmi_bt_output_xfer_write_addr[3]),
- .ADW2(ipmi_bt_output_xfer_write_addr[2]),
- .ADW1(ipmi_bt_output_xfer_write_addr[1]),
- .ADW0(ipmi_bt_output_xfer_write_addr[0]),
- // NOTE
- // The ECP5 block RAMs operate in a non-intuitive manner.
- // To connect both ports to the same set of memory cells, one port has to be attached
- // 1:1 in address and data lines, while the other is offset (data + 18, address + 5).
- .DO25(ipmi_bt_output_xfer_read_data[7]),
- .DO24(ipmi_bt_output_xfer_read_data[6]),
- .DO23(ipmi_bt_output_xfer_read_data[5]),
- .DO22(ipmi_bt_output_xfer_read_data[4]),
- .DO21(ipmi_bt_output_xfer_read_data[3]),
- .DO20(ipmi_bt_output_xfer_read_data[2]),
- .DO19(ipmi_bt_output_xfer_read_data[1]),
- .DO18(ipmi_bt_output_xfer_read_data[0]),
- .CSR2(1'b0),
- .CSR1(1'b0),
- .CSR0(1'b0),
- .ADR13(ipmi_bt_output_xfer_read_addr[8]),
- .ADR12(ipmi_bt_output_xfer_read_addr[7]),
- .ADR11(ipmi_bt_output_xfer_read_addr[6]),
- .ADR10(ipmi_bt_output_xfer_read_addr[5]),
- .ADR9(ipmi_bt_output_xfer_read_addr[4]),
- .ADR8(ipmi_bt_output_xfer_read_addr[3]),
- .ADR7(ipmi_bt_output_xfer_read_addr[2]),
- .ADR6(ipmi_bt_output_xfer_read_addr[1]),
- .ADR5(ipmi_bt_output_xfer_read_addr[0]),
- .ADR4(1'b0),
- .ADR3(1'b0),
- .ADR2(1'b0),
- .ADR1(1'b0),
- .ADR0(1'b0),
- .CEW(ipmi_bt_output_xfer_write_wren),
- .CLKW(lpc_clock),
- .CER(1'b1),
- .CLKR(ipmi_bt_output_xfer_read_clk),
- .OCER(1'b1),
- .RST(1'b0)
+ .wb_read_port_clk(ipmi_bt_output_xfer_read_clk),
+ .wb_read_port_adr(ipmi_bt_output_xfer_read_addr),
+ .wb_read_port_dat_r(ipmi_bt_output_xfer_read_data),
+
+ .wb_write_port_clk(lpc_clock),
+ .wb_write_port_cyc(ipmi_bt_output_xfer_write_wren),
+ .wb_write_port_stb(ipmi_bt_output_xfer_write_wren),
+ .wb_write_port_we(ipmi_bt_output_xfer_write_wren),
+ .wb_write_port_adr(ipmi_bt_output_xfer_write_addr),
+ .wb_write_port_dat_w(ipmi_bt_output_xfer_write_data)
);
endmodule