add test assembly file
This commit is contained in:
29
hdl/core.v
29
hdl/core.v
@ -30,6 +30,8 @@ reg [31:0] r_ex_s1, r_ex_s2, r_mem_s1, r_mem_s2;
|
||||
reg [31:0] r_mem_alu_out, r_wb_alu_out;
|
||||
reg r_mem_alu_zero;
|
||||
reg r_ex_jump;
|
||||
reg r_ex_store, r_mem_store;
|
||||
reg r_ex_load, r_mem_load;
|
||||
|
||||
// IF
|
||||
reg s_if_halt;
|
||||
@ -64,6 +66,7 @@ reg [2:0] s_id_aluop;
|
||||
reg s_id_alu_seed;
|
||||
reg s_id_invalid;
|
||||
reg s_id_jump, s_id_branch;
|
||||
reg s_id_store, s_id_load;
|
||||
|
||||
// RV32I / RV64I / RV32M
|
||||
localparam OP_LUI = 7'b0110111,
|
||||
@ -97,6 +100,8 @@ localparam ALUOP_ADD = 0,
|
||||
always @(*) begin
|
||||
s_id_halt = 0;
|
||||
s_id_invalid = 0;
|
||||
s_id_store = 0;
|
||||
s_id_load = 0;
|
||||
|
||||
s_id_opcode = r_id_inst[6:0];
|
||||
s_id_rd = r_id_inst[11:7];
|
||||
@ -333,19 +338,19 @@ always @(posedge clk) begin
|
||||
// // stay halted forever
|
||||
// end else begin
|
||||
// IF
|
||||
if (!s_mem_bp) begin
|
||||
// if (!s_mem_bp) begin
|
||||
r_if_pc <= s_if_next_pc;
|
||||
end
|
||||
// end
|
||||
|
||||
// ID
|
||||
if (!s_mem_bp) begin
|
||||
// if (!s_mem_bp) begin
|
||||
r_id_stall <= s_if_stall;
|
||||
r_id_pc <= r_if_pc;
|
||||
r_id_inst <= s_if_inst;
|
||||
end
|
||||
// end
|
||||
|
||||
// EX
|
||||
if (!s_mem_bp) begin
|
||||
// if (!s_mem_bp) begin
|
||||
// TODO: also stall EX if taking branch
|
||||
r_ex_stall <= r_id_stall;
|
||||
r_ex_pc <= r_id_pc;
|
||||
@ -356,11 +361,13 @@ always @(posedge clk) begin
|
||||
r_ex_aluop <= s_id_aluop;
|
||||
r_ex_alu_seed <= s_id_alu_seed;
|
||||
r_ex_jump <= s_id_jump;
|
||||
end
|
||||
r_ex_store <= s_id_store;
|
||||
r_ex_load <= s_id_load;
|
||||
// end
|
||||
|
||||
|
||||
// MEM
|
||||
if (!s_mem_bp) begin
|
||||
// if (!s_mem_bp) begin
|
||||
r_mem_stall <= r_ex_stall;
|
||||
r_mem_pc <= r_ex_pc;
|
||||
r_mem_inst <= r_ex_inst;
|
||||
@ -369,15 +376,17 @@ always @(posedge clk) begin
|
||||
r_mem_s2 <= r_ex_s2;
|
||||
r_mem_alu_out <= s_ex_alu_out;
|
||||
r_mem_alu_zero <= s_ex_alu_zero;
|
||||
end
|
||||
r_mem_store <= r_ex_store;
|
||||
r_mem_load <= r_ex_load;
|
||||
// end
|
||||
|
||||
// WB
|
||||
if (!s_mem_bp) begin
|
||||
// if (!s_mem_bp) begin
|
||||
r_wb_stall <= r_mem_stall;
|
||||
r_wb_pc <= r_mem_pc;
|
||||
r_wb_rd <= r_mem_rd;
|
||||
r_wb_alu_out <= r_mem_alu_out;
|
||||
end
|
||||
// end
|
||||
|
||||
// Register File
|
||||
if (r_wb_rd != 0 && s_wb_write) begin
|
||||
|
Reference in New Issue
Block a user