欢迎光临散文网 会员登陆 & 注册

questasim常见问题解决方案

2022-10-13 15:31 作者:不吃葱的酸菜鱼  | 我要投稿

问题描述一:

** Error: (vlog-13069) E:/questasim_project/UVM_platform/my_driver.sv(5): near "uvm_driver": syntax error, unexpected IDENTIFIER.

** Error: E:/questasim_project/UVM_platform/my_driver.sv(5): Error in class extension specification.

解决方案:

在代码开头将UVM的库文件添加进去

问题描述二:

** Error: (vlog-13069) E:/questasim_project/UVM_platform/my_driver.sv(10): near "extends": syntax error, unexpected extends, expecting function or task or "SystemVerilog keyword 'pure'".

 解决方案:

        这是将task定义在class的外部了,可能造成的原因是,在class内部声明了task,在外部进行task的功能定义,但是在class内部生命task时,没有加extern前缀,导致questasim不会再class外部去寻找对应的task定义。

 如上在class中的task前加上extern即可。

问题描述三:

** Error: ** while parsing file included at E:/questasim_project/UVM_platform_2/my_agent.sv(6)

** while parsing file included at my_monitor.sv(2)

** at my_transaction.sv(5): Typedef 'my_transaction' multiply defined.

解决方案:

某个函数被多重定义了,报错while parsing file included,譬如出现如下架构:

         driver要用到transaction.sv,monitor也要用到transaction.sv,因此我们在driver.sv和monitor.sv中都在一开始`include "transaction.sv",这对于driver和monitor来说都不会报错,但是当我们在env中把driver.sv和monitor.sv都include到env时,由于在driver和monitor都进行了`include "transaction.sv",所以对于env来说,transaction就被include了两次,也就是被定义了两次,重定义了,所以虽然driver和monitor不会报错,但是env.sv会报错。

        这种重复编译、重复定义的问题,可以通过在被include的文件首尾加入:

        首尾加入这三句话后,在这中间的代码如果被编译过一次,那么哪怕在多个文件都include了它,也只会编译一次,就不会出现重复定义的情况了。

questasim常见问题解决方案的评论 (共 条)

分享到微博请遵守国家法律