[Modified] fix some bug and small change for test
This commit is contained in:
@@ -62,7 +62,6 @@ module exe_stage(
|
|||||||
wire es_src2_is_ms_dest;
|
wire es_src2_is_ms_dest;
|
||||||
wire es_data_is_rf_wdata;
|
wire es_data_is_rf_wdata;
|
||||||
|
|
||||||
wire lu_to_es_bus_r;
|
|
||||||
reg loaduse_r;
|
reg loaduse_r;
|
||||||
|
|
||||||
assign {es_alu_op , //173:155
|
assign {es_alu_op , //173:155
|
||||||
@@ -106,9 +105,6 @@ module exe_stage(
|
|||||||
wire es_inst_modw ;
|
wire es_inst_modw ;
|
||||||
wire es_inst_divwu;
|
wire es_inst_divwu;
|
||||||
wire es_inst_modwu;
|
wire es_inst_modwu;
|
||||||
wire es_inst_mulw;
|
|
||||||
wire es_inst_mulhw;
|
|
||||||
wire es_inst_mulhwu;
|
|
||||||
wire [ 1:0] div_op;
|
wire [ 1:0] div_op;
|
||||||
wire div_stall;
|
wire div_stall;
|
||||||
|
|
||||||
@@ -135,7 +131,7 @@ module exe_stage(
|
|||||||
|
|
||||||
assign es_to_lu_bus = {es_dest, es_load_op};
|
assign es_to_lu_bus = {es_dest, es_load_op};
|
||||||
|
|
||||||
assign es_ready_go = div_stall || loaduse_r;
|
assign es_ready_go = !(div_stall || loaduse_r);
|
||||||
assign es_allowin = !es_valid || es_ready_go && ms_allowin;
|
assign es_allowin = !es_valid || es_ready_go && ms_allowin;
|
||||||
assign es_to_ms_valid = es_valid && es_ready_go;
|
assign es_to_ms_valid = es_valid && es_ready_go;
|
||||||
always @(posedge clk) begin
|
always @(posedge clk) begin
|
||||||
@@ -146,6 +142,9 @@ module exe_stage(
|
|||||||
es_valid <= ds_to_es_valid;
|
es_valid <= ds_to_es_valid;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if (reset) begin
|
||||||
|
ds_to_es_bus_r <= 0;
|
||||||
|
end
|
||||||
if (ds_to_es_valid && es_allowin) begin
|
if (ds_to_es_valid && es_allowin) begin
|
||||||
ds_to_es_bus_r <= ds_to_es_bus;
|
ds_to_es_bus_r <= ds_to_es_bus;
|
||||||
end
|
end
|
||||||
@@ -216,8 +215,7 @@ module exe_stage(
|
|||||||
es_store_op[2] ? es_rf_rdata2 :
|
es_store_op[2] ? es_rf_rdata2 :
|
||||||
32'b0;
|
32'b0;
|
||||||
|
|
||||||
assign br_target = (^es_branch_op[5:0]) ? (es_pc + es_imm) :
|
assign br_target = (|es_branch_op[7:0]) ? (es_alu_result ) :
|
||||||
( es_branch_op[7:6]) ? (es_pc + es_imm) :
|
|
||||||
( es_branch_op[8] ) ? (es_rf_rdata1 + es_imm) :
|
( es_branch_op[8] ) ? (es_rf_rdata1 + es_imm) :
|
||||||
0;
|
0;
|
||||||
|
|
||||||
|
|||||||
@@ -121,10 +121,6 @@ module id_stage(
|
|||||||
wire [ 4:0] rf_raddr2;
|
wire [ 4:0] rf_raddr2;
|
||||||
wire [31:0] rf_rdata2;
|
wire [31:0] rf_rdata2;
|
||||||
|
|
||||||
wire rj_eq_rd;
|
|
||||||
wire rj_lt_rd;
|
|
||||||
wire rj_ltu_rd;
|
|
||||||
|
|
||||||
assign ds_to_es_bus = {alu_op , //173:155
|
assign ds_to_es_bus = {alu_op , //173:155
|
||||||
src1_is_pc , //154:154
|
src1_is_pc , //154:154
|
||||||
src2_is_imm , //153:153
|
src2_is_imm , //153:153
|
||||||
@@ -158,7 +154,10 @@ module id_stage(
|
|||||||
ds_valid <= fs_to_ds_valid;
|
ds_valid <= fs_to_ds_valid;
|
||||||
end
|
end
|
||||||
|
|
||||||
if (fs_to_ds_valid && ds_allowin) begin
|
if (reset) begin
|
||||||
|
fs_to_ds_bus_r <= 0;
|
||||||
|
end
|
||||||
|
else if (fs_to_ds_valid && ds_allowin) begin
|
||||||
fs_to_ds_bus_r <= fs_to_ds_bus;
|
fs_to_ds_bus_r <= fs_to_ds_bus;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -174,54 +173,54 @@ module id_stage(
|
|||||||
decoder_3_8 u_dec2(.in(op[14:12]), .out(op10_d));
|
decoder_3_8 u_dec2(.in(op[14:12]), .out(op10_d));
|
||||||
decoder_5_32 u_dec3(.in(ra ), .out(op17_d));
|
decoder_5_32 u_dec3(.in(ra ), .out(op17_d));
|
||||||
|
|
||||||
assign inst_addw = (op[21: 5] == 12'b0000_0000_0001) & op17_d[5'b00000];
|
assign inst_addw = (op[21:10] == 12'b0000_0000_0001) & op17_d[5'b00000];
|
||||||
assign inst_subw = (op[21: 5] == 12'b0000_0000_0001) & op17_d[5'b00001];
|
assign inst_subw = (op[21:10] == 12'b0000_0000_0001) & op17_d[5'b00001];
|
||||||
assign inst_slt = (op[21: 5] == 12'b0000_0000_0001) & op17_d[5'b00100];
|
assign inst_slt = (op[21:10] == 12'b0000_0000_0001) & op17_d[5'b00100];
|
||||||
assign inst_sltu = (op[21: 5] == 12'b0000_0000_0001) & op17_d[5'b00101];
|
assign inst_sltu = (op[21:10] == 12'b0000_0000_0001) & op17_d[5'b00101];
|
||||||
assign inst_nor = (op[21: 5] == 12'b0000_0000_0001) & op17_d[5'b01000];
|
assign inst_nor = (op[21:10] == 12'b0000_0000_0001) & op17_d[5'b01000];
|
||||||
assign inst_and = (op[21: 5] == 12'b0000_0000_0001) & op17_d[5'b01001];
|
assign inst_and = (op[21:10] == 12'b0000_0000_0001) & op17_d[5'b01001];
|
||||||
assign inst_or = (op[21: 5] == 12'b0000_0000_0001) & op17_d[5'b01010];
|
assign inst_or = (op[21:10] == 12'b0000_0000_0001) & op17_d[5'b01010];
|
||||||
assign inst_xor = (op[21: 5] == 12'b0000_0000_0001) & op17_d[5'b01011];
|
assign inst_xor = (op[21:10] == 12'b0000_0000_0001) & op17_d[5'b01011];
|
||||||
assign inst_sllw = (op[21: 5] == 12'b0000_0000_0001) & op17_d[5'b01110];
|
assign inst_sllw = (op[21:10] == 12'b0000_0000_0001) & op17_d[5'b01110];
|
||||||
assign inst_srlw = (op[21: 5] == 12'b0000_0000_0001) & op17_d[5'b01111];
|
assign inst_srlw = (op[21:10] == 12'b0000_0000_0001) & op17_d[5'b01111];
|
||||||
assign inst_sraw = (op[21: 5] == 12'b0000_0000_0001) & op17_d[5'b10000];
|
assign inst_sraw = (op[21:10] == 12'b0000_0000_0001) & op17_d[5'b10000];
|
||||||
assign inst_slliw = (op[21: 5] == 12'b0000_0000_0100) & op17_d[5'b00001];
|
assign inst_slliw = (op[21:10] == 12'b0000_0000_0100) & op17_d[5'b00001];
|
||||||
assign inst_srliw = (op[21: 5] == 12'b0000_0000_0100) & op17_d[5'b01001];
|
assign inst_srliw = (op[21:10] == 12'b0000_0000_0100) & op17_d[5'b01001];
|
||||||
assign inst_sraiw = (op[21: 5] == 12'b0000_0000_0100) & op17_d[5'b10001];
|
assign inst_sraiw = (op[21:10] == 12'b0000_0000_0100) & op17_d[5'b10001];
|
||||||
assign inst_mulw = (op[21: 5] == 12'b0000_0000_0001) & op17_d[5'b11000];
|
assign inst_mulw = (op[21:10] == 12'b0000_0000_0001) & op17_d[5'b11000];
|
||||||
assign inst_mulhw = (op[21: 5] == 12'b0000_0000_0001) & op17_d[5'b11001];
|
assign inst_mulhw = (op[21:10] == 12'b0000_0000_0001) & op17_d[5'b11001];
|
||||||
assign inst_mulhwu = (op[21: 5] == 12'b0000_0000_0001) & op17_d[5'b11010];
|
assign inst_mulhwu = (op[21:10] == 12'b0000_0000_0001) & op17_d[5'b11010];
|
||||||
assign inst_divw = (op[21: 5] == 12'b0000_0000_0010) & op17_d[5'b00000];
|
assign inst_divw = (op[21:10] == 12'b0000_0000_0010) & op17_d[5'b00000];
|
||||||
assign inst_modw = (op[21: 5] == 12'b0000_0000_0010) & op17_d[5'b00001];
|
assign inst_modw = (op[21:10] == 12'b0000_0000_0010) & op17_d[5'b00001];
|
||||||
assign inst_divwu = (op[21: 5] == 12'b0000_0000_0010) & op17_d[5'b00010];
|
assign inst_divwu = (op[21:10] == 12'b0000_0000_0010) & op17_d[5'b00010];
|
||||||
assign inst_modwu = (op[21: 5] == 12'b0000_0000_0010) & op17_d[5'b00011];
|
assign inst_modwu = (op[21:10] == 12'b0000_0000_0010) & op17_d[5'b00011];
|
||||||
assign inst_slti = (op[21:11] == 7'b0000_001 ) & op10_d[3'b000];
|
assign inst_slti = (op[21:15] == 7'b0000_001 ) & op10_d[3'b000];
|
||||||
assign inst_sltui = (op[21:11] == 7'b0000_001 ) & op10_d[3'b001];
|
assign inst_sltui = (op[21:15] == 7'b0000_001 ) & op10_d[3'b001];
|
||||||
assign inst_addiw = (op[21:11] == 7'b0000_001 ) & op10_d[3'b010];
|
assign inst_addiw = (op[21:15] == 7'b0000_001 ) & op10_d[3'b010];
|
||||||
assign inst_andi = (op[21:11] == 7'b0000_001 ) & op10_d[3'b101];
|
assign inst_andi = (op[21:15] == 7'b0000_001 ) & op10_d[3'b101];
|
||||||
assign inst_ori = (op[21:11] == 7'b0000_001 ) & op10_d[3'b110];
|
assign inst_ori = (op[21:15] == 7'b0000_001 ) & op10_d[3'b110];
|
||||||
assign inst_xori = (op[21:11] == 7'b0000_001 ) & op10_d[3'b111];
|
assign inst_xori = (op[21:15] == 7'b0000_001 ) & op10_d[3'b111];
|
||||||
assign inst_ldb = (op[21:11] == 7'b0010_100 ) & op10_d[3'b000];
|
assign inst_ldb = (op[21:15] == 7'b0010_100 ) & op10_d[3'b000];
|
||||||
assign inst_ldh = (op[21:11] == 7'b0010_100 ) & op10_d[3'b001];
|
assign inst_ldh = (op[21:15] == 7'b0010_100 ) & op10_d[3'b001];
|
||||||
assign inst_ldw = (op[21:11] == 7'b0010_100 ) & op10_d[3'b010];
|
assign inst_ldw = (op[21:15] == 7'b0010_100 ) & op10_d[3'b010];
|
||||||
assign inst_stb = (op[21:11] == 7'b0010_100 ) & op10_d[3'b100];
|
assign inst_stb = (op[21:15] == 7'b0010_100 ) & op10_d[3'b100];
|
||||||
assign inst_sth = (op[21:11] == 7'b0010_100 ) & op10_d[3'b101];
|
assign inst_sth = (op[21:15] == 7'b0010_100 ) & op10_d[3'b101];
|
||||||
assign inst_stw = (op[21:11] == 7'b0010_100 ) & op10_d[3'b110];
|
assign inst_stw = (op[21:15] == 7'b0010_100 ) & op10_d[3'b110];
|
||||||
assign inst_ldbu = (op[21:11] == 7'b0010_101 ) & op10_d[3'b000];
|
assign inst_ldbu = (op[21:15] == 7'b0010_101 ) & op10_d[3'b000];
|
||||||
assign inst_ldhu = (op[21:11] == 7'b0010_101 ) & op10_d[3'b001];
|
assign inst_ldhu = (op[21:15] == 7'b0010_101 ) & op10_d[3'b001];
|
||||||
assign inst_lu12iw = (op[21:17] == 4'b0001 ) & op7_d[3'b010];
|
assign inst_lu12iw = (op[21:18] == 4'b0001 ) & op7_d[3'b010];
|
||||||
assign inst_pcaddu12i = (op[21:17] == 4'b0001 ) & op7_d[3'b110];
|
assign inst_pcaddu12i = (op[21:18] == 4'b0001 ) & op7_d[3'b110];
|
||||||
assign inst_jirl = (op[21:15] == 3'b010 ) & op6_d[3'b011];
|
assign inst_jirl = (op[21:19] == 3'b010 ) & op6_d[3'b011];
|
||||||
assign inst_b = (op[21:15] == 3'b010 ) & op6_d[3'b100];
|
assign inst_b = (op[21:19] == 3'b010 ) & op6_d[3'b100];
|
||||||
assign inst_bl = (op[21:15] == 3'b010 ) & op6_d[3'b101];
|
assign inst_bl = (op[21:19] == 3'b010 ) & op6_d[3'b101];
|
||||||
assign inst_beq = (op[21:15] == 3'b010 ) & op6_d[3'b110];
|
assign inst_beq = (op[21:19] == 3'b010 ) & op6_d[3'b110];
|
||||||
assign inst_bne = (op[21:15] == 3'b010 ) & op6_d[3'b111];
|
assign inst_bne = (op[21:19] == 3'b010 ) & op6_d[3'b111];
|
||||||
assign inst_blt = (op[21:15] == 3'b011 ) & op6_d[3'b000];
|
assign inst_blt = (op[21:19] == 3'b011 ) & op6_d[3'b000];
|
||||||
assign inst_bge = (op[21:15] == 3'b011 ) & op6_d[3'b001];
|
assign inst_bge = (op[21:19] == 3'b011 ) & op6_d[3'b001];
|
||||||
assign inst_bltu = (op[21:15] == 3'b011 ) & op6_d[3'b010];
|
assign inst_bltu = (op[21:19] == 3'b011 ) & op6_d[3'b010];
|
||||||
assign inst_bgeu = (op[21:15] == 3'b011 ) & op6_d[3'b011];
|
assign inst_bgeu = (op[21:19] == 3'b011 ) & op6_d[3'b011];
|
||||||
|
|
||||||
assign alu_op[ 0] = inst_addw | inst_addiw | inst_pcaddu12i | inst_ldb | inst_ldh | inst_ldbu | inst_ldhu | inst_ldw | inst_stb | inst_sth | inst_stw | inst_bl | inst_jirl;
|
assign alu_op[ 0] = inst_addw | inst_addiw | inst_pcaddu12i | inst_ldb | inst_ldh | inst_ldbu | inst_ldhu | inst_ldw | inst_stb | inst_sth | inst_stw | inst_bl | inst_jirl | inst_b;
|
||||||
assign alu_op[ 1] = inst_subw;
|
assign alu_op[ 1] = inst_subw;
|
||||||
assign alu_op[ 2] = inst_slt | inst_slti;
|
assign alu_op[ 2] = inst_slt | inst_slti;
|
||||||
assign alu_op[ 3] = inst_sltu | inst_sltui;
|
assign alu_op[ 3] = inst_sltu | inst_sltui;
|
||||||
@@ -248,12 +247,12 @@ module id_stage(
|
|||||||
| {32{inst_slliw | inst_srliw | inst_sraiw}} & { 27'b0 , rk}
|
| {32{inst_slliw | inst_srliw | inst_sraiw}} & { 27'b0 , rk}
|
||||||
| {32{inst_b | inst_bl}} & {{4{ds_inst[9]}}, ds_inst[9:0], ds_inst[25:10], 2'b0};
|
| {32{inst_b | inst_bl}} & {{4{ds_inst[9]}}, ds_inst[9:0], ds_inst[25:10], 2'b0};
|
||||||
|
|
||||||
assign src1_is_pc = inst_bl | inst_jirl | inst_pcaddu12i;
|
assign src1_is_pc = inst_bl | inst_jirl | inst_pcaddu12i | inst_b;
|
||||||
assign src2_is_4 = inst_bl | inst_jirl;
|
assign src2_is_4 = inst_bl | inst_jirl;
|
||||||
assign src2_is_imm = inst_addiw | inst_lu12iw | inst_pcaddu12i | inst_andi | inst_ori | inst_xori | inst_slliw | inst_srliw | inst_sraiw | inst_ldb | inst_ldh | inst_ldw | inst_ldbu | inst_ldhu | inst_stb | inst_sth | inst_stw | inst_mulhwu | inst_divwu | inst_modwu;
|
assign src2_is_imm = inst_addiw | inst_lu12iw | inst_pcaddu12i | inst_andi | inst_ori | inst_xori | inst_slliw | inst_srliw | inst_sraiw | inst_ldb | inst_ldh | inst_ldw | inst_ldbu | inst_ldhu | inst_stb | inst_sth | inst_stw | inst_mulhwu | inst_divwu | inst_modwu | inst_b | inst_beq | inst_bne | inst_bge | inst_bgeu | inst_blt | inst_bltu;
|
||||||
assign dst_is_r1 = inst_bl;
|
assign dst_is_r1 = inst_bl;
|
||||||
|
|
||||||
assign reg_we = ~(inst_beq | inst_bne | inst_bge | inst_bgeu | inst_blt | inst_bltu | inst_b | inst_stw | inst_sth | inst_stb);
|
assign reg_we = ~(inst_b | inst_beq | inst_bne | inst_bge | inst_bgeu | inst_blt | inst_bltu | inst_stw | inst_sth | inst_stb);
|
||||||
assign mem_we = inst_stw | inst_sth | inst_stb;
|
assign mem_we = inst_stw | inst_sth | inst_stb;
|
||||||
assign mem_to_reg = inst_ldw | inst_ldh | inst_ldb | inst_ldhu | inst_ldbu;
|
assign mem_to_reg = inst_ldw | inst_ldh | inst_ldb | inst_ldhu | inst_ldbu;
|
||||||
assign load_op = {inst_ldhu, inst_ldbu, inst_ldw, inst_ldh, inst_ldb};
|
assign load_op = {inst_ldhu, inst_ldbu, inst_ldw, inst_ldh, inst_ldb};
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ module if_stage(
|
|||||||
end
|
end
|
||||||
|
|
||||||
if (reset) begin
|
if (reset) begin
|
||||||
fs_pc <= 32'h1bffffc; //to make nextpc be 0x1C000000 during reset
|
fs_pc <= 32'h1bff_fffc; //to make nextpc be 0x1c000000 during reset
|
||||||
end
|
end
|
||||||
else if (to_fs_valid && fs_allowin) begin
|
else if (to_fs_valid && fs_allowin) begin
|
||||||
fs_pc <= nextpc;
|
fs_pc <= nextpc;
|
||||||
|
|||||||
@@ -87,6 +87,9 @@ module mem_stage(
|
|||||||
ms_valid <= es_to_ms_valid;
|
ms_valid <= es_to_ms_valid;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if (reset) begin
|
||||||
|
es_to_ms_bus_r <= 0;
|
||||||
|
end
|
||||||
if (es_to_ms_valid && ms_allowin) begin
|
if (es_to_ms_valid && ms_allowin) begin
|
||||||
es_to_ms_bus_r <= es_to_ms_bus;
|
es_to_ms_bus_r <= es_to_ms_bus;
|
||||||
end
|
end
|
||||||
@@ -106,15 +109,15 @@ module mem_stage(
|
|||||||
ms_div_op[1] ? mod_result :
|
ms_div_op[1] ? mod_result :
|
||||||
ms_alu_result;
|
ms_alu_result;
|
||||||
|
|
||||||
assign br_taken = ( ms_branch_op[0] && ms_Zero
|
assign br_taken = ( ms_branch_op[0] & ms_Zero
|
||||||
|| ms_branch_op[1] && !ms_Zero
|
| ms_branch_op[1] & !ms_Zero
|
||||||
|| ms_branch_op[2] && (ms_Sign != ms_Overflow)
|
| ms_branch_op[2] & (ms_Sign != ms_Overflow)
|
||||||
|| ms_branch_op[3] && (ms_Zero | (ms_Sign == ms_Overflow))
|
| ms_branch_op[3] & (ms_Zero | (ms_Sign == ms_Overflow))
|
||||||
|| ms_branch_op[4] && ms_Carry
|
| ms_branch_op[4] & ms_Carry
|
||||||
|| ms_branch_op[5] && (ms_Zero | ~ms_Carry )
|
| ms_branch_op[5] & (ms_Zero | ~ms_Carry )
|
||||||
|| ms_branch_op[6]
|
| ms_branch_op[6]
|
||||||
|| ms_branch_op[7]
|
| ms_branch_op[7]
|
||||||
|| ms_branch_op[8]);
|
| ms_branch_op[8]);
|
||||||
|
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|||||||
12
lacpu/rtl/cpu/cpu_top.v → lacpu/rtl/cpu/mycpu_top.v
Executable file → Normal file
12
lacpu/rtl/cpu/cpu_top.v → lacpu/rtl/cpu/mycpu_top.v
Executable file → Normal file
@@ -5,19 +5,19 @@ module mycpu_top(
|
|||||||
input resetn,
|
input resetn,
|
||||||
// inst sram interface
|
// inst sram interface
|
||||||
output inst_sram_en,
|
output inst_sram_en,
|
||||||
output [ 3:0] inst_sram_wen,
|
output [ 3:0] inst_sram_we,
|
||||||
output [31:0] inst_sram_addr,
|
output [31:0] inst_sram_addr,
|
||||||
output [31:0] inst_sram_wdata,
|
output [31:0] inst_sram_wdata,
|
||||||
input [31:0] inst_sram_rdata,
|
input [31:0] inst_sram_rdata,
|
||||||
// data sram interface
|
// data sram interface
|
||||||
output data_sram_en,
|
output data_sram_en,
|
||||||
output [ 3:0] data_sram_wen,
|
output [ 3:0] data_sram_we,
|
||||||
output [31:0] data_sram_addr,
|
output [31:0] data_sram_addr,
|
||||||
output [31:0] data_sram_wdata,
|
output [31:0] data_sram_wdata,
|
||||||
input [31:0] data_sram_rdata,
|
input [31:0] data_sram_rdata,
|
||||||
// trace debug interface
|
// trace debug interface
|
||||||
output [31:0] debug_wb_pc,
|
output [31:0] debug_wb_pc,
|
||||||
output [ 3:0] debug_wb_rf_wen,
|
output [ 3:0] debug_wb_rf_we,
|
||||||
output [ 4:0] debug_wb_rf_wnum,
|
output [ 4:0] debug_wb_rf_wnum,
|
||||||
output [31:0] debug_wb_rf_wdata
|
output [31:0] debug_wb_rf_wdata
|
||||||
);
|
);
|
||||||
@@ -70,7 +70,7 @@ module mycpu_top(
|
|||||||
.fs_to_ds_bus (fs_to_ds_bus ),
|
.fs_to_ds_bus (fs_to_ds_bus ),
|
||||||
// inst sram interface
|
// inst sram interface
|
||||||
.inst_sram_en (inst_sram_en ),
|
.inst_sram_en (inst_sram_en ),
|
||||||
.inst_sram_wen (inst_sram_wen ),
|
.inst_sram_wen (inst_sram_we ),
|
||||||
.inst_sram_addr (inst_sram_addr ),
|
.inst_sram_addr (inst_sram_addr ),
|
||||||
.inst_sram_wdata(inst_sram_wdata),
|
.inst_sram_wdata(inst_sram_wdata),
|
||||||
.inst_sram_rdata(inst_sram_rdata)
|
.inst_sram_rdata(inst_sram_rdata)
|
||||||
@@ -122,7 +122,7 @@ module mycpu_top(
|
|||||||
.lu_to_es_bus (lu_to_es_bus ),
|
.lu_to_es_bus (lu_to_es_bus ),
|
||||||
// data sram interface
|
// data sram interface
|
||||||
.data_sram_en (data_sram_en ),
|
.data_sram_en (data_sram_en ),
|
||||||
.data_sram_wen (data_sram_wen ),
|
.data_sram_wen (data_sram_we ),
|
||||||
.data_sram_addr (data_sram_addr ),
|
.data_sram_addr (data_sram_addr ),
|
||||||
.data_sram_wdata(data_sram_wdata),
|
.data_sram_wdata(data_sram_wdata),
|
||||||
// div
|
// div
|
||||||
@@ -187,7 +187,7 @@ module mycpu_top(
|
|||||||
.ws_to_es_bus (ws_to_es_bus ),
|
.ws_to_es_bus (ws_to_es_bus ),
|
||||||
//trace debug interface
|
//trace debug interface
|
||||||
.debug_wb_pc (debug_wb_pc ),
|
.debug_wb_pc (debug_wb_pc ),
|
||||||
.debug_wb_rf_wen (debug_wb_rf_wen ),
|
.debug_wb_rf_wen (debug_wb_rf_we ),
|
||||||
.debug_wb_rf_wnum (debug_wb_rf_wnum ),
|
.debug_wb_rf_wnum (debug_wb_rf_wnum ),
|
||||||
.debug_wb_rf_wdata(debug_wb_rf_wdata)
|
.debug_wb_rf_wdata(debug_wb_rf_wdata)
|
||||||
);
|
);
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
`default_nettype wire
|
||||||
module decoder_5_32(
|
module decoder_5_32(
|
||||||
input [ 4:0] in,
|
input [ 4:0] in,
|
||||||
output [31:0] out
|
output [31:0] out
|
||||||
|
|||||||
@@ -53,6 +53,9 @@ module wb_stage(
|
|||||||
ws_valid <= ms_to_ws_valid;
|
ws_valid <= ms_to_ws_valid;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if (reset) begin
|
||||||
|
ms_to_ws_bus_r <= 0;
|
||||||
|
end
|
||||||
if (ms_to_ws_valid && ws_allowin) begin
|
if (ms_to_ws_valid && ws_allowin) begin
|
||||||
ms_to_ws_bus_r <= ms_to_ws_bus;
|
ms_to_ws_bus_r <= ms_to_ws_bus;
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -40,20 +40,20 @@ module soc_lite_top
|
|||||||
.resetn (cpu_resetn), //low active
|
.resetn (cpu_resetn), //low active
|
||||||
|
|
||||||
.inst_sram_en (cpu_inst_en ),
|
.inst_sram_en (cpu_inst_en ),
|
||||||
.inst_sram_wen (cpu_inst_wen ),
|
.inst_sram_we (cpu_inst_wen ),
|
||||||
.inst_sram_addr (cpu_inst_addr ),
|
.inst_sram_addr (cpu_inst_addr ),
|
||||||
.inst_sram_wdata (cpu_inst_wdata),
|
.inst_sram_wdata (cpu_inst_wdata),
|
||||||
.inst_sram_rdata (cpu_inst_rdata),
|
.inst_sram_rdata (cpu_inst_rdata),
|
||||||
|
|
||||||
.data_sram_en (cpu_data_en ),
|
.data_sram_en (cpu_data_en ),
|
||||||
.data_sram_wen (cpu_data_wen ),
|
.data_sram_we (cpu_data_wen ),
|
||||||
.data_sram_addr (cpu_data_addr ),
|
.data_sram_addr (cpu_data_addr ),
|
||||||
.data_sram_wdata (cpu_data_wdata),
|
.data_sram_wdata (cpu_data_wdata),
|
||||||
.data_sram_rdata (cpu_data_rdata),
|
.data_sram_rdata (cpu_data_rdata),
|
||||||
|
|
||||||
//debug
|
//debug
|
||||||
.debug_wb_pc (debug_wb_pc ),
|
.debug_wb_pc (debug_wb_pc ),
|
||||||
.debug_wb_rf_wen (debug_wb_rf_wen ),
|
.debug_wb_rf_we (debug_wb_rf_wen ),
|
||||||
.debug_wb_rf_wnum (debug_wb_rf_wnum ),
|
.debug_wb_rf_wnum (debug_wb_rf_wnum ),
|
||||||
.debug_wb_rf_wdata(debug_wb_rf_wdata)
|
.debug_wb_rf_wdata(debug_wb_rf_wdata)
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -61,13 +61,6 @@
|
|||||||
<Attr Name="UsedIn" Val="simulation"/>
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
</FileInfo>
|
</FileInfo>
|
||||||
</File>
|
</File>
|
||||||
<File Path="$PPRDIR/../../rtl/cpu/cpu_top.v">
|
|
||||||
<FileInfo>
|
|
||||||
<Attr Name="UsedIn" Val="synthesis"/>
|
|
||||||
<Attr Name="UsedIn" Val="implementation"/>
|
|
||||||
<Attr Name="UsedIn" Val="simulation"/>
|
|
||||||
</FileInfo>
|
|
||||||
</File>
|
|
||||||
<File Path="$PPRDIR/../../rtl/cpu/div.v">
|
<File Path="$PPRDIR/../../rtl/cpu/div.v">
|
||||||
<FileInfo>
|
<FileInfo>
|
||||||
<Attr Name="UsedIn" Val="synthesis"/>
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
@@ -117,6 +110,13 @@
|
|||||||
<Attr Name="UsedIn" Val="simulation"/>
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
</FileInfo>
|
</FileInfo>
|
||||||
</File>
|
</File>
|
||||||
|
<File Path="$PPRDIR/../../rtl/cpu/mycpu_top.v">
|
||||||
|
<FileInfo>
|
||||||
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
<Attr Name="UsedIn" Val="implementation"/>
|
||||||
|
<Attr Name="UsedIn" Val="simulation"/>
|
||||||
|
</FileInfo>
|
||||||
|
</File>
|
||||||
<File Path="$PPRDIR/../../rtl/cpu/regfile.v">
|
<File Path="$PPRDIR/../../rtl/cpu/regfile.v">
|
||||||
<FileInfo>
|
<FileInfo>
|
||||||
<Attr Name="UsedIn" Val="synthesis"/>
|
<Attr Name="UsedIn" Val="synthesis"/>
|
||||||
|
|||||||
Reference in New Issue
Block a user