IC开发——verdi基本用法


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。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot集成六大常用中间件,附集成源码,亲测有效

目录 万字论文,从0到1,只需1小时获取途径1、Spring Boot如何集成Spring Data JPA?2、Spring Boot如何集成Spring Security?3、Spring Boot如何集成Redis?4、Spring Boot如何集成RabbitMQ?5、Spring Boot如何…

PGP软件安装文件加密解密签名实践记录

文章目录 环境说明PGP软件安装PGP软件汉化AB电脑新建密钥并互换密钥对称密钥并互换密钥 文件加密和解密A电脑加密B电脑解密 文件签名A电脑签名文件B电脑校验文件修改文件内容校验失败修改文件名称正常校验 环境说明 使用VM虚拟两个win11,进行操作演示 PGP软件安装 PGP软件下…

ML307R OpenCPU 网络初始化流程介绍

一、网络初始化流程 二、函数介绍 三、示例代码 四、代码下载地址 一、网络初始化流程 模组的IMEI/SN获取接口可在include\cmiot\cm_sys.h中查看,SIM卡IMSI/ICCID获取接口可以在include\cmiot\cm_sim.h中查看,PDP激活状态查询可以在include\cmiot\cm_modem.h中查看 二、函…

Java面试八股之多线程编程中什么是上下文切换

多线程编程中什么是上下文切换 上下文切换(Context Switch)是操作系统为了实现多线程或进程并发执行而采取的一种机制。在Java多线程环境中,上下文切换具体指的是CPU控制权从一个正在运行的线程转移到另一个就绪并等待CPU执行权的线程的过程…

Python轴承故障诊断 (21)基于VMD-CNN-BiTCN的创新诊断模型

往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 Python轴承故障诊断入门教学-CSDN博客 Python轴承故障诊断 (13)基于故障信号特征提取的超强机器学习识别模型-CSDN博客 Python轴承故障诊断 (14)高创新故障识别模型-CSDN…

职业探索--运维体系-SRE岗位/CRE岗位/运维岗位-服务心态-运维职业发展方向-运维对象和运维场景

参考来源: 极客时间专栏:赵成的运维体系管理课 极客时间专栏:全栈工程师修炼指南 赵成大佬在鹏讯云社区的文章(77篇) 有了CMDB,为什么还要应用配置管理 故障没有根因,别再找了 如何理解CMDB的套…

构建镜像时候出现奇怪的现象时候

一、背景 构建镜像时候,昨天还好好的,今天出现奇怪的现象 二、查看现象 docker system df#cache 显示600G 三、步骤 这操作比较轻微,20以前的缓存清理掉 docker builder prune --filter until480h # 清除20填以前的构建缓

【智能家居入门1】环境信息监测(STM32、ONENET云平台、微信小程序、HTTP协议)

作为入门本篇只实现微信小程序接收下位机上传的数据,之后会持续发布如下项目:①可以实现微信小程序控制下位机动作,真正意义上的智能家居;②将网络通讯协议换成MQTT协议再实现上述功能,此时的服务器也不再是ONENET&…

对于高速信号完整性,一块聊聊啊(16)

本文将进行串行链路前仿真(包括有源和无源) 1)在ADS中搭建好S参数无源链路原理图,并设置好各项参数,尤其是S仿真器频率、起始频率和步长,如下图所示。 2)查阅所需仿真的信号标准规范文件&#…

使用Python操作Jenkins

大家好,Python作为一种简洁、灵活且功能丰富的编程语言,可以与各种API轻松集成,Jenkins的API也不例外。借助于Python中的python-jenkins模块,我们可以轻松地编写脚本来连接到Jenkins服务器,并执行各种操作,…

服务器数据恢复—EVA存储异常断电重启后虚拟机无法启动如何恢复数据?

服务器存储数据恢复环境: 某品牌EVA8400,服务器上安装VMware ESXi虚拟化平台,虚拟机的虚拟磁盘包括数据盘(精简模式)快照数据盘,部分虚拟机中运行oracle数据库和mysql数据库。 服务器存储故障&检测&…

Python bqplot:轻松打造炫酷交互式数据可视化

更多Python学习内容:ipengtao.com bqplot是一个用于Jupyter Notebook的交互式数据可视化库,由Jupyter团队开发。它基于HTML5 Canvas和d3.js,并使用ipywidgets进行交互,允许用户通过Python代码创建复杂的交互式图表。bqplot的设计目…

【前端】XML和HTML的区别详解

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

重生之 SpringBoot3 入门保姆级学习(07、整合 Redis 案例)

重生之 SpringBoot3 入门保姆级学习&#xff08;07、整合 Redis 案例&#xff09; 导入 Maven 依赖并刷新 Maven <dependencies><!--springboot3 Web 依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring…

中创算力与中国移动初步达成战略合作意向,共同构建智能生态圈!

2024年5月14日&#xff0c;为进一步深化合作&#xff0c;促进业务共同发展&#xff0c;实现双方优势互补。中国移动云能力中心高级专家、郑州移动总经理助理邵根波、管城分公司政企部经理张文孟、航海东路分局张旭红莅临中创算力。中创董事长许伟威、副总经理杨光、技术总监刘朝…

视频营销的智能剪辑:Kompas.ai如何塑造影响力视频内容

引言&#xff1a; 在当今数字化的营销领域&#xff0c;视频内容已经成为品牌吸引用户注意力、建立品牌形象和提升用户参与度的重要方式。然而&#xff0c;要想制作出具有影响力的视频内容&#xff0c;并不是一件容易的事情。这就需要借助先进的技术和工具&#xff0c;如人工智能…

009、字符串_应用场景

缓存功能 Redis作为缓存层&#xff0c;MySQL作 为存储层&#xff0c;绝大部分请求的数据都是从Redis中获取。由于Redis具有支撑高 并发的特性&#xff0c;所以缓存通常能起到加速读写和降低后端压力的作用。 计数 许多应用都会使用Redis作为计数的基础工具&#xff0c;它可…

AI 绘画工具 Stable Diffusion 本地安装使用

最近要用到 AI 绘画&#xff0c;所以研究了下目前市面上的 AI 绘画工具&#xff0c;真可谓是琳琅满目&#xff0c;但主流的还是 Stable diffusion 和 Midjourney 两大阵营。 Midjourney 不多说&#xff0c;开箱即用&#xff0c;对新手非常友好&#xff0c;但不免费&#xff0c…

操作系统实验--终极逃课方法

找到图片里的这个路径下的文件 &#xff0c;结合当前题目名称&#xff0c;把文件内容全部删除&#xff0c;改为print print的内容为下图左下角的预期输出的内容

汇凯金业:如何识别黄金价格图表中的关键支撑和阻力位

识别黄金价格图表中的关键支撑和阻力位是黄金交易的一个基本而关键的技能。以下是一些方法来帮助投资者发现这些重要的价格水平&#xff1a; 1. 历史价格水平 观察图表&#xff0c;找出黄金价格在过去曾多次反弹或回落的价格点。这些水平在未来的交易中可能再次成为关键的支撑…