Beispiel #1
0
    def test_one_line_feature(self):
        result = list(fasm.parse_fasm_filename(example('feature_only.fasm')))
        self.assertEqual(result, [
            fasm.FasmLine(
                set_feature=fasm.SetFasmFeature(
                    feature='EXAMPLE_FEATURE.X0.Y0.BLAH',
                    start=None,
                    end=None,
                    value=1,
                    value_format=None,
                ),
                annotations=None,
                comment=None,
            )
        ])

        self.assertEqual(fasm.fasm_tuple_to_string(result),
                         'EXAMPLE_FEATURE.X0.Y0.BLAH\n')
        check_round_trip(self, result)
Beispiel #2
0
def mk_fasm(tile_name, feature):
    """ Convert matches tile and feature to FasmLine tuple. """
    # Seperate addressing of multi-bit features:
    # TILE.ALUT[0] -> ('TILE', 'ALUT', '0')
    # TILE.ALUT.SMALL -> ('TILE', 'ALUT.SMALL', None)
    m = re.match(r'([A-Za-z0-9_]+).([^\[]+)(\[[0-9]+\])?', feature)
    tag_post = m.group(2)
    address = None
    if m.group(3) is not None:
        address = int(m.group(3)[1:-1])

    feature = '{}.{}'.format(tile_name, tag_post)

    return fasm.FasmLine(set_feature=fasm.SetFasmFeature(
        feature=feature,
        start=address,
        end=None,
        value=1,
        value_format=None,
    ),
                         annotations=None,
                         comment=None)