def __init__(self, dfg, nbits): self._nbits = nbits self._r_magic = RegisterField("magic", 16, access_bus=READ_ONLY, access_dev=WRITE_ONLY) self._r_neps = RegisterField("neps", 8, access_bus=READ_ONLY, access_dev=WRITE_ONLY) self._r_nbits = RegisterField("nbits", 8, access_bus=READ_ONLY, access_dev=WRITE_ONLY) self._r_freeze = RegisterField("freeze", 1) self._r_reset = RegisterRaw("reset", 1) self.order = [] DFGHook.__init__(self, dfg, self._create)
def get_fragment(self): comb = [ self._r_magic.field.w.eq(ISD_MAGIC), self._r_neps.field.w.eq(len(self.order)), self._r_nbits.field.w.eq(self._nbits) ] for h in self.hooks_iter(): comb += [ h.freeze.eq(self._r_freeze.field.r), h.reset.eq(self._r_reset.re) ] return Fragment(comb) + DFGHook.get_fragment(self)
def __init__(self, dfg, nbits): self._r_magic = CSRStatus(16) self._r_neps = CSRStatus(8) self._r_nbits = CSRStatus(8) self._r_freeze = CSRStorage() self._r_reset = CSR() ### DFGHook.__init__(self, dfg, lambda u, ep, v: EndpointReporter(u.endpoints[ep], nbits)) self.comb += [ self._r_magic.status.eq(ISD_MAGIC), self._r_neps.status.eq(len(self.hooks_iter())), self._r_nbits.status.eq(nbits) ] for h in self.hooks_iter(): self.comb += [ h.freeze.eq(self._r_freeze.storage), h.reset.eq(self._r_reset.re) ]
def __init__(self, dfg, nbits): self._r_magic = CSRStatus(16) self._r_neps = CSRStatus(8) self._r_nbits = CSRStatus(8) self._r_freeze = CSRStorage() self._r_reset = CSR() ### DFGHook.__init__( self, dfg, lambda u, ep, v: EndpointReporter(getattr(u, ep), nbits)) hooks = list(self.hooks_iter()) self.comb += [ self._r_magic.status.eq(ISD_MAGIC), self._r_neps.status.eq(len(hooks)), self._r_nbits.status.eq(nbits) ] for h in hooks: self.comb += [ h.freeze.eq(self._r_freeze.storage), h.reset.eq(self._r_reset.re) ]