Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions src/interfaces/mem_to_wb_if.svh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
`ifndef MEM_TO_WB_IF__HG
`define MEM_TO_WB_IF__HG

interface mem_to_wb_if;

data_t read_data;
data_t alu_result;
logic [4:0] rd;

modport from_memory
( input read_data
, input alu_result
, input rd
);

modport to_write_back
( output read_data
, output alu_result
, output rd
);

endinterface

`endif MEM_TO_WB_IF__HG
23 changes: 23 additions & 0 deletions src/stages/write_back.sv
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
`default_nettype none

module write_back
( input var logic clk
, input var logic reset

, mem_to_wb_if.from_memory memory

, output var data_t result
, output var logic [4:0] rd
);

assign rd = memory.rd;

// TODO: `REULST_SRC__ALU_OUT` is no longer covered, revisit during integration
always_comb
case (cfsm__result_src)
RESULT_SRC__DATA: result = data;
RESULT_SRC__ALU_RESULT: result = alu_result;
default: result = 32'hxxxxxxxx;
endcase

endmodule
Loading