Source code for hwtBuildsystem.examples.example_HwModule

from hwt.code import If
from hwt.hdl.types.bits import HBits
from hwt.hwIOs.std import HwIODataRdVld, HwIOBramPort_noClk
from hwt.hwIOs.utils import addClkRstn
from hwt.hwParam import HwParam
from hwt.hwModule import HwModule
from hwtBuildsystem.ioConstraints import ConstrainIo
from hwtBuildsystem.vivado.xdcGen import XdcIoStandard
from hwt.pyUtils.typingFuture import override
# from hwtBuildsystem.vivado.part import XilinxPart
# from hwtBuildsystem.quartus.part import IntelPart


[docs] class ExampleTop0(HwModule): """ Lorem Ipsum componet to have something to compile """
[docs] @override def hwConfig(self): self.DATA_WIDTH = HwParam(2)
[docs] @override def hwDeclr(self): addClkRstn(self) with self._hwParamsShared(): self.a = HwIODataRdVld() self.b = HwIODataRdVld()._m() r = self.ram_port = HwIOBramPort_noClk() r.ADDR_WIDTH = 10 r.DATA_WIDTH = 8
[docs] @override def hwImpl(self): a, b = self.a, self.b vld = self._reg("vld_delayed", def_val=0) vld(a.vld) b.vld(vld) b.data(a.data + 1) a.rd(b.rd & ~vld) ram_port = self.ram_port ram = self._sig("ram", HBits(8)[1024]) If(self.clk._onRisingEdge(), If(ram_port.en, ram_port.dout(ram[ram_port.addr]) ), If(ram_port.en & ram_port.we, ram[ram_port.addr](ram_port.din) ), )
#def r(row, start, last): # a = [] # for x in range(start, last + 1): # a.append(row + ("%d" % x)) # return a # #def p(hwIO, pinMap, ioStd=XdcIoStandard.LVCMOS18): # ConstrainIo(hwIO, pinMap, ioStd) # #if isinstance(self._target_platform, XilinxVivadoPlatform): # assert self._target_platform.part == XilinxPart( # XilinxPart.Family.kintex7, # XilinxPart.Size._160t, # XilinxPart.Package.ffg676, # XilinxPart.Speedgrade._2) # p(a.data, r("A", 8, 10) + r("A", 12, 15) + ["B9"]) # p(a.rd, ["B12", ]) # p(a.vld, ["B14", ]) # # p(b.data, ["B15", "C9"] + r("C", 11, 12) + ["C14"] + r("D", 8, 10)) # p(b.rd, ["D14", ]) # p(b.vld, ["E10", ]) # raise NotImplementedError("clk, rst_n and ram_port") #elif isinstance(self._target_platform, IntelPart): # raise NotImplementedError()