SPI_Test/tb/testbench/rtl/sram_if.sv

55 lines
1.3 KiB
Systemverilog
Raw Normal View History

2024-06-25 16:41:01 +08:00
interface sram_if #(parameter ADDR_WIDTH = 8, parameter DATA_WIDTH = 32)(input bit clk);
// Signals for interfacing with the SRAM
logic [ADDR_WIDTH-1:0] addr;
logic [DATA_WIDTH-1:0] din;
logic [DATA_WIDTH-1:0] dout;
logic rden;
logic wren;
logic [DATA_WIDTH/8-1:0] wben;
modport master(
output addr,
output din,
input dout,
output wren,
output rden,
output wben
);
modport slave (
input addr,
input din,
output dout,
input wren,
input rden,
input wben
);
// write operation
task write;
input logic [ADDR_WIDTH-1:0] addr_in;
input logic [DATA_WIDTH-1:0] data_in;
input logic [DATA_WIDTH/8-1:0] byte_enable;
begin
addr = addr_in;
din = data_in;
wben = byte_enable;
wren = 1;
rden = 0;
@(posedge clk);
wren = 0;
end
endtask
// read oepration
task read;
input logic [ADDR_WIDTH-1:0] addr_in;
begin
addr = addr_in;
wren = 0;
rden = 1;
@(posedge clk);
rden = 0;
end
endtask
endinterface