Esempio n. 1
0
    def _declr(self):
        addClkRstn(self)

        self.cntrl = HandshakeSync()

        self.COUNTER_WIDTH = log2ceil(self.ITERATIONS)
        self.index = VectSignal(self.COUNTER_WIDTH)._m()
        self.body = HandshakeSync()._m()
        self.bodyBreak = Signal()
Esempio n. 2
0
 def _declr(self):
     with self._paramsShared():
         addClkRstn(self)
         self.doIncr = Signal()
         self.doFlip = HandshakeSync()
         self.data = RegCntrl()
         self.cntr = FlipRegister()
Esempio n. 3
0
    def _declr(self):
        assert self.HAS_R or self.HAS_W, "has to have at least read or write part"

        self.addr = VectSignal(self.ADDR_WIDTH)
        DATA_WIDTH = self.DATA_WIDTH
        if self.HAS_W:
            self.din = VectSignal(DATA_WIDTH)

        if self.HAS_R:
            self.dout = VectSignal(DATA_WIDTH, masterDir=DIRECTION.IN)

        self.en = HandshakeSync()
        if (self.HAS_R and self.HAS_W) or (self.HAS_W and self.HAS_BE):
            # in write only mode we do not need this as well as we can use "en"
            if self.HAS_BE:
                assert DATA_WIDTH % 8 == 0, DATA_WIDTH
                self.we = VectSignal(DATA_WIDTH // 8)
            else:
                self.we = Signal()

        if self.HAS_W and self.HAS_BE:
            self.do_accumulate = Signal()
            self.do_overwrite = Signal()

        if self.HAS_R and self.HAS_BE:
            assert self.DATA_WIDTH % 8 == 0
            self.dout_mask = VectSignal(self.DATA_WIDTH // 8,
                                        masterDir=DIRECTION.IN)
Esempio n. 4
0
    def _declr(self):
        with self._paramsShared():
            # user requests
            self.req = AddrSizeHs()

        with self._paramsShared(exclude=({"ID_WIDTH"}, set())):
            self.w = AxiStream()

        if self.ID_WIDTH:
            ack = Handshaked(masterDir=DIRECTION.IN)
            ack.DATA_WIDTH = self.ID_WIDTH
        else:
            ack = HandshakeSync(masterDir=DIRECTION.IN)

        self.ack = ack
Esempio n. 5
0
    def _declr(self):
        addClkRstn(self)
        ITEM_INDEX_WIDTH = log2ceil(self.ITEMS - 1)

        # mark item as complete and ready to be read out
        self.write_confirm = HandshakeSync()

        # begin the read of the item
        # :note: this interface is master as it providesthe information about the read execution
        wl = self.read_execute = IndexKeyHs()._m()
        wl.KEY_WIDTH = self.KEY_WIDTH
        wl.INDEX_WIDTH = ITEM_INDEX_WIDTH

        # confirm that the item was read and the item in fifo is ready to be used again
        pc = self.read_confirm = Handshaked()
        pc.DATA_WIDTH = ITEM_INDEX_WIDTH
Esempio n. 6
0
    def _declr(self):
        addClkRstn(self)

        self.tick1 = HandshakeSync()._m()
        self.tick2 = HandshakeSync()._m()
        self.tick16 = HandshakeSync()._m()

        self.tick17 = HandshakeSync()._m()
        self.tick34 = HandshakeSync()._m()

        self.tick256 = HandshakeSync()._m()

        self.tick384 = HandshakeSync()._m()
        self.core = TimerInfoTest()
Esempio n. 7
0
    def _declr_outer_io(self):
        addClkRstn(self)
        assert self.TABLE_SIZE % self.TABLE_CNT == 0
        self.HASH_WIDTH = log2ceil(self.TABLE_SIZE // self.TABLE_CNT)

        with self._paramsShared():
            self.insert = CInsertIntf()
            self.insertRes = CInsertResIntf()._m()
            self.lookup = LookupKeyIntf()
            self.lookupRes = LookupResultIntf()._m()
            self.lookupRes.HASH_WIDTH = self.HASH_WIDTH

        with self._paramsShared(exclude=({"DATA_WIDTH"}, set())):
            self.delete = CInsertIntf()
            self.delete.DATA_WIDTH = 0

        self.clean = HandshakeSync()
Esempio n. 8
0
    def _declr(self):
        addClkRstn(self)
        self.parseTemplate()
        self.dataIn = StructIntf(self._structT,
                                 self._createInterfaceForField)

        s = self.set = Handshaked()  # data signal is addr of structure to write
        s._replaceParam(s.DATA_WIDTH, self.ADDR_WIDTH)
        # write ack from slave
        self.writeAck = HandshakeSync()._m()

        with self._paramsShared():
            # interface for communication with datapump
            self.wDatapump = AxiWDatapumpIntf()._m()
            self.wDatapump.MAX_LEN.set(self.maxWordIndex() + 1)

        self.frameAssember = AxiS_frameForge(self._structT,
                                             tmpl=self._tmpl,
                                             frames=self._frames)
Esempio n. 9
0
    def _declr(self):
        addClkRstn(self)
        self.parseTemplate()
        self.dataIn = StructIntf(self._structT, tuple(),
                                 self._createInterfaceForField)

        s = self.set = Handshaked(
        )  # data signal is addr of structure to write
        s.DATA_WIDTH = self.ADDR_WIDTH
        # write ack from slave
        self.writeAck = HandshakeSync()._m()

        with self._paramsShared():
            # interface for communication with datapump
            self.wDatapump = AxiWDatapumpIntf()._m()
            self.wDatapump.MAX_BYTES = self.maxBytesInTransaction()

            self.frameAssember = AxiS_frameDeparser(self._structT,
                                                    tmpl=self._tmpl,
                                                    frames=self._frames)
Esempio n. 10
0
    def _declr(self):
        addClkRstn(self)
        self.TABLE_CNT = len(self.POLYNOMIALS)
        self.HASH_WITH = log2ceil(self.TABLE_SIZE).val

        with self._paramsShared():
            self.insert = CInsertIntf()

            self.lookup = LookupKeyIntf()

            self.lookupRes = LookupResultIntf()._m()
            self.lookupRes.HASH_WIDTH.set(self.HASH_WITH)

        with self._paramsShared(exclude=[self.DATA_WIDTH]):
            self.delete = CInsertIntf()
            self.delete.DATA_WIDTH.set(0)

        self.clean = HandshakeSync()

        with self._paramsShared():
            self.tables = HObjList(HashTableCore(p) for p in self.POLYNOMIALS)
            for t in self.tables:
                t.ITEMS_CNT.set(self.TABLE_SIZE)
                t.LOOKUP_HASH.set(True)
Esempio n. 11
0
 def _declr(self):
     addClkRstn(self)
     self.dataIn = HandshakeSync()
     self.dataOut = HandshakeSync()._m()