def test_preprocess_include_directive(self):
     self.write_file("include.svh", "hello hey")
     included_files = []
     tokens = preprocess(
         tokenize('`include "include.svh"'), include_paths=[self.output_path], included_files=included_files
     )
     self.assertEqual(tokens, tokenize("hello hey"))
     self.assertEqual(included_files, [join(self.output_path, "include.svh")])
 def test_preprocess_define_with_default_values(self):
     defines = {}
     tokens = preprocess(tokenize("`define foo(arg1, arg2=default)arg1 arg2"), defines)
     self.assertEqual(tokens, [])
     self.assertEqual(
         defines,
         {"foo": Macro("foo", tokenize("arg1 arg2"), args=("arg1", "arg2"), defaults={"arg2": tokenize("default")})},
     )
    def test_preprocess_substitute_define_with_multile_args(self):
        tokens = preprocess(
            tokenize(
                """\
`define foo(arg1, arg2)arg1,arg2
`foo(1 2, hello)"""
            )
        )
        self.assertEqual(tokens, tokenize("1 2, hello"))
    def test_preprocess_substitute_define_with_one_arg(self):
        tokens = preprocess(
            tokenize(
                """\
`define foo(arg)arg 123
`foo(hello hey)"""
            )
        )
        self.assertEqual(tokens, tokenize("hello hey 123"))
    def test_preprocess_substitute_define_without_args(self):
        tokens = preprocess(
            tokenize(
                """\
`define foo bar \"abc\"
`foo"""
            )
        )
        self.assertEqual(tokens, tokenize('bar "abc"'))
    def test_preprocess_substitute_define_with_default_values(self):
        defines = {}
        tokens = preprocess(
            tokenize(
                """\
`define foo(arg1, arg2=default)arg1 arg2
`foo(1)"""
            ),
            defines,
        )
        self.assertEqual(tokens, tokenize("1 default"))
Ejemplo n.º 7
0
 def parse(cls, code, file_name, include_paths=None):
     """
     Parse verilog file
     """
     include_paths = [] if include_paths is None else include_paths
     tokens = tokenize(code)
     included_files = []
     pp_tokens = preprocess(tokens, include_paths=[dirname(file_name)] + include_paths,
                            included_files=included_files)
     tokens = [token
               for token in pp_tokens
               if token.kind not in (tokenizer.WHITESPACE,
                                     tokenizer.COMMENT,
                                     tokenizer.NEWLINE,
                                     tokenizer.MULTI_COMMENT)]
     return cls(modules=VerilogModule.find(tokens),
                packages=VerilogPackage.find(tokens),
                imports=cls.find_imports(tokens),
                instances=cls.find_instances(tokens),
                included_files=included_files)
 def test_preprocess_define_with_multiple_args(self):
     defines = {}
     tokens = preprocess(tokenize("`define foo( arg1, arg2)arg1 arg2"), defines)
     self.assertEqual(tokens, [])
     self.assertEqual(defines, {"foo": Macro("foo", tokenize("arg1 arg2"), args=("arg1", "arg2"))})
 def test_preprocess_define_with_one_arg(self):
     defines = {}
     tokens = preprocess(tokenize("`define foo(arg)arg 123"), defines)
     self.assertEqual(tokens, [])
     self.assertEqual(defines, {"foo": Macro("foo", tokenize("arg 123"), args=("arg",))})
Ejemplo n.º 10
0
 def test_preprocess_define_with_lpar_value(self):
     defines = {}
     tokens = preprocess(tokenize("`define foo (bar)"), defines)
     self.assertEqual(tokens, [])
     self.assertEqual(defines, {"foo": Macro("foo", tokenize("(bar)"))})
Ejemplo n.º 11
0
 def test_preprocess_define_with_value(self):
     defines = {}
     tokens = preprocess(tokenize('`define foo bar "abc"'), defines)
     self.assertEqual(tokens, [])
     self.assertEqual(defines, {"foo": Macro("foo", tokenize('bar "abc"'))})
Ejemplo n.º 12
0
 def test_preprocess_define_without_value(self):
     defines = {}
     tokens = preprocess(tokenize("`define foo"), defines)
     self.assertEqual(tokens, [])
     self.assertEqual(defines, {"foo": Macro("foo")})
Ejemplo n.º 13
0
 def test_non_preprocess_tokens_are_kept(self):
     defines = {}
     tokens = tokenize('"hello"ident/*comment*///comment')
     pp_tokens = preprocess(tokenize('"hello"ident/*comment*///comment'), defines)
     self.assertEqual(pp_tokens, tokens)
     self.assertEqual(defines, {})