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

news2024/9/21 5:30:47

目录

前言

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 NOVAS_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"$PAT

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、如何对比两个波形?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/12386.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux网络编程11——简单的web服务器

学习视频链接 02-web大练习的概述_bilibili_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1iJ411S7UA/?p132&spm_id_frompageDriver&vd_source0471cde1c644648fafd07b54e303c905 目录 一、项目展示 二、HTTP 协议基础 2.1 HTTP协议基础。 2.2 请求消息(R…

个人博客系统

目录一、项目简介二、项目开发流程2.1 准备工作2.2 实现Vue层2.2 实现Model层2.4 实现Controller层一、项目简介 基于servlet,采用前后端分离的方式,实现个人博客系统,功能包括:登录、注销、编辑、删除博客、发布博客等. 二、项…

用了10年开源工具,换了Smartbi后,3分钟搞定一份报表

大约在20年前,中国企业开始应用国外BI软件,报表工具可以说是BI 1.0时代的代表产物。在BI软件盛行之初,大部分软件都有开源的,从系统到数据库到各类工具、应用,当时大部分企业使用的BI软件包括报表工具,也都…

外汇天眼:外汇占款是什么意思? 与外汇储备之间的差额是由哪些原因造成的?

外汇占款就是指受资国中央银行回收外汇财产而相对投放的本币。 因为人民币是是非非随意换取代币,外资企业导入后需换取成人民币才可以进到商品流通应用,国家以便外资企业兑换外币要投入很多的资产提升了贷币的需要量,产生了外汇占款。 外汇占…

线程池源码解析 3.excute() 方法

线程池源码解析—excute()方法 execute() execute 方法是线程池的核心方法,所有的方法,包括包装的 FutureTask,都是调用这个方法。 大致流程 这里只是总结了一遍大致的流程,一些细节问题见下面的流程图或者参考源码。 当提交任…

【毕业设计】大数据电商销售预测分析 - python 数据分析

文章目录1 前言2 开始分析2.1 数据特征2.2 各项投入与销售额之间的关系2.3 建立销售额的预测模型3 最后1 前言 🔥 Hi,大家好,这里是丹成学长的毕设系列文章! 🔥 对毕设有任何疑问都可以问学长哦! 这两年开始&#x…

Java8新特性 CompletableFuture

Java8新特性 CompletableFuture 什么是CompletableFuture? CompletableFuture类的设计灵感来自于 Google Guava 的 ListenableFuture 类,它实现了 Future 和 CompletionStage 接口并且新增了许多方法,它支持 lambda表达式,通过回…

【IDEA插件】这5款IDEA插件,堪称代码BUG检查神器!

随着业务的发展,系统会越来越庞大,原本简单稳定的功能,可能在不断迭代后复杂度上升,潜在的风险也随之暴露,导致最终服务不稳定,造成业务价值的损失。而为了减少这种情况,其中一种比较好的方式就…

5.盒子阴影(重点)

提示:css3中新增了盒子阴影,我们可以使用box-shadow属性为盒子添加阴影。 1、语法: div{ box-shadow:"h-shadow"或者“v-shadow” } 解释: h-shadow 必须,水平阴影位置,允许负值。 v-shado…

UE4 回合游戏项目 18- 退出战斗

在上一篇(UE4 回合游戏项目 17- 进入指定区域触发战斗事件)基础上完成击败敌人从而退出战斗的功能。 效果: 步骤: 1.打开“battleScenario”蓝图,添加一个自定义事件,命名为“离开战斗” ​ 2.删除所有…

[附源码]Python计算机毕业设计_社区无接触快递栈

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

手撕二叉搜索树

目录 一、概念 二、常见操作 2.1 查找操作 2.2 插入操作 2.3 删除操作 三、模型应用 3.1 K模型 3.2 KV模型 3.3 代码完整实现 四、 性能分析 一、概念 二叉搜索树(BST,Binary Search Tree),也称二叉排序树或二叉查找树 它或者是一棵空树,或者是具有以下…

Spring整合Mybatis和Junit小案例(9)

Spring整合Mybatis和Junit环境准备步骤1:准备数据库步骤2:创建项目导入jar包步骤3:根据数据库的表创建模型类步骤4:创建Dao接口步骤5:创建Service接口和实现类步骤6:添加jdbc.properties文件步骤7&#xff…

5种常用格式的数据输出,手把手教你用Pandas实现

导读:任何原始格式的数据载入DataFrame后,都可以使用类似DataFrame.to_csv()的方法输出到相应格式的文件或者目标系统里。本文将介绍一些常用的数据输出目标格式。 01 CSV DataFrame.to_csv方法可以将DataFrame导出为CSV格式的文件,需要传入一个CSV文件名。 df.to_csv(done.…

在 SPRING Boot JPA 中调用带有本机查询中的参数的存储过程

配置pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.…

惊了!10万字的Spark全文!

Hello&#xff0c;大家好&#xff0c;这里是857技术社区&#xff0c;我是社区创始人之一&#xff0c;以后会持续给大家更新大数据各组件的合集内容&#xff0c;路过给个关注吧!!! 今天给大家分享一篇小白易读懂的 Spark万字概念长文&#xff0c;本篇文章追求的是力求精简、通俗…

Linux(基于Centos7)(一)

文章目录一、任务介绍二、基本操作命令三、目录操作命令四、文件操作命令五、查看系统信息六、其他常用命令一、任务介绍 Linux服务器配置与管理&#xff08;基于Centos7.2&#xff09;任务目标&#xff08;一&#xff09; 实施该工单的任务目标如下&#xff1a; 知识目标 1、…

RNA剪接增强免疫检查点抑制疗效

什么是 RNA 剪接&#xff1f;真核生物基因包含一系列外显子和内含子&#xff0c;内含子必须在转录过程中被移除以便成熟的 mRNA 被翻译成蛋白质&#xff0c;RNA 剪接则是这一过程中至关重要的一步。RNA 剪接包含两类剪接事件。组成型剪接 (constitutive splicing): RNA 剪接的一…

【蓝桥杯Web】第十四届蓝桥杯(Web 应用开发)模拟赛 1 期-职业院校组 | 精品题解

&#x1f9d1;‍&#x1f4bc; 个人简介&#xff1a;一个不甘平庸的平凡人&#x1f36c; &#x1f5a5;️ Nodejs专栏&#xff1a;Node.js从入门到精通 &#x1f5a5;️ TS知识总结&#xff1a;十万字TS知识点总结 &#x1f449; 你的一键三连是我更新的最大动力❤️&#xff0…

企业级Java EE架构设计精深实践

内容简介 本书全面、深入介绍了企业级Java EE设计的相关内容&#xff0c;内容涵盖了Java EE架构设计的常见问题。 本书每一章讲解一个Java EE领域的具体问题&#xff0c;采用问题背景、需求分析、解决思路、架构设计、实践示例和章节总结的顺序组织内容&#xff0c;旨在通过分…