Simplify NOP and bubble logic.
This commit is contained in:
parent
6fa8d3537a
commit
27b7c0556e
2 changed files with 11 additions and 18 deletions
|
@ -46,21 +46,11 @@ class InstructionFetch extends MultiIOModule {
|
|||
instruction := IMEM.io.instruction.asTypeOf(new Instruction)
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Setup.
|
||||
*
|
||||
* When you have added an instruction signal to this module you
|
||||
* should ensure that it is set to NOP during program loading.
|
||||
*
|
||||
* If not you will end up issuing instructions during program load
|
||||
* which will start executing before memory, registers and programs
|
||||
* are fully loaded.
|
||||
* Setup. You should not change this code.
|
||||
*/
|
||||
when(testHarness.IMEMsetup.setup) {
|
||||
PC := 0.U
|
||||
// TODO: You should probably set the instruction to Instruction.NOP here.
|
||||
// throw new Exception("Just making sure you're seeing the line above.\nYou can delete this exception now, it's found at line 64 at IF.scala")
|
||||
instruction := Instruction.NOP
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,14 +22,17 @@ class Instruction extends Bundle(){
|
|||
def immediateJType = Cat(instruction(31), instruction(19, 12), instruction(20), instruction(30, 25), instruction(24, 21), 0.U(1.W)).asSInt
|
||||
def immediateZType = instruction(19, 15).zext
|
||||
|
||||
def bubble(): Instruction = {
|
||||
val bubbled = Wire(new Instruction)
|
||||
bubbled.instruction := instruction
|
||||
bubbled.instruction(6, 0) := BitPat.bitPatToUInt(BitPat("b0010011"))
|
||||
bubbled
|
||||
}
|
||||
}
|
||||
object Instruction {
|
||||
def bubble(i: Instruction) =
|
||||
i.opcode := BitPat.bitPatToUInt(BitPat("b0010011"))
|
||||
|
||||
def default: Instruction = {
|
||||
def NOP: Instruction = {
|
||||
val w = Wire(new Instruction)
|
||||
w.instruction := 0.U
|
||||
w.instruction := BitPat.bitPatToUInt(BitPat("b00000000000000000000000000010011"))
|
||||
w
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue