blob: 597d02dcd6326e3fb6a2e6709ee6a364102790d9 [file] [log] [blame]
`default_nettype none
//`include "control_logic.v"
//`include "sky130_sram_1kbyte_1rw1r_32x256_8.v"
module openram_testchip(
input clk_in,
input [55:0] analyzer_packet,
input [55:0] gpio_packet,
input in_select,
output reg [31:0] sram_data
);
reg [54:0] packet;
reg chip_select;
//SRAM0
//RW Port
wire mgmt_ena0;
wire mgmt_wen0;
wire [3:0] mgmt_wen_mask0;
wire [7:0] mgmt_addr0;
wire [31:0] mgmt_wdata0;
wire [31:0] mgmt_rdata0;
//RO Port
wire mgmt_ena_ro0;
wire [7:0] mgmt_addr_ro0;
wire [31:0] mgmt_rdata_ro0;
//SRAM1
wire mgmt_ena1;
wire mgmt_wen1;
wire [3:0] mgmt_wen_mask1;
wire [7:0] mgmt_addr1;
wire [31:0] mgmt_wdata1;
wire [31:0] mgmt_rdata1;
//RO Port
wire mgmt_ena_ro1;
wire [7:0] mgmt_addr_ro1;
wire [31:0] mgmt_rdata_ro1;
//Data from SRAMs
wire [31:0] sram0_data;
wire [31:0] sram1_data;
wire [31:0] read_data;
//Read in input packet from analyzer or GPIO pins
always @(analyzer_packet, gpio_packet) begin
if(in_select == 0) begin
chip_select <= analyzer_packet[55];
packet <= analyzer_packet[54:0];
end
else if(in_select == 1) begin
chip_select <= gpio_packet[55];
packet <= gpio_packet[54:0];
end
end
//Instantitate port connections
SRAM_IN in_control(.clk_in(clk_in),
.chip_select(chip_select),
.packet(packet),
.mgmt_ena0(mgmt_ena0),
.mgmt_wen0(mgmt_wen0),
.mgmt_wen_mask0(mgmt_wen_mask0),
.mgmt_addr0(mgmt_addr0),
.mgmt_wdata0(mgmt_wdata0),
.mgmt_ena_ro0(mgmt_ena_ro0),
.mgmt_addr_ro0(mgmt_addr_ro0),
.mgmt_ena1(mgmt_ena1),
.mgmt_wen1(mgmt_wen1),
.mgmt_wen_mask1(mgmt_wen_mask1),
.mgmt_addr1(mgmt_addr1),
.mgmt_wdata1(mgmt_wdata1),
.mgmt_ena_ro1(mgmt_ena_ro1),
.mgmt_addr_ro1(mgmt_addr_ro1)
);
sky130_sram_1kbyte_1rw1r_32x256_8 SRAM_0 (
// MGMT R/W port
.clk0(clk_in),
.csb0(mgmt_ena0),
.web0(mgmt_wen0),
.wmask0(mgmt_wen_mask0),
.addr0(mgmt_addr0),
.din0(mgmt_wdata0),
.dout0(mgmt_rdata0),
// MGMT RO port
.clk1(clk_in),
.csb1(mgmt_ena_ro0),
.addr1(mgmt_addr_ro0),
.dout1(mgmt_rdata_ro0)
);
sky130_sram_1kbyte_1rw1r_32x256_8 SRAM_1 (
// MGMT R/W port
.clk0(clk_in),
.csb0(mgmt_ena1),
.web0(mgmt_wen1),
.wmask0(mgmt_wen_mask1),
.addr0(mgmt_addr1),
.din0(mgmt_wdata1),
.dout0(mgmt_rdata1),
// MGMT RO port
.clk1(clk_in),
.csb1(mgmt_ena_ro1),
.addr1(mgmt_addr_ro1),
.dout1(mgmt_rdata_ro1)
);
SRAM_DATA sram0_out(.csb0(packet[54]),
.csb1(packet[8]),
.dout0(mgmt_rdata0),
.dout1(mgmt_rdata_ro0),
.sram_data(sram0_data)
);
SRAM_DATA sram1_out(.csb0(packet[54]),
.csb1(packet[8]),
.dout0(mgmt_rdata1),
.dout1(mgmt_rdata_ro1),
.sram_data(sram1_data)
);
SRAM_OUT out_control(.chip_select(chip_select),
.sram0_data(sram0_data),
.sram1_data(sram1_data),
.sram_contents(read_data)
);
always @(read_data) begin
sram_data <= read_data;
end
endmodule
`default_nettype wire