X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fbsv%2Fperipheral_gen%2Fbase.py;h=53b5360b4de126901432f7683add55037ffe7c1b;hb=afc31db1d093e8427afec750191c65574ddeb1da;hp=eb9b896872f5ada6ff0f45991bbf15df57f3e4f0;hpb=ad1c3f41a3d2e7becd618e1081fc7b09bb1b5ac8;p=pinmux.git diff --git a/src/bsv/peripheral_gen/base.py b/src/bsv/peripheral_gen/base.py index eb9b896..53b5360 100644 --- a/src/bsv/peripheral_gen/base.py +++ b/src/bsv/peripheral_gen/base.py @@ -639,12 +639,12 @@ class PeripheralIface(object): 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) @@ -674,6 +674,8 @@ class PeripheralInterfaces(object): ('_mk_pincon', MkPinCon, 4), ('_mk_clk_con', MkClkCon, 8), ('mk_ext_ifacedef', MkExtIface, 8), + ('axi_addr_map', MkAxiAddrMap, 8), + ('axi_fastaddr_map', MkAxiFastAddrMap, 8), ): fn = CallIfaceFn(self, kls, indent) setattr(self, fname, types.MethodType(fn, self)) @@ -798,24 +800,6 @@ class PeripheralInterfaces(object): 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: @@ -953,7 +937,8 @@ class PeripheralInterfaces(object): 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 @@ -979,11 +964,25 @@ class IfaceIter(object): return self.__next__() -class MkConnection(IfaceIter): +class MkAxiFastAddrMap(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) + + 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) @@ -997,10 +996,6 @@ class MkConnection(IfaceIter): class MkExtIface(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) @@ -1010,10 +1005,6 @@ class MkExtIface(IfaceIter): 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) @@ -1023,10 +1014,6 @@ class MkPinCon(IfaceIter): 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)