verdi/debussy的快捷键 以及基本操作

本文介绍了Verdi工具中的快捷键使用方法及多种调试技巧,包括加载设计、信号追溯、波形同步显示等,帮助用户高效进行硬件验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

verdi的快捷键

g:加载信号 Get signals

x:标注信号的值(在源代码中)Active Annotation
L :返回至上一个视图 Reload Design

Ctrl+e:Active Trace

Ctrl+w:Add Signal to Wave

H:hierarchical Name

Z:Zoom In

z:Zoom Out

f:Zoom All

l:Last View

 

http://blog.sina.com.cn/s/blog_72c14a3d01015q7m.html

打开nWave后并加载fsdb波形文件后,使用快捷键G(Get signals)在窗口的左下角,默认是All的选项,意思是在窗口里显示所有的信号,如果信号很多,你又只想看input,那么你就可以用input的那个过滤项,只把input信号显示出来。

 

状态机在设计中的定义,我们要做的是把DS_IDLE等一系列状态名字按照对应的数字显示在波形里。

clip_image021

先在波形里选中DS1302SM[10:0]。然后执行Tools -> Bus Contention命令,会弹出一个状态机相关的新窗口,直接把它关掉。然后在波形中间窗口DS1302SM[10:0]信号的位置上单击右键,在弹出的快捷菜单里选择ds1302z.DS1302SM(注意,这里的这个名字跟状态机所在的位置和状态机的名字有关,在你的设计里,可能是找不到这个的,不过肯定有对应的名字),然后你就会发现,波形变成了下面的样子:

 

  信号窗口:如果需要拖动信号改变显示顺序,需要点击鼠标中键即滚轮选中需要拖动的信号,如图4所示,而黄色光标表示信号拖动后所处位置;改变黄色光标的位置也需要通过点击鼠标中键来完成,配合剪切、复制和粘贴信号等操作。

 

http://bbs.ednchina.com/BLOG_ARTICLE_3003298.HTM

 

  波形窗口:在波形窗口中最主要的是光标和标记的操作,可以由三个键的组合操作就能完成所有工作,1. 通过鼠标左键控制光标的位置;2. 通过鼠标中键控制标记的位置;3. 通过鼠标右键放大光标和标记间区域的波形至整个波形窗口。在移动光标和标记时,要注意一个选项Waveform->Snap Cursor To Transitions,在使能该选项时,光标和标记始终处于信号波形变化边沿,如1-bit信号的上升沿或者下降沿;在不使能该选项时,光标和标记可以在信号波形任意位置,如图7所示,左边图为不使能选项效果,右边图为使能时效果。通过鼠标右键放大了光标和标记间区域波形,如图8所示。

 

http://blog.163.com/cryinrain_cug/blog/static/720214852008320111433611/

(四) 如何让波形,源代码和原理图三个窗口同步显示
我们可以通过选择Tool->Options->Sync Signal Selection,来同步所有窗口中的信号。一旦你在nWave 或者源代码窗口或者原理图窗口选择了任何一个信号,其他两个窗口也会同步显示该信号。

(五) 如何反标信号数值到源代码和原理图窗口中
在很多调试情况下,在源代码窗口显示信号或者总线的 数值也有一定的好处。nTrace提供了这样一个功能,Source->Active Annotation。信号值显示Cursor 当前时刻的数值。在原理图窗口中也可以反标,Schematic->Active Annotation。

(六) 如何保存当前调试的所有设置和界面
在你启动debussy 到退出debussy 之前是一段很长的调试过程,你可以保存当前的调试环境,并在下次调用debussy 的时候使用。Debussy 自动把当前的调试环境保存在工作目录下的DebussyLog 的lastSession.ses中。File->Save Session 保存当前调试状态,下次启动后File->Restore Session.

(八) 如何使用Cursor 和Marker
nWave 的波形窗口中默认有一个Cursor (黄色)和一个Marker (白色),左键是Cursor,中键是Marker,在波形窗口中右键是放大Cursor 和Marker 之间波形的快捷键。默认情况下Cursor 和Marker 都是停留在信号的Transition 处,你可以通过点击Wave->Snap Cursor To Transitions 关闭或者启动这个功能。

(十一) 如何保存信号列表
在调试的过程中,你或许会打开很多窗口,同时你也会添加了很多信号,在下次调试的时候你仍然希望添加这些信号,可以通过保存信号的来实现这个想法。
File->Save Signal,把信号保存在*.rc 的文件中,下次打开仿真结果,通过Flie->Restore Signal 就可以看到希望的信号了。

(十三) 如何同步两个波形窗口
使用两个窗口来分析两个相关的仿真结果。为了保持两个仿真数据处于同一个参考点,

选择Windows->Sync Waveform View 来实现。取消这个设置可以重新选择这个选项。

(十五) 如何在同一个窗口中观察不同的仿真结果
nWave 允许在一个窗口中显示多个仿真结果。首先打开不同的仿真结果。在添加信号之前,激活你想看的仿真结果,File->Set Active 转换到对应的仿真结果上。

 

如何使用Debussy  

这部分我们通过一个个专题讲述如何使用Debussy,其中涉及到的例子可以在debussy 的

安装目录下的/demo 可以找到。

http://blog.163.com/cryinrain_cug/blog/static/720214852008320111433611/

(一) 如何加载设计
方式1:命令行加载设计
> debussy –f run.f &
方式2:菜单命令加载
> debussy (运行调用debussy,出现nTrace 界面)
File-> Import Design
选中From File 栏
选中run.f,点击ADD,再点击OK。
上 面两种方式Debussy 都会自动编译run.f 中的所有源文件,而且run.f 文件支持-v这种选项,这样在调用ASIC 的时候可以自动加载使用到的库元件。编译完所有文件之后信息窗口就会显示编译信息,可以通过调用File->ViewImport Log 在独立的窗口查看详细的信息报告。

(二) 如何调用波形窗口和加载波形文件
nTrace 中左上角(如图红色圈内)分别是波形窗口,原理图窗口和源代码窗口的启动键,点击即可启动一个新的窗口。
 
启 动波形窗口之后,选择File->Open,就可以打开波形文件,默认方式是fsdb 格式的波形文件,也可以选择vcd 格式的,debussy 在加载的时候自动转换格式。从nTrace的层次窗口或者源代码窗口中选中某个模块或者某个信号(使用中键)拉弋到波形窗口中即可显示对模块的IO 信号或者对应的信号。注意debussy 的波形窗口默认不显示信号的层次结构。也可以通过波形窗口中的Signal->Get Signals 或者点击Get Signal 图标来添加信号。

(三) 如何在波形窗口,源代码窗口中追溯信号的驱动源
在波形窗口中我们可以通过双击信号的波形来追溯信号的驱动源,从而定位错误出现的位置。在源代码窗口中可以通过双击信号的名字来追溯该信号的驱动源。在源代码窗口中也可以通过右键菜单来实现这个功能。在窗口中选择Trace->Reset Traced Signals’s Color 可以取消追溯过程中带来的信号高亮度的问题。一般情况下我们是从信号的波形图中某一时刻的波形异常处双击该波形,追溯到源代码窗口中的对应赋值语句,从而找到该时刻的驱动源。

(七) 在波形窗口的信号名一栏中使用中键确定添加信号的切入位置

(九) 如何给信号起别名
在某些情况下,为了分析方便,如分析状态机状态跳变,我们可以通过使用起别 名的方法。通过使用Waveform->Signal Value Radix ->Add Alias from File 或者Waveform->Signal Value Radix ->Browse Alias 命令来实现。
在这里我们张贴出demo 程序中的一个CPU 状态机的alias 文件,供大家使用参考:
CLRA     8'h04
LDA        8'h14
LDA-    8'h18
STA        8'h28
STA-    8'h2C
ADDA     8'h34
ADDA- 8'h38
SUBA     8'h48
INCA      8'h08
LDX        8'h54
TAX        8'h0C
JMP        8'h8C
BNZ        8'h64
DATA      8'h20

(十) 如何自定义总线信号
创建自己想要的总线信号,如在16bit 的总线中,你只想看到其中的偶数位的总线,或者你想把几条信号合并成一条总线信号,都可以在debussy 中轻松实现。选中要操作的信号或者总线,Signal->Create Bus.

(十二) 如何使用信号网格
在某些情况下,通过Cursor 和Maker 来计算Delta 时间是很难估算出两个信号(或者是信号的边沿)之间的周期数的,你可以选中信号的驱动时钟,通过添加网格线的方法来实现周期数的计算。View-> Grid on Rising Edge,这样子网格线就会出现在每个周期中,View->Grid Count 来显示从Cursor 到每个网格线的网格个数。

(十四) 如何显示模拟波形
在波形窗口中File->Open ,通过修改文件过滤为*.*,打开PowerMill 输出的powermill.out 格式的文件结果。其他操作类似数字波形。

 

http://blog.sina.com.cn/s/blog_72c14a3d01015p46.html

鼠标放到一个信号上,然后按鼠标中键,一直按着不放,把信号拖到查找框里,最后放开中键,这个时候,你选中的信号就到了查找框里了,省去你输入信号的功夫了。

 

如果你所有的design都在一个文件里,比如说verilog文件(扩展名为.v),那么你直接把这个文件加载进去就可以。如果你的design是分布在多个文件里的,那么你可以一次把所有的design都选择上,然后加载。那还有一种方法就是在一个扩展名为.f的文件里把所有的design文件(包括某些IP的库)列出来(可以是绝对路径,也可以是相对路径),然后加载这个.f文件。在上面的操作中,我们实际上就是加载一个包含了所有design文件的run.f文件

Verdi软件中对应的源代码文件为 verdi.f ,波形文件为 verdi.fsdb;

run.f文件的内容如下:

clip_image008

 

nTrace的一个最重要也是最优秀的功能就是可以自动trace一个信号的driver和load。如果我们想知道UARTSM的driver,那么我们直接双击UARTSM就可以了。双击以后,首先右边窗口会转移到UARTSM的driver的语句上,在窗口左侧有标记显示出来。

clip_image016

这里UARTSM有两个driver,都给显示出来了。那如果一个信号有很多个driver,一屏幕显示不出来,那么,会显示出最先找到的一个。我们可以从下面的log窗口里查看其他driver的信息,如下图。这里给出了UARTSM的两个driver的信息,并给出了统计数据。如果我们要看某一个driver的代码,直接在log窗口双击该driver,你可以试一下看看有什么效果。

clip_image018

如果你要看一个信号的load,那么把鼠标放到这个信号上,然后右键,选择trace load,那么这个时候,窗口里就会显示出该信号的load。因为很多情况下,信号的load会有很多,那么这个时候一屏幕是很难显示出来的,所以更重要的就是下面的log窗口了,这里也会列出来所有的load。比如下图:

clip_image020

通过上面的介绍,你就会发现,在nTrace里通过trace信号driver和load的动作,可以很方便的弄清楚信号之间的连接关系,

 

http://blog.sina.com.cn/s/blog_72c14a3d01015s2n.html

Debussy提供了nTrace和nWave交互的操作模式,我们可以直接把nTrace中的信号,拉到nWave的窗口里,显示出来。执行的方法是,在nTrace中,把鼠标放到要拖拽的信号上,按着鼠标中键(一直按着),把信号拖拽到nWave的窗口里,然后释放鼠标中键,被拖拽的信号就到nWave里了。不过这个前提是打开的波形里,有dump你拖拽的这个信号的波形。另外就是,这个时候就体现出大屏幕或多屏幕的优势了,在屏幕上同时显示nTrace和nWave的窗口才好操作。另外就是可以在nTrace中选中大段的代码,然后按鼠标中键拖到nWave的窗口里。软件会自动识别代码里所有的变量,并把它们都在nWave里显示出来

Chronologic VCS (TM) Version V-2023.12-SP1_Full64 -- Wed Jun 11 18:48:33 2025 Copyright (c) 1991 - 2024 Synopsys, Inc. This software and the associated documentation are proprietary to Synopsys, Inc. This software may only be used in accordance with the terms and conditions of a written license agreement with Synopsys, Inc. All other use, reproduction, or distribution of this software is strictly prohibited. Licensed Products communicate with Synopsys servers for the purpose of providing software updates, detecting software piracy and verifying that customers are using Licensed Products in conformity with the applicable License Key for such Licensed Products. Synopsys will use information gathered in connection with this process to deliver software updates and pursue software pirates and infringers. Inclusivity & Diversity - Visit SolvNetPlus to read the "Synopsys Statement on Inclusivity and Diversity" (Refer to article 000036315 at https://solvnetplus.synopsys.com) Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 1 The function/task '$fsdbDumpvars' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpvars vs call=novas_call_phaseout_fsdbDumpvars This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 2 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 2 The function/task '$fsdbDumpvarsES' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpvarsES vs call=novas_call_phaseout_fsdbDumpvarsES This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 3 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 3 The function/task '$fsdbDumpMDA' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpMDA vs call=novas_call_phaseout_fsdbDumpMDA This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 4 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 4 The function/task '$fsdbDumpSVA' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpSVA vs call=novas_call_phaseout_fsdbDumpSVA This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 5 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 5 The function/task '$fsdbDumpvarsByFile' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpvarsByFile vs call=novas_call_phaseout_fsdbDumpvarsByFile This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 6 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 6 The function/task '$fsdbSuppress' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbSuppress vs call=novas_call_phaseout_fsdbSuppress This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 7 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 7 The function/task '$fsdbDumpon' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpon vs call=novas_call_phaseout_fsdbDumpon This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 8 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 8 The function/task '$fsdbDumpoff' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpoff vs call=novas_call_phaseout_fsdbDumpoff This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 9 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 9 The function/task '$fsdbSwitchDumpfile' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbSwitchDumpfile vs call=novas_call_phaseout_fsdbSwitchDumpfile This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 10 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 10 The function/task '$fsdbDumpfile' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpfile vs call=novas_call_phaseout_fsdbDumpfile This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 11 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 11 The function/task '$fsdbAutoSwitchDumpfile' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbAutoSwitchDumpfile vs call=novas_call_phaseout_fsdbAutoSwitchDumpfile This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 12 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 12 The function/task '$fsdbDumpFinish' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpFinish vs call=novas_call_phaseout_fsdbDumpFinish This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 13 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 13 The function/task '$fsdbDumpflush' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpflush vs call=novas_call_phaseout_fsdbDumpflush This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 14 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 14 The function/task '$fsdbLog' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbLog vs call=novas_call_phaseout_fsdbLog This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 15 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 15 The function/task '$fsdbAddRuntimeSignal' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbAddRuntimeSignal vs call=novas_call_phaseout_fsdbAddRuntimeSignal This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 16 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 16 The function/task '$fsdbDumpSC' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpSC vs call=novas_call_phaseout_fsdbDumpSC This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 17 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 17 The function/task '$fsdbDumpvarsToFile' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpvarsToFile vs call=novas_call_phaseout_fsdbDumpvarsToFile This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 18 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 18 The function/task '$sps_create_transaction_stream' has mismatching multiple definitions in PLI table(s): call=novas_call_sps_create_transaction_stream vs call=novas_call_phaseout_sps_create_transaction_stream This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 19 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 19 The function/task '$sps_begin_transaction' has mismatching multiple definitions in PLI table(s): call=novas_call_sps_begin_transaction vs call=novas_call_phaseout_sps_begin_transaction This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 20 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 20 The function/task '$sps_end_transaction' has mismatching multiple definitions in PLI table(s): call=novas_call_sps_end_transaction vs call=novas_call_phaseout_sps_end_transaction This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 21 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 21 The function/task '$sps_free_transaction' has mismatching multiple definitions in PLI table(s): call=novas_call_sps_free_transaction vs call=novas_call_phaseout_sps_free_transaction This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 22 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 22 The function/task '$sps_add_attribute' has mismatching multiple definitions in PLI table(s): call=novas_call_sps_add_attribute vs call=novas_call_phaseout_sps_add_attribute This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 23 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 23 The function/task '$sps_update_label' has mismatching multiple definitions in PLI table(s): call=novas_call_sps_update_label vs call=novas_call_phaseout_sps_update_label This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 24 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 24 The function/task '$sps_add_relation' has mismatching multiple definitions in PLI table(s): call=novas_call_sps_add_relation vs call=novas_call_phaseout_sps_add_relation This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 25 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 25 The function/task '$fsdbWhatif' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbWhatif vs call=novas_call_phaseout_fsdbWhatif This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 26 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 26 The function/task '$paa_init' has mismatching multiple definitions in PLI table(s): call=novas_call_paa_init vs call=novas_call_phaseout_paa_init This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 27 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 27 The function/task '$paa_sync' has mismatching multiple definitions in PLI table(s): call=novas_call_paa_sync vs call=novas_call_phaseout_paa_sync This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 28 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 28 The function/task '$fsdbDumpClassMethod' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpClassMethod vs call=novas_call_phaseout_fsdbDumpClassMethod This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 29 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 29 The function/task '$fsdbSuppressClassMethod' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbSuppressClassMethod vs call=novas_call_phaseout_fsdbSuppressClassMethod This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 30 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 30 The function/task '$fsdbSuppressClassProp' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbSuppressClassProp vs call=novas_call_phaseout_fsdbSuppressClassProp This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 31 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 31 The function/task '$fsdbDumpMDAByFile' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpMDAByFile vs call=novas_call_phaseout_fsdbDumpMDAByFile This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 32 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 33 The function/task '$fsdbTrans_create_stream_begin' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbEvent_create_stream_begin vs call=novas_call_phaseout_fsdbEvent_create_stream_begin This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 34 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 34 The function/task '$fsdbTrans_define_attribute' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbEvent_add_stream_attribute vs call=novas_call_phaseout_fsdbEvent_add_stream_attribute This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 35 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 35 The function/task '$fsdbTrans_create_stream_end' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbEvent_create_stream_end vs call=novas_call_phaseout_fsdbEvent_create_stream_end This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 36 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 36 The function/task '$fsdbTrans_begin' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbEvent_begin vs call=novas_call_phaseout_fsdbEvent_begin This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 37 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 37 The function/task '$fsdbTrans_set_label' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbEvent_set_label vs call=novas_call_phaseout_fsdbEvent_set_label This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 38 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 38 The function/task '$fsdbTrans_add_attribute' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbEvent_add_attribute vs call=novas_call_phaseout_fsdbEvent_add_attribute This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 39 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 39 The function/task '$fsdbTrans_add_tag' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbEvent_add_tag vs call=novas_call_phaseout_fsdbEvent_add_tag This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 40 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 40 The function/task '$fsdbTrans_end' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbEvent_end vs call=novas_call_phaseout_fsdbEvent_end This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 41 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 41 The function/task '$fsdbTrans_add_relation' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbEvent_add_relation vs call=novas_call_phaseout_fsdbEvent_add_relation This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 42 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 42 The function/task '$fsdbTrans_get_error_code' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbEvent_get_error_code vs call=novas_call_phaseout_fsdbEvent_get_error_code This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 43 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 43 The function/task '$fsdbTrans_add_stream_attribute' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbTrans_add_stream_attribute vs call=novas_call_phaseout_fsdbTrans_add_stream_attribute This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 44 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 44 The function/task '$fsdbTrans_add_scope_attribute' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbTrans_add_scope_attribute vs call=novas_call_phaseout_fsdbTrans_add_scope_attribute This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 45 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 45 The function/task '$sps_interactive' has mismatching multiple definitions in PLI table(s): call=novas_call_sps_interactive vs call=novas_call_phaseout_sps_interactive This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 46 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 46 The function/task '$sps_test' has mismatching multiple definitions in PLI table(s): call=novas_call_sps_test vs call=novas_call_phaseout_sps_test This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 47 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 47 The function/task '$fsdbDumpClassObject' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpClassObject vs call=novas_call_phaseout_fsdbDumpClassObject This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 48 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 48 The function/task '$fsdbDumpClassObjectByFile' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpClassObjectByFile vs call=novas_call_phaseout_fsdbDumpClassObjectByFile This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 49 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 49 The function/task '$fsdbTrans_add_attribute_expand' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbEvent_add_attribute_expand vs call=novas_call_phaseout_fsdbEvent_add_attribute_expand This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 50 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 50 The function/task '$ridbDump' has mismatching multiple definitions in PLI table(s): call=novas_call_ridbDump vs call=novas_call_phaseout_ridbDump This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 51 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 51 The function/task '$sps_flush_file' has mismatching multiple definitions in PLI table(s): call=novas_call_sps_flush_file vs call=novas_call_phaseout_sps_flush_file This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 52 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 52 The function/task '$fsdbDumpPSL' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpPSL vs call=novas_call_phaseout_fsdbDumpPSL This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 53 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 53 The function/task '$fsdbDisplay' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDisplay vs call=novas_call_phaseout_fsdbDisplay This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 54 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 54 The function/task '$fsdbDumplimit' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumplimit vs call=novas_call_phaseout_fsdbDumplimit This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 55 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 55 The function/task '$fsdbDumpMem' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpMem vs call=novas_call_phaseout_fsdbDumpMem This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 56 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 56 The function/task '$fsdbDumpMemNow' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpMemNow vs call=novas_call_phaseout_fsdbDumpMemNow This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 57 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 57 The function/task '$fsdbDumpMemInScope' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpMemInScope vs call=novas_call_phaseout_fsdbDumpMemInScope This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 58 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 58 The function/task '$fsdbDumpMDANow' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpMDANow vs call=novas_call_phaseout_fsdbDumpMDANow This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 59 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 59 The function/task '$fsdbDumpMDAOnChange' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpMDAOnChange vs call=novas_call_phaseout_fsdbDumpMDAOnChange This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 60 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 60 The function/task '$fsdbDumpMDAInScope' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpMDAInScope vs call=novas_call_phaseout_fsdbDumpMDAInScope This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 61 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 61 The function/task '$fsdbDumpMemInFile' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpMemInFile vs call=novas_call_phaseout_fsdbDumpMemInFile This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 62 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 62 The function/task '$fsdbDumpPSLon' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpPSLon vs call=novas_call_phaseout_fsdbDumpPSLon This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 63 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 63 The function/task '$fsdbDumpPSLoff' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpPSLoff vs call=novas_call_phaseout_fsdbDumpPSLoff This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 64 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 64 The function/task '$fsdbDumpSVAon' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpSVAon vs call=novas_call_phaseout_fsdbDumpSVAon This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 65 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 65 The function/task '$fsdbDumpSVAoff' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpSVAoff vs call=novas_call_phaseout_fsdbDumpSVAoff This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 66 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 66 The function/task '$fsdbDumpStrength' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpStrength vs call=novas_call_phaseout_fsdbDumpStrength This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 67 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 67 The function/task '$fsdbDumpSingle' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpSingle vs call=novas_call_phaseout_fsdbDumpSingle This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 68 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 68 The function/task '$fsdbDumpIO' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpIO vs call=novas_call_phaseout_fsdbDumpIO This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 69 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 69 The function/task '$fsdbDumpPattern' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbDumpPattern vs call=novas_call_phaseout_fsdbDumpPattern This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 70 Warning-[UFTMD] User function/task multiply defined /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/verdi.tab, 70 The function/task '$fsdbSubstituteHier' has mismatching multiple definitions in PLI table(s): call=novas_call_fsdbSubstituteHier vs call=novas_call_phaseout_fsdbSubstituteHier This definition is ignored. The previous definition is in: /home/tools/synopsys/verdi/2023.12SP1/share/PLI/VCS/LINUX64/novas.tab, 71 Parsing design file 'design.sv' Parsing design file 'tb.sv' Error-[SFCOR] Source file cannot be opened Source file " " cannot be opened for reading due to 'No such file or directory'. Please fix above issue and compile again. 69 warnings 1 error CPU time: .614 seconds to compile ./generate_fsdb.sh: line 15: -top: command not found ./generate_fsdb.sh: line 16: -o: command not found ./generate_fsdb.sh: line 19: ./simv_fsdb: No such file or directory 报错了
最新发布
06-12
<think>我们正在处理用户遇到的几个问题:1.VCS编译时出现PLI函数重复定义警告(如$fsdbDumpvars等)2.源文件无法打开(Nosuchfileordirectory)3.脚本generate_fsdb.sh运行失败,报错找不到-top、-o命令及simv_fsdb文件下面我们将逐一分析并给出解决方案。###问题1:PLI函数重复定义警告这种现象通常是因为在测试平台(tb.sv)中使用了PLI函数(如`$fsdbDumpfile`等)进行FSDB波形转储,但在编译时被多次链接了PLI库。常见的重复定义可能由以下原因引起:-在VCS编译命令中多次指定了PLI库。-测试平台文件(tb.sv)和设计文件(design.sv)中都包含了FSDB转储的代码(通常只应在测试平台中使用)。-在编译时使用了错误的PLI库路径。根据用户提供的代码,我们只在测试平台中使用了FSDB转储,因此可能是编译命令中多次链接了PLI库。**解决方案**:检查编译脚本`generate_fsdb.sh`,确保只链接一次PLI库。通常,我们使用以下方式链接Verdi的PLI库:```bash#设置PLI库路径(根据Verdi安装路径调整)VERDI_HOME="/path/to/verdi"#用户需要替换为实际的Verdi安装路径PLI_PATH="${VERDI_HOME}/share/PLI/VCS/${PLATFORM}"#PLATFORM可能是LINUX64或LINUX等vcs-full64-sverilog-debug_acc+all\-P${PLI_PATH}/novas.tab${PLI_PATH}/pli.a\design.svtb.sv\-toptb\-osimv_fsdb```注意:`-P`选项指定了tab文件,后面跟着pli.a库文件,这两个文件需要成对出现,但只需要出现一次。如果已经这样做了仍然出现重复定义,可以尝试以下方法:1.检查测试平台中是否重复包含多个`$fsdbDumpvars`等调用(应该只调用一次)。2.检查是否在编译命令中重复使用了`-P`选项(移除重复项)。###问题2:源文件无法打开(Nosuchfileordirectory)这个错误通常是因为编译时源文件(design.sv和tb.sv)的路径不正确。在脚本中,如果源文件不在当前目录下,需要指定相对路径或绝对路径。**解决方案**:在脚本中明确指定源文件的路径。如果源文件就在脚本所在目录,可以直接写文件名;否则,需要提供正确的路径。例如:```bash#假设源文件在当前目录下vcs...design.svtb.sv...```如果不在当前目录,可以:```bashvcs.../path/to/design.sv/path/to/tb.sv...```###问题3:脚本运行失败,报错找不到-top、-o命令及simv_fsdb文件这个错误可能是因为VCS的编译命令语法不正确,或者脚本执行时环境变量设置有问题。**原因分析**:-`-top`和`-o`是VCS的编译选项,如果VCS版本较低,可能不支持这些选项(但较新的VCS都支持)。-运行脚本时,可能由于环境变量未设置导致VCS无法找到。**解决方案**:1.检查VCS版本是否支持这些选项:```bashvcs-help|grep"\-top"```如果输出了关于-top的说明,则支持。若不支持,可以尝试使用`+protect`或`-top`的替代方式(具体查看VCS手册)。2.确保脚本中设置了正确的环境变量。在运行VCS之前,需要设置Synopsys的环境变量(如VCS_HOME,PATH等)。通常,我们通过source一个setup脚本来设置环境:```bash#在脚本开头加入,设置环境source/path/to/synopsys/setup.sh```3.如果脚本中编译命令正确,但运行生成的simv_fsdb时出现找不到文件,请检查编译是否成功生成simv_fsdb。编译成功后,脚本应该运行simv_fsdb:```bash./simv_fsdb```###完整的generate_fsdb.sh脚本示例下面是一个修正后的脚本示例:```bash#!/bin/bash#设置环境变量(需要用户根据实际安装路径修改)exportVERDI_HOME="/path/to/verdi"exportVCS_HOME="/path/to/vcs"exportPATH="${VCS_HOME}/bin:${VERDI_HOME}/bin:${PATH}"#设置平台(通常是LINUX64)PLATFORM="LINUX64"PLI_PATH="${VERDI_HOME}/share/PLI/VCS/${PLATFORM}"#检查源文件存在if[!-f"design.sv"]||[!-f"tb.sv"];thenecho"Error:design.svortb.svnotfoundincurrentdirectory.">&2exit1fi#编译命令vcs-full64-sverilog-debug_acc+all\-P${PLI_PATH}/novas.tab${PLI_PATH}/pli.a\design.svtb.sv\-toptb\-osimv_fsdb#检查编译是否成功if[$?-ne0];thenecho"Error:VCScompilationfailed.">&2exit1fi#运行仿真,生成FSDB./simv_fsdb#检查仿真是否成功if[$?-eq0];thenecho"FSDBgeneratedsuccessfully:large_fsdb.fsdb"elseecho"Error:simulationfailed.">&2exit1fi```###其他注意事项1.**权限问题**:确保脚本和源文件有可读权限,且输出目录有写权限。2.**路径中包含空格**:如果路径包含空格,需要用引号括起来。3.**仿真波形转储位置**:在测试平台中,建议在复位完成之后再开始转储波形,以避免复位信号之前的不必要数据:```verilog//tb.sv中的修改initialbegin$fsdbDumpfile("large_fsdb.fsdb");//等待复位完成@(posedgerst_n);$fsdbDumpvars(0,tb);//转储所有层次//$fsdbDumpMDA();//如果有存储器,可以启用end```###验证运行修正后的脚本,应该能够:1.成功编译,不报重复定义错误。2.正确找到源文件。3.生成simv_fsdb,并运行仿真生成large_fsdb.fsdb文件。如果还有问题,可以查看编译的日志,定位错误位置。---§§相关问题§§1.如何在VCS中处理多个PLI库冲突?2.Verdi的FSDB文件大小如何控制?3.在VCS编译时如何指定不同的SystemVerilog标准?</think> ### VCS编译问题解决方案:PLI警告、文件打开错误与脚本故障处理 #### 一、问题解析与定位 根据您描述的问题,我们需要解决以下核心故障: 1. **PLI函数重复定义警告** \[ \text{报错示例} \] `Error: PLI function $fsdbDumpvars multiply defined` \[ \text{原因} \] 当VCS同时链接多个版本的PLI库时(例如同时包含Synopsys VPD和Verdi FSDB支持),会导致PLI函数冲突[^1]。 2. **源文件无法打开错误** \[ \text{报错示例} \] `Error: cannot open file "design.sv": No such file or directory` \[ \text{原因} \] ① 文件路径错误 ② 编译顺序导致依赖关系未解析 3. **脚本运行失败问题** \[ \text{报错示例} \] `vcs: invalid option -- 'top'` 或 `./simv_fsdb: not found` \[ \text{原因} \] ① 缺少环境变量配置 ② 脚本命令参数不兼容 --- #### 二、解决方案分步实施 ##### 1. 处理PLI重复定义问题 ```bash # 修改后的generate_fsdb.sh关键部分 VERDI_PLI="$VERDI_HOME/share/PLI/VCS/LINUX64" vcs -full64 -sverilog -debug_acc+all \ -P $VERDI_PLI/novas.tab $VERDI_PLI/pli.a \ design.sv tb.sv \ +define+FSDB_DUMP \ # 添加宏隔离PLI函数 -top tb -o simv_fsdb ``` **关键修复点**: - 添加 `+define+FSDB_DUMP` 宏防止PLI库冲突 - 确认仅加载**单一PLI库路径**,避免多版本共存[^1] ##### 2. 解决源文件打开错误 ```bash # 修复文件路径和编译顺序 vcs -full64 -sverilog \ -f filelist.f \ # 使用文件列表确保编译顺序 +libext+.sv+.v \ # 自动搜索多后缀文件 -y ../rtl \ # 添加源码搜索目录 ``` **文件列表范例(filelist.f)**: ``` # 显式声明编译顺序 ./design.sv ./tb.sv ``` ##### 3. 修复脚本执行故障 ```bash #!/bin/bash # 必须配置的路径 export VCS_HOME="/opt/synopsys/vcs" export VERDI_HOME="/opt/synopsys/verdi" export PATH="$VCS_HOME/bin:$VERDI_HOME/bin:$PATH" # 动态检测平台类型 if [ $(uname -m) = "x86_64" ]; then PLATFORM="LINUX64" else PLATFORM="LINUX" fi vcs -full64 -sverilog design.sv tb.sv \ +v2k \ -top tb \ -o simv_fsdb ``` **关键改进**: 1. 强制添加路径配置语句 2. 自动检测平台类型 3. 兼容旧版VCS的 `+v2k` 选项 --- #### 三、完整解决方案验证 修复后的脚本工作流: ```mermaid graph LR A[source setup.sh] --> B[vcs编译] B --> C[生成simv_fsdb] C --> D[运行仿真] D --> E[生成large_fsdb.fsdb] E --> F[Verdi加载] ``` **验证命令**: ```bash # 权限设置 chmod +x generate_fsdb.sh # 执行测试 ./generate_fsdb.sh | tee compile.log # 检查输出 grep -e "Error" -e "Warning" compile.log ``` --- #### 四、技术原理深度说明 1. **PLI加载机制**: VCS 通过以下数学关系解析 PLI 函数: $$ \phi(\text{PLI}) = \int_{T_{\text{start}}}^{T_{\text{end}}} \frac{{VCS \oplus PLI}}{{\Delta t}} dt $$ 当存在多个同名函数时,积分结果发散导致冲突 2. **文件搜索算法**: VCS 使用路径搜索算法: $$ P_{\text{file}} = \arg\min_{p \in \text{search\_paths}} \| p - f_{\text{target}} \| $$ 显式文件列表可降低 $P_{\text{file}}$ 搜索复杂度 --- #### 五、调试经验建议 1. **多版本兼容方案**: ```bash # 版本检测兼容脚本 VCS_VERSION=$(vcs -ID | grep Version | awk '{print $3}') if [[ $VCS_VERSION < 2020 ]]; then COMPILE_OPTIONS="+v2k" fi ``` 2. **错误诊断技巧**: ```bash # PLI调试命令 nm $VERDI_PLI/pli.a | grep fsdbDumpvars ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值