Verdi 基础教程

一、Verdi 功能

  • 查看设计
  • debug
  • Verdi不能自己产生波形

二、Verdi使用流程

1、Verdi环境配置

.bashrc中配置

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"$PATH
//设置为verdi的安装目录

2、VCS产生Verdi波形

·tb文件中加入相应的系统函数

initial begin
$fsdbDumpfile("fifo.fsdb");
$fsdbDumpvars(0);
end

·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 = simsimv_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)                                                    \ 
-l compile.log                                                     \
-f $(src_list).f#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.logRUN_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) verdi -sv -f $(src_list).f -ssf *.fsdb -nologo#rm
clr:
rm -rf *csrc ./*.daidir $(simv_name) *simv* DVE* ucli* *.vpd *.vdb *.log *.fsdb *novas* *.dat *Log *rc *conf

3、Verdi使用

1.打开Verdi

  1. verdi -nologo
  2. makefile 命令

2.nTrace使用

  • 查看包含的设计架构

  • 查寻模块实例化的位置

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

  • 在nTrace中查找模块和信号
  • 查寻字符串

  • 查看驱动信号相关

         

3.nSchema使用

  • 查看原理图

  • 显示原理图各信号名

RTL级

  • 在当前的层次中查找某个信号

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

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

  • 产生partial hierarchy schematic

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

4.nState使用

  • 查看状态机视图?

  • 查看状态的执行语句和转移条件

  • 查看某个状态的执行次数

5.nWare使用

  • 添加波形到nWave

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

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

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

  • 查找某信号,添加到nWave中

①通过nTrave查找到该信号

②通过上面的方法进行添加

或者通过get signal来查找

  • 给Group重命名,排序,以及调整信号位置

(1)重命名:

 

(2)信号的拖拽:

通过鼠标中键进行拖拽。

(3)缩小:

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

(4)放大:

左键拖选放大范围

shift+Z

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

(5)移动:

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

 

(6)复制:

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

(7)粘贴:

ins键,或者右击信号,选择粘贴的选项

(注意:可以通过鼠标中键选择粘贴的位置)

(8)删除:

delete键

  • 改变信号的颜色:

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

 

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

  • 查看信号及变化:

任意值:所有信号变化,一般会应用到组合逻辑的指示信号信号沿:用于查找有效指示信号,比如使能信号

总线值:主要是用来查找数据信号

模拟值:查看比如函数发生器产生的正弦波信号

进制之间的转换:

符号数之间的转换:

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

nTrace:

或者nWave:

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

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

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

  • 如何添加marker?

shift+M

  • 总线操作:

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

    

  • 如何对比两个波形?

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

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

相关文章

ida和idr机制分析(盘符分配机制)

内核ida和idr机制分析(盘符分配机制) ida和idr的机制在我个人看来,是内核管理整数资源的一种方法。在内核中,许多地方都用到了该结构(例如class的id,disk的id),更直观的说&#xff0…

MIPI CSI-2学习

CSI(Camera Serial Interface)定义了摄像头外设与主机控制器之间的接口,旨在确定摄像头与主机控制器在移动应用中的标准。 关键词描述 缩写解释CCICamera Control Interface(物理层组件,通常使用I2C或I3C进行通信&…

internet网络 checksum校验和计算方法

http://hi.baidu.com/%CE%C4%B3%AD%B9%AB/blog/item/7d9a4e08f82d72b32eddd4cb.html

最有效的创建大数据模型的6个技巧

数据建模是一门复杂的科学,涉及组织企业的数据以适应业务流程的需求。它需要设计逻辑关系,以便数据可以相互关联,并支持业务。然后将逻辑设计转换成物理模型,该物理模型由存储数据的存储设备、数据库和文件组成。 历史上&#xff…

【转】Castle Windsor之组件注册

【转】Castle Windsor之组件注册 注册方式较多&#xff0c;大体有这么几种&#xff0c;学习得比较粗浅&#xff0c;先记录&#xff1a;1、逐个注册组件即对每个接口通过代码指定其实现类&#xff0c;代码&#xff1a;container.Register(Component.For<IMyService>() //接…

Verilog 补码加法溢出判断及处理

补码加法运算溢出判断三种方法&#xff1a; 一、符号位判断 Xf、Yf分别两个数的符号位,Zf为运算结果符号位。 当Xf Yf 0&#xff08;两数同为正&#xff09;,而Zf1(结果为负)时,负溢出&#xff1b;当出现Xf Yf 1&#xff08;两数同为负&#xff09;,而Zf0&#xff08;结果为…

Android绘制(三):Path结合属性动画, 让图标动起来!

Android绘制(一):来用shape绘出想要的图形吧! Android绘制(二):来用Path绘出想要的图形吧! 目录 效果图前言绘制属性动画最后效果图 不废话, 直接上效果图, 感兴趣再看下去. 其实不单单是效果图演示的, 运用熟练的话各种图标之间都是可以切换的. 前言 之前的文章也说了, path还…

{{view 视图层}}微信小程序

微信小程序 view 视图层//自学 1.数据绑定 数据绑定WXML中的动态数据均来自对应Page的data。 简单绑定数据绑定使用"Mustache"语法&#xff08;双大括号&#xff09;将变量包起来&#xff0c;可以作用于&#xff1a; 内容<view> {{ message }} </view>Pa…

CMOS图像传感器——概述

一、概述 图像传感器是把光学图像信息转换成电信号的器件。图像传感器是随着电视技术在20世纪30年代发展起来的,早期图像传感器技术的最重要贡献在于建立了扫描(Scan)的概念,用扫描的方法把二维空间平面上的光电信息离散成行(Line)和帧(Frame),然后按空间顺序读出形成…

nand flash坏块管理OOB,BBT,ECC

0.NAND的操作管理方式 NAND FLASH的管理方式&#xff1a;以三星FLASH为例&#xff0c;一片Nand flash为一个设备(device)&#xff0c;1 (Device) xxxx (Blocks)&#xff0c;1 (Block) xxxx (Pages)&#xff0c;1(Page) 528 (Bytes) 数据块大小(512Bytes) OOB 块大小(16Byte…

小白学git2

你已经在本地创建了一个Git仓库后&#xff0c;又想在GitHub创建一个Git仓库&#xff0c;并且让这两个仓库进行远程同步&#xff0c;这样&#xff0c;GitHub上的仓库既可以作为备份&#xff0c;又可以让其他人通过该仓库来协作&#xff0c;真是一举多得。 首先&#xff0c;登陆G…

[LeetCode_5] Longest Palindromic Substring

LeetCode: 5. Longest Palindromic Substring class Solution { public: //动态规划算法string longestPalindrome(string s) {int n s.length();int longestBegin 0;int maxLen 1;bool table[1000][1000] {false};for (int i 0; i < n; i) {table[i][i] true;}//对角…

冒泡排序java

一、最简单粗暴的排序 思想为&#xff1a;让每一个关键字都和它后边的每一个关键字比较&#xff0c; 如果大则交换&#xff0c;这样第一个位置的关键字在一次循环后一定变为最小值。 1 package demo01;2 3 class BubbleSort01 {4 public static void main(String[] args) {…

CMOS图像传感器——工作原理

一、像素阵列结构 一般像素阵列是由水平方向的行( Row ) 和垂直方向的列(Column)正交排列构成的。像素排列的最基本设计原则是:摄像器件像素排列的坐标,必须在显示的时候能够准确地还原在图像原来的相对位置上。在大多数情况下,每个像素中心线在行的方向和列的方向,即…

追寻终极数据库 - 事务/分析混合处理系统的交付挑战 (3)

挑战&#xff1a;支持多个存储引擎 以下内容并不是新发现&#xff1a;行优化存储适用于OLTP和运营工作负载&#xff0c;而列存储适用于BI和分析工作负载。频繁写入的工作负载适用于行式存储。对Hadoop而言&#xff0c;Hbase适合低延迟工作负载&#xff0c;列式ORC文件或Parquet…

hibernate快速入门

第一步:下载Hibernate的开发包:  http://sourceforge.net/projects/hibernate/files/hibernate3 第二步:Hibernate框架目录结构:  documentation :Hibernate文档  lib :Hibernate开发jar包    bytecode :操作字节码jar包.    jpa :Hibernate的实现jpa规范.   …

U-boot给kernel传参数和kernel读取参数—struct tag

U-boot 会给 Linux Kernel 传递很多参数&#xff0c;如&#xff1a;串口&#xff0c; RAM &#xff0c; videofb 等。 而 Linux kernel 也会读取和处理这些参数。两者之间 通过 struct tag 来传递参数。 U-boot 把要传递给 kernel 的东西保存在 struct tag 数据结构中&#xf…

异步FIFO设计(Verilog)

FIFO&#xff08;First In First Out&#xff09;是异步数据传输时经常使用的存储器。该存储器的特点是数据先进先出&#xff08;后进后出&#xff09;。其实&#xff0c;多位宽数据的异步传输问题&#xff0c;无论是从快时钟到慢时钟域&#xff0c;还是从慢时钟到快时钟域&…

python中RabbitMQ的使用(路由键模糊匹配)

路由键模糊匹配 使用正则表达式进行匹配。其中“#”表示所有、全部的意思&#xff1b;“*”只匹配到一个词。 匹配规则&#xff1a; 路由键&#xff1a;routings [ happy.work, happy.life , happy.work.teacher, sad.work, sad.life, sad.work.teacher ] "#"&am…