示例#1
0
def local_do_test(m):
    visitor = YosysBehavioralRTLIRToSVVisitorL5(is_sverilog_reserved)
    for comp, _all_upblks in m._ref_upblk_srcs_yosys.items():
        comp.apply(BehavioralRTLIRGenPass())
        comp.apply(BehavioralRTLIRTypeCheckPass())
        upblks = comp._pass_behavioral_rtlir_gen.rtlir_upblks
        m_all_upblks = comp.get_update_blocks()
        for blk in m_all_upblks:
            upblk_src = visitor.enter(blk, upblks[blk])
            upblk_src = "\n".join(upblk_src)
            assert upblk_src == _all_upblks[blk.__name__]
def local_do_test(m):
    m.elaborate()
    m.apply(BehavioralRTLIRGenPass())
    m.apply(BehavioralRTLIRTypeCheckPass())

    visitor = BehavioralRTLIRToSVVisitorL2(is_sverilog_reserved)
    upblks = m._pass_behavioral_rtlir_gen.rtlir_upblks
    m_all_upblks = m.get_update_blocks()
    for blk in m_all_upblks:
        upblk_src = visitor.enter(blk, upblks[blk])
        upblk_src = "\n".join(upblk_src)
        assert upblk_src == m._ref_upblk_srcs[blk.__name__]
def local_do_test(m):
    m.elaborate()
    m.apply(BehavioralRTLIRGenPass())
    m.apply(BehavioralRTLIRTypeCheckPass())

    try:
        visitor = YosysBehavioralRTLIRToSVVisitorL3(is_sverilog_reserved)
        upblks = m._pass_behavioral_rtlir_gen.rtlir_upblks
        m_all_upblks = m.get_update_blocks()
        for blk in m_all_upblks:
            upblk_src = visitor.enter(blk, upblks[blk])
            upblk_src = "\n".join(upblk_src)
            assert upblk_src == m._ref_upblk_srcs_yosys[blk.__name__]
    except SVerilogTranslationError:
        if m._ref_upblk_srcs_yosys is None:
            pass
        else:
            raise
from pymtl3.passes.rtlir import BehavioralRTLIRGenPass, BehavioralRTLIRTypeCheckPass

from ....testcases import (
    CaseBehavioralArraySubCompArrayStructIfcComp,
    CaseBits32ArraySubCompAttrUpblkComp,
    CaseBits32SubCompAttrUpblkComp,
)
from ..VBehavioralTranslatorL5 import BehavioralRTLIRToVVisitorL5


def run_test(case, m):
    m.elaborate()
    visitor = BehavioralRTLIRToVVisitorL5(lambda x: x in verilog_reserved)

    m.apply(BehavioralRTLIRGenPass(m))
    m.apply(BehavioralRTLIRTypeCheckPass(m))
    upblks = m.get_metadata(BehavioralRTLIRGenPass.rtlir_upblks)
    m_all_upblks = m.get_update_blocks()
    assert len(m_all_upblks) == 1

    for blk in m_all_upblks:
        upblk_src = visitor.enter(blk, upblks[blk])
        upblk_src = "\n".join(upblk_src)
        assert upblk_src + '\n' == case.REF_UPBLK


@pytest.mark.parametrize('case', [
    CaseBits32SubCompAttrUpblkComp,
    CaseBits32ArraySubCompAttrUpblkComp,
    CaseBehavioralArraySubCompArrayStructIfcComp,
])