草庐IT

【文档+视频】Verdi基础教程

高级新手 2023-11-26 原文

目录

前言

1.Verdi 环境配置

2.VCS 产生Verdi 波形

1、tb中加入相应的系统函数

2、makefile中加入相应的选项 

3.nTrace

1、如何调用Verdi? 【重点】

2、如何查看包含的设计架构?

 3、如何查寻模块实例化的位置?【重点】

4、在nTrace中如何查找  模块和信号?【重点】

5、如何查寻字符串?【重点】

6、如何查看某个信号是被哪些信号驱动的?【重点】

7、如果查看某个信号驱动了哪些信号?【重点】

8、如何查找位于不同层次的驱动信号【跨层次查看信号,看最终驱动谁,或者看最终被谁驱动】?【重点】

9、如何查看设计有哪些信号?【重点】

4.nSchema

1、如何打开原理图

2、如何查看nShema Window中符号对应的源代码?

3、如何显示原理图中的各个信号/端口/模块名?

4、如何在当前的层次中查找某个信号?

5、使用 Fan-In Cone追踪某个信号的驱动逻辑?

6、如何产生 partial hierarchy schematic?

7、如何移动原理图中的器件?

5.nState

1、如何查看状态机视图?

2、如何查看状态的执行语句?[重点]3、如何查看状态的转移条件?

4、如何查看状态以及节点的相关源代码?【重点】

5、查看在什么时候状态机转移到某个状态?《与tb有关》

6、查看某一种状态转移【状态循环】情况是否会发生?

7、如何查看某个状态被执行了多少次?《与tb有关》

8、如何查看某个状态转移到某个状态的转移次数《与tb有关》

5.nWare使用

1、添加波形到nWave

2、添加信号到波形【重要】

3、查找某信号,添加到nWave中?【重要】

4、如何给Group重命名,排序,以及调整信号位置?

5、 缩小:【重要】

6、放大:【重要】

7、移动:【重要】

8、复制:

9、粘贴:

10、删除:【重要】

11、改变信号的颜色:【重要】

12、查看信号及变化:【重要!】

13、如何通过逻辑操作创建新信号?

14、如何添加marker?

15.总线操作:

16、如何查找信号的某个值、某个值跳转到某个值?

17、如何对比两个波形?



前言

通过此篇博客,能够了解到Verdi的环境配置启动Verdi的方法Verdi常用的操作方法

配套教学视频介绍Verdi的基本使用方法

1.Verdi 环境配置

.bashrc中需配置三个路径

  • VERDI_HOME / NOVAS_HOME:  其实就是Verdi的安装路径
  • PATH  : 在Verdi的安装路径中,Linux能找到启动Verdi的快捷键
  • LD_LIBRARY_PATH  :  让Verdi找到相应的库文件,从而进行相应的仿真
export Verdi_HOME=$Synopsys_Dir/Verdi2015
export PATH=$Verdi_HOME/bin:$PATH
export LD_LIBRARY_PATH="/opt/Synopsys/Verdi2015/share/PLI/lib/linux64":$PATH
export LD_LIBRARY_PATH="/opt/Synopsys/Verdi2015/share/PLI/VCS/linux64":$PATH

2.VCS 产生Verdi 波形

1、tb中加入相应的系统函数

如异步FIFO设计:

initial begin
$fsdbDumpfile("fifo.fsdb");  //fifo.fsdb是波形文件名字,根据设计名字自行定义。
$fsdbDumpvars(0);            //0代表dump电路设计所有层次; 若为1,则代表dump1层。
end

在TB中要添加$stop$finish,否则波形会一直dump下去。

2、makefile中加入相应的选项

#************parameter input*************
#※prepare the source list file and then make add the soucefile name
#for example ,the Verilog source file's name is vlog_list.f then :make norsim src_list=file_list
src_list = sim
simv_name = simv
vpdpluse_name = vcdpluse
cov_file_name = coverage
vdb_name = $(simv_name)
#************constant command************
#compile
NOR_VCS = vcs -full64 -sverilog +v2k -timescale=1ns/1ns -debug_all +notimingcheck +nospecify +vcs+flush+all -o $(simv_name) -f $(src_list).f -l compile.log 

#coverage compile switch
COV_SW = -cm line+cond+fsm+branch+tgl

#verdi dump wave compile option
VERDI_SW = -P /opt/Synopsys/Verdi2015/share/PLI/VCS/linux64/novas.tab \
/opt/Synopsys/Verdi2015/share/PLI/VCS/linux64/pli.a

#run option
RUN_GUI = -R -gui -l run.log
RUN_VPD = -R +vpdfile+$(vpdpluse_name).vpd -l run.log
RUN_COV = -R $(COV_SW) -cm_name $(vdb_name) -cm_dir ./$(cov_file_name) -l run.log
RUN_VER = -R +fsdb+autoflush -l run.log

#************command************
#normally sim
norsim:
$(NOR_VCS) $(RUN_GUI)

#post-process
postsim:
$(NOR_VCS) $(RUN_VPD)
dve -vpd $(vpdpluse_name).vpd

#coverage
covsim:
$(NOR_VCS) $(COV_SW) $(RUN_COV)
dve -covdir $(cov_file_name).vdb

#verdi
versim:
$(NOR_VCS) $(VERDI_SW) $(RUN_VER) 
//****$(NOR_VCS) : 编译阶段—— 执行VCS普通编译过程,编译过程中产生simv.name文件;
//****$(VERDI_SW):  在编译过程中添加verdi开关选项,主要加入novas.tab类表文件和  pli.a 接口文件文件;
//****$(RUN_VER) : 仿真阶段—— 主要用来产生 .fsdb 文件
verdi -sv -f $(src_list).f -ssf *.fsdb -nologo  
//****启动Verdi,并打开fsdb文件

#rm
clr:
rm -rf *csrc ./*.daidir $(simv_name) *simv* DVE* ucli* *.vpd *.vdb *.log *.fsdb *novas* *.dat *Log *rc *conf

3.nTrace

1、如何调用Verdi? 【重点】

  • Verdi或verdi -nologo
  • makefile中的命令

2、如何查看包含的设计架构?

 3、如何查寻模块实例化的位置?【重点】

①在设计结构中双击实例化模块的名字 ->源代码窗口高亮了设计部分的模块名
②再双击高亮的模块名->看到在上层模块中的哪一行被调用了

4、在nTrace中如何查找  模块和信号?【重点】

或Shift+A:

 

 搜索通配符

5、如何查寻字符串?【重点】

类似于文本查找功能。

或者快捷键斜杠/: 

6、如何查看某个信号是哪些信号驱动的?【重点】

双击信号名,或者单击选中信号名然后点击:

 接着可以通过快捷键N查看下一个被赋值/驱动的位置 或者快捷键P查看上一个被驱动/赋值的位
置。 或点击L后的上、下箭头来选择。

7、如果查看某个信号驱动了哪些信号?【重点】

选中信号,然后点一下:


接着可以通过快捷键N查看下一个驱动其他信号的位置 或者快捷键P查看上一个驱动其他信号的
位置。或点击L后的上、下箭头来选择。

8、如何查找位于不同层次的驱动信号【跨层次查看信号,看最终驱动谁,或者看最终被谁驱动】?【重点】

9、如何查看设计有哪些信号?【重点】

 通过最右下方signal_list来查看,可以选择查看输入/输出等端口类型。

4.nSchema

1、如何打开原理图

选中设计 -> new schematic

2、如何查看nShema Window中符号对应的源代码?

双击对应的功能单元电路图,即可跳转到描述该单元的源代码

3、如何显示原理图中的各个信号/端口/模块名?

4、如何在当前的层次中查找某个信号?

 被查到的信号会高亮

5、使用 Fan-In Cone追踪某个信号的驱动逻辑?

①首先要用上面的办法来查找信号,高亮选中
②调用该工具:

这样就可以看到某个信号是如何生成的(可以通过View选项来显示信号名)

6、如何产生 partial hierarchy schematic?

用来查看与选择特定信号有关的逻辑/模块
①选择需要查看的信号(可以通过shift键来选择多个信号)
②:

选择查看与wclk和wrst_n有关的信号/模块/逻辑:

 

7、如何移动原理图中的器件?

 鼠标左键选中,按住右键进行拖拽。

5.nState

状态机查看器。
很多设计的控制器,状态机组成。
使用Verdi流程。

当拿到一个设计时,你想知道他是怎么工作的?可通过下面操作研究?

1、如何查看状态机视图?

①打开原理图


②双击相应状态机视图后,呈现状态机图

 

2、如何查看状态的执行语句?[重点]
3、如何查看状态的转移条件?

4、如何查看状态以及节点的相关源代码?【重点】

选择状态,然后使用鼠标中键拖拽状态到nTrace中的源代码视图中即可

5、查看在什么时候状态机转移到某个状态?《与tb有关

  

①要依靠tb
②打开nstate后,要导入波形

 

 

6、查看某一种状态转移【状态循环】情况是否会发生?

 

 

7、如何查看某个状态被执行了多少次?《与tb有关》

 

8、如何查看某个状态转移到某个状态的转移次数《与tb有关

5.nWare使用

1、添加波形到nWave

①我们要打开.v文件
②打开nWave然后打开.fsdb波形文件

③正式添加波形:
-快捷键G或者:

2、添加信号到波形【重要】

 -在nTrace中选中信号后,鼠标中键拖拽,或者ctrl+w进行添加

3、查找某信号,添加到nWave中?【重要】

①通过nTrave查找到该信号
②通过上面的方法进行添加
或者通过get signal来查找


4、如何给Group重命名,排序,以及调整信号位置?

重命名:

信号的拖拽:

通过鼠标中键进行拖拽。
 

5、 缩小:【重要】

快捷键z,或者100%匹配:F

6、放大:【重要】

左键拖选放大范围
shift+Z


ctrl+滑轮:进行放大或者缩小

7、移动:【重要】

鼠标中键按住信号拖拽
中键选择位置:

8、复制:

ctrl+P,或者右击信号,选择复制的选项
 

9、粘贴:

ins键,或者右击信号,选择粘贴的选项
(注意:可以通过鼠标中键选择粘贴的位置)

10、删除:【重要】

delete键

11、改变信号的颜色:【重要】

第一步:Tools->preferences->waveform->viewoption->waveformpane->general->paint waveform
with specified color/pattern

 第二步:选中信号,然后按快捷键C改变信号颜色:

12、查看信号及变化:【重要!】

 任意值:所有信号变化,一般会应用到组合逻辑的指示信号
信号沿:用于查找有效指示信号,比如使能信号
总线值:主要是用来查找数据信号
模拟值:查看比如函数发生器产生的正弦波信号

进制之间的转换:

 符号数之间的转换:

 状态寄存器显示为状态名字:

nTrace:

 或者nWave

可以通过移除关联从状态机名字恢复到原来的进制显示: 

 可以看到,我们打开过状态机视图之后,我们也就可以在状态名和进制之间转换了:

13、如何通过逻辑操作创建新信号?

14、如何添加marker?

shift+M


15.总线操作:

16、如何查找信号的某个值、某个值跳转到某个值?

 

 

17、如何对比两个波形?

有关【文档+视频】Verdi基础教程的更多相关文章

  1. Matlab imread()读到了什么 (浅显 当复习文档了) - 2

    matlab打开matlab,用最简单的imread方法读取一个图像clcclearimg_h=imread('hua.jpg');返回一个数组(矩阵),往往是a*b*cunit8类型解释一下这个三维数组的意思,行数、数和层数,unit8:指数据类型,无符号八位整形,可理解为0~2^8的数三个层数分别代表RGB三个通道图像rgb最常用的是24-位实现方法,即RGB每个通道有256色阶(2^8)。基于这样的24-位RGB模型的色彩空间可以表现256×256×256≈1670万色当imshow传入了一个二维数组,它将以灰度方式绘制;可以把图像拆分为rgb三层,可以以灰度的方式观察它figure(1

  2. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  3. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  4. 在VMware16虚拟机安装Ubuntu详细教程 - 2

    在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主

  5. 动漫制作技巧如何制作动漫视频 - 2

    动漫制作技巧是很多新人想了解的问题,今天小编就来解答与大家分享一下动漫制作流程,为了帮助有兴趣的同学理解,大多数人会选择动漫培训机构,那么今天小编就带大家来看看动漫制作要掌握哪些技巧?一、动漫作品首先完成草图设计和原型制作。设计草图要有目的、有对象、有步骤、要形象、要简单、符合实际。设计图要一致性,以保证制作的顺利进行。二、原型制作是根据设计图纸和制作材料,可以是手绘也可以是3d软件创建。在此步骤中,要注意的问题是色彩和平面布局。三、动漫制作制作完成后,加工成型。完成不同的表现形式后,就要对设计稿进行加工处理,使加工的难易度降低,并得到一些基本准确的概念,以便于后续的大样、准确的尺寸制定。四、

  6. python ffmpeg 使用 pyav 转换 一组图像 到 视频 - 2

    2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p

  7. TimeSformer:抛弃CNN的Transformer视频理解框架 - 2

    Transformers开始在视频识别领域的“猪突猛进”,各种改进和魔改层出不穷。由此作者将开启VideoTransformer系列的讲解,本篇主要介绍了FBAI团队的TimeSformer,这也是第一篇使用纯Transformer结构在视频识别上的文章。如果觉得有用,就请点赞、收藏、关注!paper:https://arxiv.org/abs/2102.05095code(offical):https://github.com/facebookresearch/TimeSformeraccept:ICML2021author:FacebookAI一、前言Transformers(VIT)在图

  8. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

  9. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  10. Ruby 等同于 Sphinx 文档生成器? - 2

    Ruby有一些不错的文档生成器,例如Yard、rDoc,甚至Glyph。问题是Sphinx可以做网站、PDF、epub、LaTex等。它在重组文本中完成所有这些事情。在Ruby世界中有替​​代方案吗?也许是程序的组合?如果我也能使用Markdown就更好了。 最佳答案 自1.0版以来,Sphinx有了“域”的概念,它是从Python和/或C以外的语言标记代码实体(如方法调用、对象、函数等)的方法。有一个rubydomain,所以你可以只使用Sphinx本身。您唯一会缺少的(我认为)是Sphinx使用autodoc从源代码自动创建文档

随机推荐