IC开发——verdi基本用法

news2024/9/22 15:50:38

1. 基础知识

1.1. verdi

VCS和Verdi这两个工具,这两个工具目前都属于synopsys公司。VCS主要负责编译运行Testbench和RTL,并负责生成相应的波形文件。而verdi主要负责加载波形文件,查看信号的波形及其对应的代码来进行调试验证。Verdi最开始是由novas公司设计的,在2008年,被台湾的EDA厂家springsoft(源笙)收购了。在2012年,synopsys收购了spring soft公司,所以此时Verdi才正式属于synopsys。

Verdi®自动调试平台是一种用于调试数字电路设计的高级解决方案,可用于提高复杂的片上系统(SoC),ASIC和FPGA设计效率。传统的调试工具仅依靠结构信息和发挥工程师的个人能力从结构中推断出设计行为。 Verdi平台提供强大的技术,帮助工程师理解复杂和不熟悉的设计行为,自动化困难和繁琐的调试过程,统一各种复杂的设计环境,并推断设计的动态行为。

除了源代码浏览器的标准功能,原理图,波形,状态机图和波形比较(用于比较FSDB格式的仿真结果),Verdi平台还包括使用时间流视图自动跟踪信号活动的高级功能,基于断言的调试,功耗感知调试以及事务和消息数据的调试和分析。所有这些都可以在图形用户界面中使用,该平台使用支持多窗口对接的Qt平台,并且可以轻松定制。

Verdi平台使工程师能够在传统解决方案的一小部分时间内定位,理解和解决错误。这可以最大限度地提高昂贵工程师资源的效率,显着降低成本,并大大加快将硅片推向市场的过程。

1.2. FSDB文件

fsdb文件是verdi使用一种专用的数据格式,类似于VCD,但是它是只提出了仿真过程中信号的有用信息,除去了VCD中信息冗余,就像对 VCD数据进行了一次huffman编码。因此fsdb数据量小,而且会提高仿真速度。我们知道VCD文件使用verilog内置的系统函数来实现 的,fsdb是通过verilog的PLI接口来实现的。$fsdbDumpfile,$fsdbDumpvars等 另外,在VCS仿真器中还有一种VCD+的数据格式VPD,详细情况参照VCS的使用。 注意:WIF:波形中间格式;WLF:波形日志文件。由于在ModelSim下只能打开WLF文件 使用ModelSim行命令vcd2wlf 将VCD文件转化为WLF文件。

2. 分析引擎

  • 结构分析:分析设计结构以显示组件的连接方式
  • 行为分析:分析设计和仿真结果,以显示设计的行为
  • 断言评估:从之前的仿真中搜索有关设计操作的详细信息
  • 事务/消息分析:分析FSDB文件中的事务和消息(日志)数据,并在nWave和电子表格视图中可视化
  • 功耗状态评估:根据UPF中的功耗意图描述以及FSDB文件中相关信号的值评估功耗状态

3. 可视化

Verdi平台以时间流视图的形式提供无与伦比的时间可视化功能。这一革命性的工具从设计数据和仿真结果中提取并显示多周期时间行为。

此外,Verdi平台还包括最先进的结构可视化和分析工具:nTrace用于源代码,nWave用于波形,nSchema用于原理图/逻辑图,nState用于有限状态机(FSM)。这些工具专注于以RTL中的信号关系,原理图/逻辑图中的物理连接,FSM气泡图中的状态和转换以及波形中的值变化的形式分析设计结构。

Verdi平台中的Property Tools窗口为断言提供集中支持,并允许从断言失败到相关设计活动的快速遍历。而事务/消息分析器可以在保存到FSDB文件的事务或日志信息的更高抽象级别上启用调试和分析。 Power Manager窗口提供电源意图的可视化,并支持与其他Verdi平台窗口的交叉探测。

4. 波形

  • 信号窗口:如果需要拖动信号改变显示顺序,需要点击鼠标中键即滚轮选中需要拖动的信号,如下图所示,而黄色光标表示信号拖动后所处位置;改变黄色光标的位置也需要通过点击鼠标中键来完成,配合剪切、复制和粘贴信号等操作。还可以分组信号,添加空白等来排列信号。信号可以显示完成路径或短路径,可以通过View菜单中的hierarchical name来切换,也可以通过快捷键H。

  • 波形窗口:在波形窗口中最主要的是光标和标记的操作,可以由三个键的组合操作就能完成所有工作。
  1. 通过鼠标左键控制光标的位置;
  2. 通过鼠标中键控制标记的位置;
  3. 通过鼠标右键放大光标和标记间区域的波形至整个波形窗口。

在移动光标和标记时,要注意一个选项Waveform->Snap Cursor To Transitions,在使能该选项时,光标和标记始终处于信号波形变化边沿,如1-bit信号的上升沿或者下降沿;在不使能该选项时,光标和标记可以在信号波形任意位置。

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

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

  • 常用快捷键
    • 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

5. 调试

5.1. 载入设计文件及波形

  1. UI启动:启动verdi,载入设计文件(.f文件),然后new waveform来打开波形窗口。在波形窗口打开波形文件(fsdb文件),然后通过Git Signal窗口或者代码窗口添加需要观察的信号。添加好需要观察的信号之后,可以保存相关信号为.rc文件,下次启动波形文件时,可以直接载入信号文件。当波形有更新时,可以通过Reload来重新加载(也可以快捷方式Shift+L)。
  2. 命令行启动:

tb.f即为设计文件列表文件;USER_DEFINE添加用户自定义参数进行仿真调试(vcs编译中可能有类似的参数),xxx.fsdb即为波形文件;&表示在控制台后台执行,即不随控制台关闭而关闭;-nologo即不显示启动界面。

verdi -f tb.f -sv +define+USER_DEFINE -ssf XXX.fsdb -nologo &

两次回归的simv.vdb一起看覆盖率

verdi -cov -covdir XXX/simv.vdb -covdir YYY/simv.vdb &
verdi -cov -covdir XXX/simv.vdb -elfile yyy.el

el文件可以通过verdi gui界面选定exclude的覆盖项保存

verdi -f filelist.f -dbdir ./simv.daidr -ssf xxx.fsdb -top -sv -nologo

5.2. 创建总线分析

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

5.3. 载入文件列表文件

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

5.4. 查找信号

在代码窗口选中信号,可以用鼠标中键将信号拖到查找框

,然后进行下一个、上一个的查找。也可以使用快捷键,Ctrl+F选择要查找的信号,Enter、Shift+Enter下一个、上一个查找。

5.5. 查找驱动源

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

Driver即表示当前信号由哪些信号驱动,即由哪些信号赋值;Load即表示当前信号给哪些信号赋值了。在代码窗口选择信号,双击信号即会跳转到赋值语句,如果多处赋值,也会标记,并在Trace窗口显示所有关联信号。

可以通过鼠标右键菜单中的Active Annotation来标记当前信号的值,快捷键x。

可以通过双击找到驱动来源,也可以在工具栏选择D按钮执行相同的功能,L按钮则是找到当前信号给哪些信号赋值了。

5.6. 添加信号

在nTrace(代码)窗口,选中需要观察波形的信号,用鼠标中键拖到nWave窗口,即可以完成信号的添加。也可以选中多个信号用鼠标中键添加相关信号。也可以选中信号,使用鼠标右键菜单Add to waveform,也可以使用快捷键。

5.7. 统计跳变数量

  1. 添加跳变信号

2. 光标标记起始位置

3. 光标标记结束位置

4. 计算有效跳变量

有效跳变数=结束光标跳变量-开始光标跳变量

5.8. 提取部分波形文件

波形窗口选择File->Extract Selected Sigals.

通过光标和标记选择起始/结束时间范围的波形进行保存。

5.9. 设置信号的显式形式

在波形窗口或代码窗口,右键选择相应的信号,在菜单选择 Set Radix,然后选择不同的显示形式。如显示字符串内容ASCII。

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

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

相关文章

Vulnhub靶机 whowantsobeking :1 打靶 渗透详细过程(萌新)

Vulnhub靶机搭建配置 先搭建vulnhub靶机:https://www.vulnhub.com/entry/who-wants-to-be-king-1,610/ 下载镜像之后whowantsobeking.ova后,用VMware Workstation Pro打开依次点击文件-打开,选择我们刚才下载的ova文件打开,修改…

EpicDesigner编辑器的源码修改和扩展“数据库”进行数据库字段设置

项目介绍: EpicDesigner是一个功能强大、开箱即用的拖拽式低代码设计器。它基于 Vue3 开发,兼容多套 UI 组件库,除了基础的页面设计功能,EDesigner 还提供了强大的扩展功能,可以让开发者根据自己的需求自由扩展和定制…

全局配置Maven

如果开着项目,就file->close project 如果创建有问题可以转到这篇rIDEA2024创建maven项目-CSDN博客https://blog.csdn.net/weixin_45588505/article/details/139271562?spm1001.2014.3001.5502

Android环境下Mesa初始化流程重学习之eglInitialize

Mesa初始化流程重学习之eglInitialize 引言 说来也惭愧,Mesa搞了这么久了,每次都想深入下,可是每次都是浅尝辄止了。这次趁着有了一定的闲暇时间并且有了调试景嘉微显卡的机会,还是想重新学习下,深入研究下&#xff0…

人生二选一:央企就业?美国做博士后?—请看她的抉择

一位30岁的女博士,收到国内央企和德国、美国的博士后邀请函,她该如何选择?知识人网小编推荐这篇文章,为大家解开谜题的同时,也给有同样纠结的学者提供一些启迪。 去年12月底的一个晚上,我收到美国一所高校发…

炒黄金怎么追单?-融知财经网

在黄金投资领域,当市场行情呈现出有利的走势时,许多交易者会选择追加下单以扩大盈利。追单作为一种投资策略,旨在利用市场波动获取额外收益。然而,要想在追单中取得成功,需要掌握一定的技巧和策略。融知财经网给介绍黄金交易中追单的一些关键技巧,帮助投资者理智追单,稳健获利。…

Sui生态DeFi项目Cetus和Aftermath宣布启动孵化器

Sui DeFi中的去中心化交易所Cetus和Aftermath Finance联合Sui基金会宣布启动新的孵化器,为初创项目提供更多可行性途径。这两个DeFi项目在Sui上有着较长的历史,自去年一同与主网推出以来,目前在TVL方面位居前五。这两个项目的持久性和成功使它…

怎么把纸质文件扫描成电子版?方法教会你!

怎么把纸质文件扫描成电子版?在数字化时代,将纸质文件转换为电子版已成为日常工作和学习的必备技能。无论是合同、证件、笔记还是其他文档,通过扫描软件都能轻松实现电子化,方便存储、查阅和分享。以下将介绍几款功能强大、操作简…

vs2019+QT扩展 定义自定义模块选择

环境:vs2019QT扩展(2.63.2) 对于我们如果想将自己的模块,或类似于QtXlsx这样的库直接添加到QT目录中时,也想可以通过选择模块自动引入头文件和库文件时,可以直接通过修改配置文件的方式添加到模块选择界面…

Future Marketing美妆个护品牌数字生态大会报名倒计时

/Future Marketing与创会展讯/ 由Future Marketing组委会携主办,广州市化妆品产业协会、深圳市跨境电子商务协会、上海日化产业协会、福建日化商会等行业协会与媒体战略联动等2024美妆个护品牌数字生态大会将于6月27日在上海举办。大会将以“夯实基础 洞见未来”为…

太速科技-16通道24bit 256kHZ 的振动信号千兆网络采集器

16通道24bit 256kHZ 的振动信号千兆网络采集器 一、产品概述 数据采集器是一台运行Linux操作系统的智能终端,在以太网络的支持下,可迅速构建起大规模的分布式智能数据采集系统。采集器终端体积小,功耗低,易集成&#xff0c…

Java-Stream流-概述、创建、使用:遍历/匹配、筛选、聚合、映射、归约、排序、提取/组合

Java8-Stream: 一、Stream流概述1.Stream流的特点:2.使用步骤:3.常用方法示例: 二、Stream流创建1.常见的创建Stream的方法2. stream()或parallelStream()方法的使用和选择 三、Stream流使用Optional案例中使用的实体类1.遍历/匹配…

c 的库函数有哪些

C语言的库函数非常丰富,涵盖了多种功能,为程序员提供了大量的工具来完成各种任务。以下是一些主要的C语言库函数及其分类: 标准输入输出函数: printf():用于输出格式化的数据到标准输出设备。scanf():用于…

软件需求分析和软件原型开发是一会事情吗?

软件需求分析和软件原型开发是软件开发过程中的两个重要环节,它们各自承担着不同的任务,但又紧密相连,共同影响着软件项目的成功。下面将详细解释这两个环节的定义、目的以及它们之间的关系。 一、软件需求分析 定义:软件需求分析…

display ospf routing类型字段:Transit、Stub(区域内部)与Type2

4. B 通过 display ospf routing 命令可显示本路由器中 OSPF 路由表的信息。 其中的路由条目中 , 包含了 到区域内与本路由器直连 (邻居 )的路由器的路由 (TypeTransit) 、 到区域内与本路由器不直连的路由器的路由 (Type-Stub) 、 到自治系统内其它区域的路由(…

99%的人都不知道,微信才是真正的学习神器

微信,作为一款全球最受欢迎的社交应用之一,除了聊天、朋友圈、小程序等功能外,还有许多隐藏的学习功能,今天小编就给大家分享10个微信隐藏的学习功能,助您轻松成为学霸。 1、微信笔记 用过代办清单软件的朋友都知道&…

五款局域网监控软件良心推荐

五款局域网监控软件良心推荐 有人问我,能不能推荐几款好用的局域网监控软件。 我说,当然可以了,凭良心说,这几款软件在实用性、用户体验、隐私保护以及性价比上,绝对是当前最强监控软件。 1. 安企神 这款软件支持7天…

鸿蒙ArkUI-X跨语言调用说明:【平台桥接(@arkui-x.bridge)】

平台桥接(arkui-x.bridge) 简介 平台桥接用于客户端(ArkUI)和平台(Android或iOS)之间传递消息,即用于ArkUI与平台双向数据传递、ArkUI侧调用平台的方法、平台调用ArkUI侧的方法。 以Android平台为例,Ark…

Scikit-Learn随机森林

Scikit-Learn随机森林 1、随机森林1.1、集成学习1.2、Bagging方法1.3、随机森林算法1.4、随机森林的优缺点2、Scikit-Learn随机森林回归2.1、Scikit-Learn随机森林回归API2.2、随机森林回归实践(加州房价预测)1、随机森林 随机森林是一种由决策树构成的集成算法,它在大多情况…

java -- jar打包成exe -- 携带jre环境

java的项目一般都是以jar发布,很少打包为可执行程序,因此常见的打包方式也不多,且即使打包之后也需要jre环境才能运行,大部分打包都不会携带jre,需要手动添加jre。这里介绍几种我用过的打包方案。 exe4j(不推荐) jpac…