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的庫文件添加進(jìn)去

問題描述二:
** 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內(nèi)部聲明了task,在外部進(jìn)行task的功能定義,但是在class內(nèi)部生命task時(shí),沒有加extern前綴,導(dǎo)致questasim不會(huì)再class外部去尋找對(duì)應(yīng)的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.

解決方案:
某個(gè)函數(shù)被多重定義了,報(bào)錯(cuò)while parsing file included,譬如出現(xiàn)如下架構(gòu):

? ? ? ? ?driver要用到transaction.sv,monitor也要用到transaction.sv,因此我們?cè)赿river.sv和monitor.sv中都在一開始`include "transaction.sv",這對(duì)于driver和monitor來說都不會(huì)報(bào)錯(cuò),但是當(dāng)我們?cè)趀nv中把driver.sv和monitor.sv都include到env時(shí),由于在driver和monitor都進(jìn)行了`include "transaction.sv",所以對(duì)于env來說,transaction就被include了兩次,也就是被定義了兩次,重定義了,所以雖然driver和monitor不會(huì)報(bào)錯(cuò),但是env.sv會(huì)報(bào)錯(cuò)。
? ? ? ? 這種重復(fù)編譯、重復(fù)定義的問題,可以通過在被include的文件首尾加入:
? ? ? ? 首尾加入這三句話后,在這中間的代碼如果被編譯過一次,那么哪怕在多個(gè)文件都include了它,也只會(huì)編譯一次,就不會(huì)出現(xiàn)重復(fù)定義的情況了。