getDrivingReg() update

This commit is contained in:
Dolu1990 2022-07-21 09:10:23 +02:00
parent a650000f0b
commit 54412bde30
4 changed files with 7 additions and 7 deletions

View File

@ -75,5 +75,5 @@ class Stage() extends Area{
dontSample.getOrElseUpdate(s, ArrayBuffer[Bool]()) += cond dontSample.getOrElseUpdate(s, ArrayBuffer[Bool]()) += cond
} }
def inputInit[T <: BaseType](stageable : Stageable[T],initValue : T) = def inputInit[T <: BaseType](stageable : Stageable[T],initValue : T) =
Component.current.addPrePopTask(() => inputsDefault(stageable.asInstanceOf[Stageable[Data]]).asInstanceOf[T].getDrivingReg.init(initValue)) Component.current.addPrePopTask(() => inputsDefault(stageable.asInstanceOf[Stageable[Data]]).asInstanceOf[T].getDrivingReg().init(initValue))
} }

View File

@ -530,7 +530,7 @@ case class FpuCore( portCount : Int, p : FpuParameter) extends Component{
busy := True busy := True
when(boot){ when(boot){
when(input.i2f && !patched && input.value(31) && input.arg(0)){ when(input.i2f && !patched && input.value(31) && input.arg(0)){
input.value.getDrivingReg(0, 32 bits) := B(input.value.asUInt.twoComplement(True).resize(32 bits)) input.value.getDrivingReg()(0, 32 bits) := B(input.value.asUInt.twoComplement(True).resize(32 bits))
patched := True patched := True
} otherwise { } otherwise {
shift.by := OHToUInt(OHMasking.first((ohInput).reversed)) shift.by := OHToUInt(OHMasking.first((ohInput).reversed))
@ -1318,7 +1318,7 @@ case class FpuCore( portCount : Int, p : FpuParameter) extends Component{
is(_15_XYY2){ is(_15_XYY2){
when(mulBuffer.valid) { when(mulBuffer.valid) {
state := Y_15_XYY2 state := Y_15_XYY2
mulBuffer.payload.getDrivingReg := (U"11" << mulWidth-2) - (mulBuffer.payload) mulBuffer.payload.getDrivingReg() := (U"11" << mulWidth-2) - (mulBuffer.payload)
} }
} }
is(Y_15_XYY2){ is(Y_15_XYY2){

View File

@ -371,7 +371,7 @@ class DBusCachedPlugin(val config : DataCacheConfig,
insert(MEMORY_VIRTUAL_ADDRESS) := cache.io.cpu.execute.address insert(MEMORY_VIRTUAL_ADDRESS) := cache.io.cpu.execute.address
memory.input(MEMORY_VIRTUAL_ADDRESS) memory.input(MEMORY_VIRTUAL_ADDRESS)
if(writeBack != null) addPrePopTask( () => if(writeBack != null) addPrePopTask( () =>
KeepAttribute(memory.input(MEMORY_VIRTUAL_ADDRESS).getDrivingReg) KeepAttribute(memory.input(MEMORY_VIRTUAL_ADDRESS).getDrivingReg())
) )
} }
} }
@ -528,14 +528,14 @@ class DBusCachedPlugin(val config : DataCacheConfig,
dBusAccess.rsp.error := cache.io.cpu.writeBack.unalignedAccess || cache.io.cpu.writeBack.accessError dBusAccess.rsp.error := cache.io.cpu.writeBack.unalignedAccess || cache.io.cpu.writeBack.accessError
dBusAccess.rsp.redo := cache.io.cpu.redo dBusAccess.rsp.redo := cache.io.cpu.redo
component.addPrePopTask{() => component.addPrePopTask{() =>
managementStage.input(IS_DBUS_SHARING).getDrivingReg clearWhen(dBusAccess.rsp.fire) managementStage.input(IS_DBUS_SHARING).getDrivingReg() clearWhen(dBusAccess.rsp.fire)
when(forceDatapath){ when(forceDatapath){
execute.output(REGFILE_WRITE_DATA) := dBusAccess.cmd.address.asBits execute.output(REGFILE_WRITE_DATA) := dBusAccess.cmd.address.asBits
} }
if(mmuAndBufferStage != execute) mmuAndBufferStage.input(IS_DBUS_SHARING) init(False) if(mmuAndBufferStage != execute) mmuAndBufferStage.input(IS_DBUS_SHARING) init(False)
managementStage.input(IS_DBUS_SHARING) init(False) managementStage.input(IS_DBUS_SHARING) init(False)
when(dBusAccess.rsp.valid){ when(dBusAccess.rsp.valid){
managementStage.input(IS_DBUS_SHARING).getDrivingReg := False managementStage.input(IS_DBUS_SHARING).getDrivingReg() := False
} }
} }
} }

View File

@ -390,7 +390,7 @@ abstract class IBusFetcherImpl(val resetVector : BigInt,
//Check if the decode instruction is driven by a register //Check if the decode instruction is driven by a register
val instructionDriver = try { val instructionDriver = try {
decode.input(INSTRUCTION).getDrivingReg decode.input(INSTRUCTION).getDrivingReg()
} catch { } catch {
case _: Throwable => null case _: Throwable => null
} }