questasim常见问题解决方案

问题描述一:

** 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的库文件添加进去

`include "uvm_macros.svh"
import uvm_pkg::*;

问题描述二:

** 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定义。questasim常见问题解决方案_第1张图片

 如上在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,譬如出现如下架构:

questasim常见问题解决方案_第2张图片

         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的文件首尾加入:

`ifndef MY_TRANSACTION__SV
`define MY_TRANSACTION__SV

//my_codes

`endif

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

你可能感兴趣的:(java,前端,javascript)