return '\n'.join(ret)
def mk_connection(self, name, count, fabricname, typ, name_override=None):
- if name_override: # needed for GPIO
+ if name_override: # needed for GPIO
name = name_override
print "PBase mk_conn", name, count
ret = []
return ('', 0)
return self.slow.axi_slave_idx(start, self.ifacename, count, typ)
- def axi_fastaddr_map(self, count):
+ def axi_fastaddr_map(self, name, count):
if not self.slow:
return ''
return self.slow.axi_fastaddr_map(self.ifacename, count)
- def axi_addr_map(self, count):
+ def axi_addr_map(self, name, count):
if not self.slow:
return ''
return self.slow.axi_addr_map(self.ifacename, count)
self.fastbusmode = False
for (fname, kls, indent) in (
- ('_mk_connection', MkConnection, 8),
- ('_mk_pincon', MkPinCon, 4),
- ('_mk_clk_con', MkClkCon, 8),
- ('mk_ext_ifacedef', MkExtIface, 8),
- ):
+ ('_mk_connection', MkConnection, 8),
+ ('_mk_pincon', MkPinCon, 4),
+ ('_mk_clk_con', MkClkCon, 8),
+ ('mk_ext_ifacedef', MkExtIface, 8),
+ ('axi_addr_map', MkAxiAddrMap, 8),
+ ('axi_fastaddr_map', MkAxiFastAddrMap, 8),
+ ('slowifdeclmux', MkSlowIfDeclMux, 8),
+ ):
fn = CallIfaceFn(self, kls, indent)
setattr(self, fname, types.MethodType(fn, self))
ret.append(self.data[name].extifdecl(name, i))
return '\n'.join(li(list(filter(None, ret)), 8))
- def slowifdeclmux(self, *args):
- ret = []
- for (name, count) in self.ifacecount:
- for i in range(count):
- ret.append(self.data[name].slowifdeclmux(name, i))
- return '\n'.join(li(list(filter(None, ret)), 8))
-
def fastifdecl(self, *args):
ret = []
for (name, count) in self.ifacecount:
return self._axi_num_idx(0, axi_fastslave_declarations, 'fastslave',
'fast', *args)
- def axi_fastaddr_map(self, *args):
- ret = []
- for (name, count) in self.ifacecount:
- for i in range(count):
- if self.is_on_fastbus(name, i):
- continue
- ret.append(self.data[name].axi_fastaddr_map(i))
- return '\n'.join(li(list(filter(None, ret)), 8))
-
- def axi_addr_map(self, *args):
- ret = []
- for (name, count) in self.ifacecount:
- for i in range(count):
- if self.is_on_fastbus(name, i):
- continue
- ret.append(self.data[name].axi_addr_map(i))
- return '\n'.join(li(list(filter(None, ret)), 8))
-
def mkfast_peripheral(self, *args):
ret = []
for (name, count) in self.ifacecount:
class IfaceIter(object):
- def __init__(self, name, count, *args):
+ def __init__(self, ifaces, name, count, *args):
+ self.ifaces = ifaces
self.i = 0
self.name = name
self.maxcount = count
def next(self):
return self.__next__()
-class MkConnection(IfaceIter):
+class MkSlowIfDeclMux(IfaceIter):
- def __init__(self, ifaces, name, count, *args):
- self.ifaces = ifaces
- IfaceIter.__init__(self, name, count, *args)
+ def check(self, name, i):
+ return True
+
+ def item(self, name, i):
+ return self.ifaces.data[name].slowifdeclmux(name, i)
+
+
+class MkAxiFastAddrMap(IfaceIter):
+
+ def check(self, name, i):
+ return not self.ifaces.is_on_fastbus(name, i)
+
+ def item(self, name, i):
+ return self.ifaces.data[name].axi_fastaddr_map(name, i)
+
+
+class MkAxiAddrMap(IfaceIter):
+
+ def check(self, name, i):
+ return not self.ifaces.is_on_fastbus(name, i)
+
+ def item(self, name, i):
+ return self.ifaces.data[name].axi_addr_map(name, i)
+
+
+class MkConnection(IfaceIter):
def check(self, name, i):
return not self.ifaces.is_on_fastbus(name, i)
def item(self, name, i, fabric, typ, master):
if master:
return self.ifaces.data[name].mk_master_connection(name,
- i, fabric, typ)
+ i, fabric, typ)
return self.ifaces.data[name].mk_connection(name, i, fabric, typ)
-class MkExtIface(IfaceIter):
- def __init__(self, ifaces, name, count, *args):
- self.ifaces = ifaces
- IfaceIter.__init__(self, name, count, *args)
+class MkExtIface(IfaceIter):
def check(self, name, i):
return not self.ifaces.is_on_fastbus(name, i)
class MkPinCon(IfaceIter):
- def __init__(self, ifaces, name, count, *args):
- self.ifaces = ifaces
- IfaceIter.__init__(self, name, count, *args)
-
def check(self, name, i):
return not self.ifaces.is_on_fastbus(name, i)
class MkClkCon(IfaceIter):
- def __init__(self, ifaces, name, count, *args):
- self.ifaces = ifaces
- IfaceIter.__init__(self, name, count, *args)
-
def check(self, name, i):
return not self.ifaces.is_on_fastbus(name, i)