val pins = Vec(c.width, new EnhancedPin())
val iof_0 = if (c.includeIOF) Some(Vec(c.width, new IOFPin).flip) else None
val iof_1 = if (c.includeIOF) Some(Vec(c.width, new IOFPin).flip) else None
+ val iof_2 = if (c.includeIOF) Some(Vec(c.width, new IOFPin).flip) else None
+ val iof_3 = if (c.includeIOF) Some(Vec(c.width, new IOFPin).flip) else None
}
// It would be better if the IOF were here and
iof1Ctrl(pin) <> io.port.iof_1.get(pin).o
}
- // Select IOF 0 vs. IOF 1.
+ iof2Ctrl(pin) <> swPinCtrl(pin)
+ when (io.port.iof_2.get(pin).o.valid) {
+ iof1Ctrl(pin) <> io.port.iof_2.get(pin).o
+ }
+
+ iof2Ctrl(pin) <> swPinCtrl(pin)
+ when (io.port.iof_3.get(pin).o.valid) {
+ iof1Ctrl(pin) <> io.port.iof_3.get(pin).o
+ }
+
+ // Select IOF 0 vs. IOF 1 vs. IOF 2 vs. IOF 3.
iofCtrl(pin) <> Mux(iofSelReg(pin), iof1Ctrl(pin), iof0Ctrl(pin))
// Allow SW Override for things IOF doesn't control.
// Send Value to all consumers
io.port.iof_0.get(pin).i.ival := inSyncReg(pin)
io.port.iof_1.get(pin).i.ival := inSyncReg(pin)
+ io.port.iof_2.get(pin).i.ival := inSyncReg(pin)
+ io.port.iof_3.get(pin).i.ival := inSyncReg(pin)
}
}
}