--- /dev/null
+* MMU
+| MMUToLoadStore1Type (l_out) | LoadStore1ToMMUType (l_in) |
+| MMUToDCacheType (d_out) | DCacheToMMUType (d_in) |
+| MMUToICacheType NC (i_out) | None |
+
+* DCache
+| DCacheToLoadStore1Type (d_out) | LoadStore1ToDCacheType (d_in) |
+| DCacheToMMUType (m_out) | MMUToDCacheType (m_in) |
+| WBMasterOut (wb_out) | WBSlaveOut (wb_in) |
+| stall_out | None |
+
+* Loadstore1 -- microwatt only
+| Loadstore1ToMmuType (m_out) | MmuToLoadstore1Type (m_in) |
+| Loadstore1ToDcacheType (d_out) | DcacheToLoadstore1Type (d_in) |
+| Loadstore1ToWritebackType (l_out) | Execute1ToLoadstore1Type (l_in) |
+| Loadstore1ToExecute1Type (e_out) | None |
# TODO: ReservationStations-based.
-
# simple one-only function unit class, for test purposes
class AllFunctionUnits(Elaboratable):
"""AllFunctionUnits
"""
- def __init__(self, pspec, pilist=None, div_fsm=True):
+ def __init__(self, pspec, pilist=None, div_fsm=True,microwatt_mmu = True):
addrwid = pspec.addr_wid
units = pspec.units
if not isinstance(units, dict):
'spr': 1,
'logical': 1,
'mul': 1,
- #'mmu': 1,
'div': 1, 'shiftrot': 1}
+ if microwatt_mmu:
+ units['mmu'] = 1
alus = {'alu': ALUFunctionUnit,
'cr': CRFunctionUnit,
'branch': BranchFunctionUnit,
kls = alus[name]
for i in range(qty):
self.fus["%s%d" % (name, i)] = kls(i)
+ if microwatt_mmu:
+ print("cut here ==============================")
+ alu = self.fus["mmu0"].alu
+ print("alu",alu)
+ pi = alu.pi
+ print("pi",pi)
+ pilist = [pi]
if pilist is None:
return
for i, pi in enumerate(pilist):