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进行通信&…

nand flash坏块管理OOB,BBT,ECC

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

小白学git2

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

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

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

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

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

异步FIFO设计(Verilog)

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

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

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

时钟切换处理(Verilog)

随着各种应用场景的限制,芯片在运行时往往需要在不同的应用下切换不同的时钟源,例如低功耗和高性能模式就分别需要低频率和高频率的时钟。两个时钟源有可能是同源且同步的,也有可能是不相关的。直接使用选择逻辑进行时钟切换大概率会导致分频…

Angular Elements 组件在非angular 页面中使用的DEMO

2019独角兽企业重金招聘Python工程师标准>>> 一、Angular Elements 介绍 Angular Elements 是伴随Angular6.0一起推出的新技术。它借助Chrome浏览器的ShadowDom API,实现一种自定义组件。 这种组件可以用Angular普通组件的开发技术进行编写,…

卢卡斯定理

卢卡斯定理:解决一类组合数取模问题 A、B是非负整数,p是质数。AB写成p进制:Aa[n]a[n-1]...a[0],Bb[n]b[n-1]...b[0]。 则组合数C(A,B)与C(a[n],b[n])*C(a[n-1],b[n-1])*...*C(a[0],b[0]) modp同余 即:Lucas(n,m,p)c(n%p,m%p)*Luc…

loadrunner中对https证书的配置

1、准备好网站的证书,一般证书是cer格式; 2、因为loadrunner只支持pem格式的证书,所以要将证书转换格式,利用openssl工具;(或者直接让开发提供pem格式的证书)3、得到pem格式的证书之后&#xff…

Datapath综合代码规范(Verilog)

一、一般准则 1、有符号数运算 利用类型“signed”完成有符号数运算,而不是用无符号数模拟有符号数运算。这样可以得到更好的QoR。在资源报告中检查操作数的类型和大小。 2、符号/零扩展 尽量不要手动扩展。verilog利用signed/unsigned会自动完成扩展。这样代码可…

CMOS 图像传感器——Skipping 和 Binning 模式

在通常的CMOS读取方式中,由于像素读取规模的差异,不同的分辨率对应不同的帧率。在通道带宽固定的前提下,想要提高帧率就要考虑是否需要缩小视野(外圈裁切)。若不希望视野缩小,需要减少采样的分辨率。 常用的…

APB协议学习

APB(Advanced Peripheral Bus) 1、APB的概述与特点 APB主要用于低带宽的周边外设之间的连接,例如UART、1284等,它的总线架构不像AHB支持多个主模块,在APB里面唯一的主模块就是APB 桥。其特性包括:两个时钟周期传输;无…

私有协议栈开发

通信协议从广义上区分,可以分为公有协议和私有协议。由于私有协议的灵活性,它往往会在某个公司或者组织内部使用,按需定制,也因为如此,升级起来会非常方便,灵活性好。绝大多数的私有协议传输层都基于TCP/IP…

数字图像处理——2D降噪

图像降噪处理主要分为2D(空域)与3D降噪(时域/多帧),而2D降噪由于相关的实现算法丰富,效果各异,有着丰富的研究价值。理解2D降噪算法的流程,也对其他的增强算法有很大的帮助&#xff…

项目开发(Require + E.js)

最近在做的几个项目,分别用了不同的框架跟方式,有个H5的项目,用了vue框架, 这个项目我还没有正式加入进去, 等手头的这个项目完成就可以去搞vue了, 现在手头的这个项目是一个招聘的项目, 用到了…

AHB协议学习

1. 简介 AHB(Advanced High Performance Bus)总线规范是AMBA(Advanced Microcontroller Bus Architecture) V2.0总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus)、A…