Stage 9: Full implemntation + passing tests

This commit is contained in:
2025-11-07 18:03:45 +01:00
parent 2117f8155e
commit 036f432d76
10 changed files with 197 additions and 9 deletions

View File

@@ -6,8 +6,8 @@ import chisel3.util.is
object AluOpCode extends ChiselEnum {
val Add, And, Or, Xor, ShiftLeft, ShiftRight, ShiftArithmeticRight,
LessThanSigned, LessThanUnsigned, GreaterEqualSigned, GreaterEqualUnsigned,
Equal = Value
LessThanSigned, LessThanUnsigned, GreaterEqualSigned,
GreaterEqualUnsigned, Equal = Value
}
class Alu extends Module {
@@ -22,7 +22,7 @@ class Alu extends Module {
})
io.out := 0.U;
io.flags := false.B;
io.comp_result := false.B;
switch(io.opcode) {
is(Add) {
io.out := io.a + io.b;
@@ -60,25 +60,25 @@ class Alu extends Module {
}
is(LessThanSigned) {
val less_than := io.a.asSInt < io.b.asSInt
val less_than = io.a.asSInt < io.b.asSInt
io.out := less_than
io.comp_result := less_than;
}
is(GreaterEqualUnsigned) {
val geq_than = io.a >== io.b;
val geq_than = io.a >= io.b;
io.out := geq_than
io.comp_result := geq_than;
}
is(GreaterEqualSigned) {
val geq_than := io.a.asSInt >== io.b.asSInt
val geq_than = io.a.asSInt >= io.b.asSInt
io.out := geq_than
io.comp_result := geq_than;
}
is(Equal) {
io.comp_result := io.& === io.b;
io.comp_result := io.a === io.b;
}
}