Example #1
0
	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)
Example #2
0
	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)
Example #3
0
File: isd.py Project: vic0/migen
	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)
			]
Example #4
0
    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)
            ]