コード例 #1
0
    def test_resources_b(self):
        u = ListOfInterfacesSample3b()
        expected = {}

        s = ResourceAnalyzer()
        toRtl(u, serializer=s)
        self.assertDictEqual(s.report(), expected)
コード例 #2
0
ファイル: listOfInterfaces3.py プロジェクト: Nic30/hwtLib
    def test_resources_b(self):
        u = ListOfInterfacesSample3b()
        expected = {}

        s = ResourceAnalyzer()
        toRtl(u, serializer=s)
        self.assertDictEqual(s.report(), expected)
コード例 #3
0
 def test_latch_in_switch(self):
     u = LatchInSwitchTest()
     ra = ResourceAnalyzer()
     synthesised(u)
     ra.visit_Unit(u)
     res = ra.report()
     expected = {(ResourceMUX, 4, 6): 1, ResourceLatch: 4}
     self.assertDictEqual(res, expected)
コード例 #4
0
ファイル: listOfInterfaces3.py プロジェクト: mfkiwl/hwtLib
    def test_resources_b(self):
        u = ListOfInterfacesSample3b()
        expected = {}

        s = ResourceAnalyzer()
        synthesised(u)
        s.visit_Unit(u)
        self.assertDictEqual(s.report(), expected)
コード例 #5
0
 def test_BoolToBits(self):
     u = BoolToBitTest()
     ra = ResourceAnalyzer()
     toRtl(u, serializer=ra)
     res = ra.report()
     expected = {
         (AllOps.EQ, 4): 1,
         }
     self.assertDictEqual(res, expected)
コード例 #6
0
ファイル: switchStm_test.py プロジェクト: Nic30/hwtLib
    def test_resources(self):
        u = SwitchStmUnit()

        expected = {(ResourceMUX, 1, 4): 1}

        s = ResourceAnalyzer()
        toRtl(u, serializer=s)
        r = s.report()
        self.assertDictEqual(r, expected)
コード例 #7
0
    def test_resources_SimpleIfStatement3(self):
        u = SimpleIfStatement3()

        expected = {}

        s = ResourceAnalyzer()
        toRtl(u, serializer=s)
        r = s.report()
        self.assertDictEqual(r, expected)
コード例 #8
0
ファイル: reg_test.py プロジェクト: Nic30/hwtLib
    def test_latch_resources(self):
        u = Latch()
        expected = {
            ResourceLatch: 1,
        }

        s = ResourceAnalyzer()
        toRtl(u, serializer=s)
        self.assertDictEqual(s.report(), expected)
コード例 #9
0
    def test_sync_resources(self):
        u = SimpleSyncRom()
        expected = {
            ResourceRAM(8, 4, 0, 1, 0, 0, 0, 0, 0, 0): 1,
        }

        s = ResourceAnalyzer()
        toRtl(u, serializer=s)
        self.assertDictEqual(s.report(), expected)
コード例 #10
0
ファイル: switchStm_test.py プロジェクト: jesseclin/hwtLib
    def test_resources(self):
        u = SwitchStmUnit()

        expected = {(ResourceMUX, 1, 4): 1}

        s = ResourceAnalyzer()
        toRtl(u, serializer=s)
        r = s.report()
        self.assertDictEqual(r, expected)
コード例 #11
0
ファイル: switchStm_test.py プロジェクト: mfkiwl/hwtLib
    def test_resources(self):
        u = SwitchStmUnit()

        expected = {(ResourceMUX, 1, 4): 1}

        s = ResourceAnalyzer()
        synthesised(u)
        s.visit_Unit(u)
        r = s.report()
        self.assertDictEqual(r, expected)
コード例 #12
0
ファイル: ifStm_test.py プロジェクト: mfkiwl/hwtLib
    def test_resources_SimpleIfStatement3(self):
        u = SimpleIfStatement3()

        expected = {}

        s = ResourceAnalyzer()
        synthesised(u)
        s.visit_Unit(u)
        r = s.report()
        self.assertDictEqual(r, expected)
コード例 #13
0
ファイル: ifStm_test.py プロジェクト: Nic30/hwtLib
    def test_resources_SimpleIfStatement3(self):
        u = SimpleIfStatement3()

        expected = {
        }

        s = ResourceAnalyzer()
        toRtl(u, serializer=s)
        r = s.report()
        self.assertDictEqual(r, expected)
コード例 #14
0
 def test_BoolToBits(self):
     u = BoolToBitTest()
     ra = ResourceAnalyzer()
     synthesised(u)
     ra.visit_Unit(u)
     res = ra.report()
     expected = {
         (AllOps.EQ, 4): 1,
     }
     self.assertDictEqual(res, expected)
コード例 #15
0
    def test_sync_resources(self):
        u = SimpleSyncRam()
        expected = {
            ResourceRAM(8, 4, 0, 1, 1, 0, 0, 0, 0, 0): 1,
        }

        s = ResourceAnalyzer()
        synthesised(u)
        s.visit_Unit(u)
        self.assertDictEqual(s.report(), expected)
コード例 #16
0
 def test_latch_in_switch(self):
     u = LatchInSwitchTest()
     ra = ResourceAnalyzer()
     toRtl(u, serializer=ra)
     res = ra.report()
     expected = {
         (ResourceMUX, 4, 6): 1,
         ResourceLatch: 4
         }
     self.assertDictEqual(res, expected)
コード例 #17
0
ファイル: reg_test.py プロジェクト: mfkiwl/hwtLib
    def test_latch_resources(self):
        u = Latch()
        expected = {
            ResourceLatch: 1,
        }

        s = ResourceAnalyzer()
        synthesised(u)
        s.visit_Unit(u)
        self.assertDictEqual(s.report(), expected)
コード例 #18
0
ファイル: rom_test.py プロジェクト: Nic30/hwtLib
    def test_sync_resources(self):
        u = SimpleSyncRom()
        expected = {
            ResourceRAM(8, 4,
                        0, 1, 0, 0,
                        0, 0, 0, 0): 1,
        }

        s = ResourceAnalyzer()
        toRtl(u, serializer=s)
        self.assertDictEqual(s.report(), expected)
コード例 #19
0
ファイル: cntr_test.py プロジェクト: Nic30/hwtLib
    def test_resources_2b(self):
        u = Cntr()

        expected = {(AllOps.ADD, 2): 1,
                    # 1 for reset, one for en
                    (ResourceMUX, 2, 2): 2,
                    ResourceFF: 2}

        s = ResourceAnalyzer()
        toRtl(u, serializer=s)
        r = s.report()
        self.assertDictEqual(r, expected)
コード例 #20
0
ファイル: cntr_test.py プロジェクト: Nic30/hwtLib
    def test_resources_150b(self):
        u = Cntr()
        u.DATA_WIDTH.set(150)

        expected = {(AllOps.ADD, 150): 1,
                    # 1 for reset, one for en
                    (ResourceMUX, 150, 2): 2,
                    ResourceFF: 150}

        s = ResourceAnalyzer()
        toRtl(u, serializer=s)
        r = s.report()
        self.assertDictEqual(r, expected)
コード例 #21
0
    def test_resources_2b(self):
        u = Cntr()

        expected = {
            (AllOps.ADD, 2): 1,
            # 1 for reset, one for en
            (ResourceMUX, 2, 2): 2,
            ResourceFF: 2
        }

        s = ResourceAnalyzer()
        toRtl(u, serializer=s)
        r = s.report()
        self.assertDictEqual(r, expected)
コード例 #22
0
    def test_resources_150b(self):
        u = Cntr()
        u.DATA_WIDTH.set(150)

        expected = {
            (AllOps.ADD, 150): 1,
            # 1 for reset, one for en
            (ResourceMUX, 150, 2): 2,
            ResourceFF: 150
        }

        s = ResourceAnalyzer()
        toRtl(u, serializer=s)
        r = s.report()
        self.assertDictEqual(r, expected)
コード例 #23
0
ファイル: ifStm_test.py プロジェクト: Nic30/hwtLib
    def test_resources_SimpleIfStatement2c(self):
        u = SimpleIfStatement2c()

        expected = {
            (AllOps.AND, 1): 1,
            (AllOps.EQ, 1): 1,
            (ResourceMUX, 2, 2): 1,
            (ResourceMUX, 2, 4): 1,
            ResourceFF: 2,
        }

        s = ResourceAnalyzer()
        toRtl(u, serializer=s)
        r = s.report()
        self.assertDictEqual(r, expected)
コード例 #24
0
    def test_resources_SimpleIfStatement2c(self):
        u = SimpleIfStatement2c()

        expected = {
            (AllOps.AND, 1): 1,
            (AllOps.EQ, 1): 1,
            (ResourceMUX, 2, 2): 1,
            (ResourceMUX, 2, 4): 1,
            ResourceFF: 2,
        }

        s = ResourceAnalyzer()
        toRtl(u, serializer=s)
        r = s.report()
        self.assertDictEqual(r, expected)
コード例 #25
0
ファイル: ifStm_test.py プロジェクト: mfkiwl/hwtLib
    def test_resources_SimpleIfStatement2c(self):
        u = SimpleIfStatement2c()

        expected = {
            (AllOps.AND, 1): 1,
            (AllOps.EQ, 1): 1,
            (ResourceMUX, 2, 2): 1,
            (ResourceMUX, 2, 4): 1,
            ResourceFF: 2,
        }

        s = ResourceAnalyzer()
        synthesised(u)
        s.visit_Unit(u)
        r = s.report()
        self.assertDictEqual(r, expected)
コード例 #26
0
ファイル: showcase0.py プロジェクト: mfkiwl/hwtLib
           fRam[r1](a, fit=True),
           self.k(fRam[r1]._unsigned(), fit=True)
        )


if __name__ == "__main__":  # alias python main function
    from pprint import pprint

    from hwt.synthesizer.utils import to_rtl_str
    from hwt.serializer.hwt import HwtSerializer
    from hwt.serializer.vhdl import Vhdl2008Serializer
    from hwt.serializer.verilog import VerilogSerializer
    from hwt.serializer.systemC import SystemCSerializer

    from hwt.serializer.resourceAnalyzer.analyzer import ResourceAnalyzer
    from hwt.synthesizer.utils import synthesised

    # * new instance has to be created every time because to_rtl_str modifies the unit
    # * serializers are using templates which can be customized
    # serialized code is trying to be human and git friendly
    print(to_rtl_str(Showcase0(), serializer_cls=HwtSerializer))
    print(to_rtl_str(Showcase0(), serializer_cls=Vhdl2008Serializer))
    print(to_rtl_str(Showcase0(), serializer_cls=VerilogSerializer))
    print(to_rtl_str(Showcase0(), serializer_cls=SystemCSerializer))

    u = Showcase0()
    ra = ResourceAnalyzer()
    synthesised(u)
    ra.visit_Unit(u)
    pprint(ra.report())
コード例 #27
0
ファイル: __init__.py プロジェクト: saislam/hwt
 def visit_HdlModuleDef(self, m: HdlModuleDef) -> None:
     ResourceAnalyzer.visit_HdlModuleDef(self, m)
コード例 #28
0
ファイル: showcase0.py プロジェクト: jesseclin/hwtLib
        # note that rams are usually working on rising edge
        fRam = self._sig("fallingEdgeRam", int8_t[4])
        If(self.clk._onFallingEdge(),
           # fit can extend signal and also shrink it
           connect(a, fRam[r1], fit=True),
           connect(fRam[r1]._unsigned(), self.k, fit=True)
        )


if __name__ == "__main__":  # alias python main function
    from pprint import pprint

    from hwt.synthesizer.utils import toRtl
    from hwt.serializer.hwt.serializer import HwtSerializer
    from hwt.serializer.vhdl.serializer import VhdlSerializer
    from hwt.serializer.verilog.serializer import VerilogSerializer
    from hwt.serializer.systemC.serializer import SystemCSerializer
    from hwt.serializer.resourceAnalyzer.analyzer import ResourceAnalyzer

    # * new instance has to be created every time because toRtl is modifies the unit
    # * serializers are using templates which can be customized
    # serialized code is trying to be human and git friednly
    print(toRtl(Showcase0(), serializer=HwtSerializer))
    print(toRtl(Showcase0(), serializer=VhdlSerializer))
    print(toRtl(Showcase0(), serializer=VerilogSerializer))
    print(toRtl(Showcase0(), serializer=SystemCSerializer))

    r = ResourceAnalyzer()
    print(toRtl(Showcase0(), serializer=r))
    pprint(r.report())