1#=========================================================================
2# StructuralRTLIRGenL2Pass_test.py
3#=========================================================================
4# Author : Peitian Pan
5# Date   : May 19, 2019
6"""Test the generation of level 2 structural RTLIR."""
7
8from pymtl3.passes.rtlir.structural.StructuralRTLIRGenL2Pass import (
9    StructuralRTLIRGenL2Pass,
10)
11from pymtl3.passes.rtlir.structural.StructuralRTLIRSignalExpr import *
12from pymtl3.passes.testcases import (
13    CaseConnectArrayStructAttrToOutComp,
14    CaseConnectStructAttrToOutComp,
15)
16
17from .StructuralRTLIRGenL1Pass_test import gen_connections
18
19
20def test_L2_struct_attr():
21  a = CaseConnectStructAttrToOutComp.DUT()
22  a.elaborate()
23  a.apply( StructuralRTLIRGenL2Pass( gen_connections( a ) ) )
24  connections = a.get_metadata( StructuralRTLIRGenL2Pass.connections )
25  comp = CurComp(a, 's')
26  assert connections == \
27    [(StructAttr(CurCompAttr(comp, 'in_'), 'foo'), CurCompAttr(comp, 'out'))]
28
29def test_L2_packed_index():
30  a = CaseConnectArrayStructAttrToOutComp.DUT()
31  a.elaborate()
32  a.apply( StructuralRTLIRGenL2Pass( gen_connections( a ) ) )
33  connections = a.get_metadata( StructuralRTLIRGenL2Pass.connections )
34  comp = CurComp(a, 's')
35  assert connections == \
36    [(PackedIndex(StructAttr(CurCompAttr(comp, 'in_'), 'foo'), 1),
37      CurCompAttr(comp, 'out'))]
38