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。

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

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

相关文章

Linux 查找命令的操作,学完效率瞬间翻倍?

可以很肯定地说,find 命令是 Linux 运维必须熟知的操作之一。 让我们看一道题: 如果你的 Linux 服务器上有一个名为 .logs 的目录,如何删除该目录下最后一次访问时间超过一年的日志文件呢? 这种情况很常见,但令人惊讶…

【Linux系统】进程间通信

本篇博客整理了进程间通信的方式管道、 system V IPC的原理,结合大量的系统调用接口,和代码示例,旨在让读者透过进程间通信去体会操作系统的设计思想和管理手段。 目录 一、进程间通信 二、管道 1.匿名管道 1.1-通信原理 1.2-系统调用 …

简谈SUID提权

SUID提权 0x01什么是SUID ​ SUID (Set UID)是Linux中的一种特殊权限,其功能为用户运行某个程序时,如果该程序有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件所属的属主。但是SUID权限的设置只针对二进制可…

强化学习4:DQN 算法

看这篇文章之前,建议先了解一下:Q-Learning 算法。 1. 算法介绍 DQN 算法全称为 Deep Q-Network,即深度Q网络。它将 Q-Learning 与 Deep Learning 结合在了一起。 1.1 Q-Network Q-Learning 是使用 Q-table 才存储决策信息的,…

AI推文神器,绘唐ai,文刻创作出品,sdmj二合一虹猫

AI推文神器,绘唐ai,文刻创作出品,sdmj二合一虹猫 https://qvfbz6lhqnd.feishu.cn/wiki/CcaewIWnSiAFgokOwLycwi0Encfhttps://qvfbz6lhqnd.feishu.cn/wiki/CcaewIWnSiAFgokOwLycwi0Encf AI推文神器是一种基于人工智能技术的工具,旨在帮助用户快速生成优质的推文。它通过分…

iPhone“已删除”照片被恢复,苹果到底有没有后门?

继微软本周推出的Windows“回忆”功能引发隐私焦虑,遭马斯克和安全大咖们猛烈抨击后,苹果iPhone手机近日也曝出了类似的“记忆门”。 删除十几年的iPhone照片被恢复 近日,有苹果手机用户更新了苹果上周发布的iOS 17.5系统后,意外…

2024最新版本激活Typora,1.8.10.0版本可用

​实测可用日期为:2024-05-28 目前最新版本 1.8.10.0 也是可以实现激活的 注:免修改注册表、不用修改时间,更不需要破解补丁 01、下载&安装 Typora 文件 从官网下载最新版本的 Typora,并安装 或者阿里云盘: htt…

Pytorch深度学习实践笔记12(b站刘二大人)

🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:pytorch深度学习 🎀CSDN主页 发狂的小花 🌄人生秘诀:学习的本质就是极致重复! 《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibi…

数据集008:吸烟、抽烟检测数据集(含数据集下载链接)

数据集简介 两个数据集 一个是783张图片对应的xml文件 一个是2482张图片对应的xml文件 如下图所示: 部分代码: # 测试数据读取 def test_data_loader(datadir, batch_size 10, test_image_size608, modetest):"""加载测试用的图片…

大学生选择算法向还是嵌入式向?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 由于嵌入式的薪资待遇和…

品牌建设不迷路:系统化方法让品牌成长更高效

很多创始人才创业过程中都会发现: 企业越大,遇到的系统性的底层品牌问题就会越多,品牌的系统化建设底层根基如果不稳,后续的增长也会摇摇欲坠。 所以在当今竞争激烈的市场环境中,品牌的成功不仅仅依靠一个响亮的名字…

【Linux】Linux的权限_1

文章目录 三、权限1. shell外壳2. Linux的用户3. Linux权限管理文件访问者的分类文件类型和访问权限 未完待续 三、权限 1. shell外壳 为什么要使用shell外壳 由于用户不擅长直接与操作系统直接接触和操作系统的易用程度、安全性考虑,用户不能直接访问操作系统。 什…

文件IO(一)

文件IO(一) 文件IO文件的分类在文件IO下,文件分类按存储的内容分按照操作分 标准IO和文件IO的区别系统调用和库函数的区别 文件IO 把程序暂存在内存的数据,存储到本地外存上 文件的分类 在Linux系统下,文件共分为7类…

AI答题项目,无门槛答题一小时收益30+

朋友们,今天我想和大家探讨一个令人兴奋的副业机遇。你是否曾感觉到日常工作的枯燥乏味,而又渴望找到一种轻松的赚钱方式来增加你的收入?今天我将和你分享的这个项目正是你所期待的。 项目的核心是利用AI技术来回答网上付费用户的问题&…

重生之我要精通JAVA--第六周笔记

File 路径 相对路径 路径1:“a.txt” 路径2:“abc\\a.txt” 绝对路径 路径1:“c:\\a.txt” 路径2:“c:\\abc\\a.txt” File对象就表示一个路径,可以是文件的路径、也可以是文件夹的路径这个路径可以是存在的&…

linux线程,线程控制与线程相关概念

线程概念 线程这个词或多或少大家都听过,今天我们正式的来谈一下线程; 在我一开始的概念中线程就是进程的一部分,一个进程中有很多个线程,这个想法基本是正确的,但细节部分呢我们需要细细讲解一下; 什么…

“揭秘:为什么羊驼Ollama成为计算机运行大型语言模型的最佳拍档?“

最近,AIM 评测了在计算机上本地运行大语言模型(LLM)的最佳工具,Ollama 脱颖而出,成为最高效的解决方案,提供了无与伦比的灵活性。Ollama 是 Jeffrey Morgan 开发的一款开源工具,它正在彻底改变爱…

我被恐吓了,对方扬言要压测我的网站

大家好我是聪,昨天真是水逆,在技术群里交流问题,竟然被人身攻击了!骂的话太难听具体就不加讨论了,人身攻击我可以接受,我接受不了他竟然说要刷我接口!!!!这下…

【NumPy】掌握NumPy的histogram函数:数据直方图的生成与应用详解

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

速度百倍提升,高性能 Python 编译器 Codon 火了

引言 在当下的编程世界里,Python由于其易用性和强大的库支持在数据科学、人工智能和网页开发等多个领域占据着举足轻重的地位。然而,Python的执行速度往往成为开发者的一大痛点。 针对 这一问题,Codon项目正试图提供一个高效的解决方案。Codo…