self.fname = fname
def __call__(self, suffix, offs, mux,
- start=None, limit=None, spec=None, origsuffix=None):
+ start=None, limit=None, spec=None, origsuffix=None,
+ rev=False):
bank = offs[0]
- pingroup, gangedgroup = self.pinfn(suffix, bank)
+ pf = self.pinfn(suffix, bank)
+ print ("pf", suffix, bank, pf)
+ pingroup, gangedgroup, clock = pf
+ if clock:
+ self.pinouts.clocks[self.fname] = clock
if isinstance(pingroup, tuple):
prefix, pingroup = pingroup
else:
prefix = self.fname
if start and limit: # limit turns into an offset from start
limit = start + limit
+ sk = "%s:%s" % (self.fname, str(suffix))
+ print ("pingroup pre", sk, pingroup)
pingroup = pingroup[start:limit] # see comment in spec.pinfunctions
+ if rev:
+ # reverse order of pingroup
+ pingroup.reverse()
+ print ("pingroup post", sk, pingroup)
+ if sk in self.pinouts.byspec:
+ self.pinouts.byspec[sk] += pingroup
+ else:
+ self.pinouts.byspec[sk] = deepcopy(pingroup)
pins = Pins(prefix, pingroup, self.bankspec,
suffix, offs, bank, mux,
spec, origsuffix=suffix, gangedgrp=gangedgroup)
self.pins = {}
self.fnspec = {}
self.ganged = {}
+ self.clocks = {}
+ self.byspec = {}
for fname, pinfn in pinspec:
if isinstance(pinfn, tuple):
name, pinfn = pinfn
else:
name = pinfn.__name__
- setattr(self, name, PinGen(self, fname, pinfn, self.bankspec))
+ pin = PinGen(self, fname, pinfn, self.bankspec)
+ setattr(self, name, pin)
def setganged(self, fname, grp):
grp = map(lambda x: x[:-1], grp)