当前位置: 首页 > 编程日记 > 正文

『转载』Debussy快速上手(Verdi相似)

『转载』Debussy快速上手(Verdi相似)

Debussy 是NOVAS Software, Inc(思源科技)发展的HDL Debug & Analysis tool,这套软体主要不是用来跑模拟或看波形,它最强大的功能是:能够在HDL source code、schematic diagram、waveform、state bubble diagram之间,即时做trace,协助工程师debug。

可能您会觉的:只要有simulator如ModelSim就可以做debug了,我何必再学这套软体呢? 其实Debussy v5.0以后的新版本,还提供了nLint -- check coding style & synthesizable,这蛮有用的,可以协助工程师了解如何写好coding style,并养成习惯。

下图所示为整个Debussy 的原理架构,可归纳几个结论:

Debussy有四个主要单元(component),nTrace、nWave、nSchema、nState

l nTrace -- Hypertext source code analysis and browse tool (为%Debussy &所开启的主画面)

l nWave -- Waveform analysis tool (可由nTrace内开启,或直接%nWave &开启)

l nSchema -- Hierarchy schematic generator

l nState -- Finite State Machine Extraction and analysis tool

Debussy本身不含模拟器(simulator),必须呼叫外部模拟器(如Verilog-XL or ModelSim)产生FSDB file,其显示波形的单元"nWave"透过读取FSDB file,才能显示波形或讯号值的变化
clip_image001

快速上手五部曲: (Debussy v.5.2)

1. Import Files and generate FSDB file
2. Trace between hierarchy browser and source code
3. Trace between hierarchy browser、source code and schematic
4. Trace between hierarchy browser、source code、schematic and waveform
5. nLint
(nState本文没介绍,有兴趣的读者,请依文后的连结,自行下载CIC所提供的NOVAS原厂编写教材参考)

1.Import Files and generate FSDB file

1-1 启动Debussy:% Debussy & (此处的D大小写都可以,但其它指令的大小写可能就有差别)

开启nTrace window如下,此时工作目录下会新建一个"DebussyLog"目录
clip_image002

1-2 Import Files:File \ Import Design...
clip_image003

结果如下图所示:nTrace视窗中,含有三个区域,Hierarchical Brower、Source code window、Message window。
(如果不想看波形,只想查看source code与schematic的关係,您可以直接跳到step 2-1)
clip_image004

此时DebussyLog目录内会有Debussy.cmd、turbo.log、compiler.log三个档案。Debussy.cmd纪录所有import
的档案与之后所有的执行程序。我们可以直接引用这个档案来执行上一次我们做过的一连串程序(refer to 1-5)。

1-3 设定外部模拟器,藉其產生FSDB file: Tools \ Options \ Preferences...
clip_image005

1-4 切换到Interactive Mode:Tools \ Interactive Mode (此时ToolBar上会出现Simulation选单)
开始执行模拟:Simulation \ Run/Continue (模拟结束工作目录下就会產生dump_i.fsdb )
clip_image006

Source code目录下,要有先前ModelSim所建立的此project的work library,不然会有错误讯息:Failed to access library 'work' at "work"。另外,你不能只是开一个work资料夹,而是要真的用ModelSim產生work library,并且把design compile to the work library后,step 1-4才会正确动作。

1-5 结束程式:File \ Exit

1-6 快速启动执行序

把DebussyLog目录下的指令记录档Debussy.cmd复制到目前工作目录下,重新编辑此档 (删掉最后一行的"debExit"
然后储存),引用它来开启Debussy可重复之前同样的动作程序

% Debussy -play Debussy.cmd &(结果相当於从步骤1-1做到1-4)

1-7 其他启动Debussy的方法

% Debussy -f xxx.f (类似开启一个事先编写的批次档,可以同时一次载入多个.v)
% Debussy -vhdl -f xxx.f (类似开启一个事先编写的批次档,可以同时一次载入多个.vhd)

以上都是属於Import design from file的方法,另外还有一种方法是Import design from library。两者的差异在於:
Import design from file是将design compile to RAM,而Import design from library则是将design compile to library
(default lib. is "work")。

对於比较大的project,為了避免每次使用Debussy都要花时间compile,建议採用Import design from library的方
法,而且mixed-language design一定要用Import design from library的方法。

Ex. for Verilog files:%vericom -inc -f run.f
%Debussy -lib work -top xxx &

Ex. for VHDL files:%vhdlcom -93 -f run.f
%Debussy -lib work -top xxx &

2.Trace between hierarchy browser and source code

2-1 在Hierarchy browser点击A1(FourBitAdder)左侧的符号"+",可以展开四个full adder (fa0, fa1, fa2, fa3)

clip_image007 -> clip_image008

2-2 试著双击Hierarchy browser内的testbed or A1 or fa0 ...
右边的source code window会立即切换到相对的module
clip_image009

也可以利用滑鼠"中键",将左边的module name直接拖曳丢进右边source code window,效果相同。
(利用滑鼠中键在不同视窗间拖曳,是Debussy中最常用的方法)

2-3 双击上图source code window内的"fulladder"(in line 8),软体会自动帮你追踪出引用fa0的地方
结果示於下图 -- A1(FourBitAdder)的fa0 (in line 32);若再双击fa0(in line 32),则又回到上图。
--> 你可以藉由这个方法,轻易的追踪出project内的所有design彼此之间的关连性
clip_image010

clip_image012 :恢复上一动作

2-4 除了追踪designs之间的关连性,也可以用同样的方法追踪出signal's drivers and loads。
若双击上图的讯号c_in (in line 24),将显示该讯号的所有的drive loads
结果如下图 -- message window显示,有4处drive c_in,分别在add4test line 69, 71, 73, 75
clip_image013

用Show Next clip_image015来查看所有的drive loads (at line 69, 71, 73, 75)

选定line 69, Trace \ Load clip_image017则可用来追踪该讯号的所有"loads"
clip_image018

3.Trace between hierarchy browser、source code and schematic

3-1 开启nSchema有三种方法

* (nTrace) Tools \ New Schematic \ ...
* 双击工具列上的New Schematic clip_image020icon
* 把想看schematic的部分,直接以滑鼠中键,从hierarchy browser拖曳丢进 clip_image020[1]icon (常用)

下图是把A1(FourBitAdder)丢进New Schematic icon的结果:
clip_image021

如果想直接看symbol "fulladder"的source code,先以左键选定(highlight)该元件,然后按右键,从快速选单选择"Display Source Code"

选择(highlight)第一个full adder的第二条输出讯号,然后按Tools \ New Schematic \Fan-In Cone试试

clip_image023分别用来缩小/放大画面,clip_image025 则是让图形大小自动调整至填满整个视窗(如上图)

clip_image027回前一画面;clip_image029 回最上层画面

3-2 双击上图内的元件符号(如第一个fulladder)可进一步看到其内容/ 细部电路组成(fa0)
clip_image030

3-3 请自行尝试,在hierarchy browser、source code与schematic window之间,用滑鼠中键互相拖曳designs/signals的效果

4.Trace between hierarchy browser、source code、schematic and waveform

4-1 接下来的操作,需要利用模拟器所产生的资料(.fsdb),以"nWave"显示讯号波形,有两种可能作法

从1-6(对Import files已作compile,也有其.fsdb file),接著开启"nWave"

从1-1~1-2,然后开啟"nWave",载入1-4所产生的dump_i.fsdb。
开启"nWave"的方法有三种
* 按(nTrace)工具列的clip_image032 (New Waveform icon)
* (nTrace) Tools \ New Waveform
* % nWave &

4-1-1 如果是从1-2接著打开nWave window,一开始nWave内容是空的,要执行(nWave) File \ Open...
以载入dump_i.fsdb。
clip_image033

4-1-2 接著按clip_image035 Get Signals icon,此时就会看到有讯号可以让你选择了
-- 如果你看不到讯号,把想观察的design(A1),直接从(nTrace) Hierarchy browser拖进nWave就可以
clip_image036

4-1-3 (nWave) View \ Zoom \ Zoom All
-- 如果你看不到波形,请再执行一次 (nTrace) Simulation \ Run/Continue就会看到
clip_image037

已在signal window选择的讯号,如果想要删除:选定要删除的讯号highlight,按滑鼠右键选择"Cut"
如果是从1-6接著打开nWave window的,直接进行step 4-1-2即可

4-2 启动Active Annotation功能:(nTrace) Source \ Active Annotation
能够在nWave选择讯号触发缘,同时在nTrace的source code的所有讯号符号下方,直接看到数值的变换

4-3 在nWave双击想观察其触发状况的讯号 (如c_out)
clip_image038

4-4 从(nTrace)Hierarchy browser双击A1(FourBitAdder),按 clip_image040Search Forward icon,看看在nTrace与nWave的变化
clip_image041

5.nLint

5-1 开启图形介面的nLint

% nLint -gui & (大小写不能改,n一定要小写,L一定要大写)

开启nLint window如下,此时工作目录下会新建一个"nLintLog"目录
clip_image042

5-2 Import Files:File \ Import Design... (与step 1-2一模一样的操作后,结果如下所示)
clip_image043

5-3 执行Run \ Compile

5-4 执行Tools \ Rule Organizer,或按clip_image045 选择check哪些rules
-- 不想检查的项目,就把E/D那一栏的核选框框取消
clip_image046

5-5 执行Run \ Lint -- 会自动跳出ReportViwer显示检查结果
clip_image047

5-6 展开report,选择第一个黄色警示标示,其出错的原因与原始码部份,会即时显示在下方的栏框中。
如果要修改source code,在该错误选项上,按滑鼠右键,选择Show violation \ to default editor
clip_image048

对於不想检查的档案,可以选定该档后,按clip_image049 再做compile。以此例而言,testbench是不可合成的,
故若先对add4test.v做suppress再执行step 5-5,结果就会变成"0 violation"。

Verdi调试

Verdi调试主要分为以下几步

1、Load design and testbench into Debussy;

2、打开nWave,载入对应的FSDB;

3、在nTrace中将要观察的信号通过鼠标中键Drag&Drop拖放到nWave中;

4、通常都是在波形上发现问题,找到错误地方并双击鼠标,会自动跳到Real driver statement,也即会跳到源代码所在。

5、nTrace中,Active Annotation(快捷键X)标出仿真结果在source code下;

6、在先前driver statement中找个driver来使用active trace来追踪有效驱动。

7、只需执行一遍仿真就可以查看所有的波形,而在modelsim中则需要反复运行add wave命令,每一次都要重新仿真。

8、可以查看设计的原理图schematic,这非常方便查看每一个module和wire的所对应的硬件结构,modelsim现在还没有这个功能。

9、在仿真时可以很轻易地追踪每个信号所对应的源码。

转载于:https://www.cnblogs.com/OneFri/p/5285707.html

相关文章:

大家好,新年快乐。

刚申请了个博客,祝大家新年快乐。 ------------- So many children are playing zhu zhu pets at home.This t…

maven项目找不到pom.xml配置的dependency jar中的类问题解决方法

成功创建一个web项目后,假如我们在web.xml文件中,配置了spring的listener,在pom.xml中也已经作了依赖配置。部署 完项目后,启动项目,发现找不到spring配置的listner 类:org.springframework.web.context.Co…

红旗linux yum,更换红旗Linux: Asianux的yum源为网易源

测试环境:Linux系统版本Asianux4_x64:Linux localhost.localdomain 2.6.32-279.2.1.el6.x86_64 #1 SMP Tue Aug 14 11:42:24 CST 2012 x86_64 x86_64 x86_64 GNU/Linux本质上Asianux4_x64就是基于Redhat6企业版的。出现问题:安装完系统之后&a…

Java Socket编程 - 基于TCP方式的二进制文件传输【转】http://blog.csdn.net/jia20003/article/details/8248221...

此人博客挺好的,推荐一个! 一个基于Java Socket协议之上文件传输的完整示例,基于TCP通信完成。 除了基于TCP的二进制文件传输,还演示了JAVA Swing的一些编程技巧,Demo程序 实现主要功能有以下几点: 1. …

SuSE下VNCVIEWER没有出现界面,只有shell窗口的问题

首先正确配置,打开vncserver :1,实际上有三个服务,vnc1,vnc2,vnc3,对应着三个服务,先打开。 可以直接在shell下输入 #vncserver :1.也可以使用界面打开Network Service (xinetd),将服…

docker容器互联

link方式 http://blog.csdn.net/halcyonbaby/article/details/42112325 通过link方式创建容器,然后我们可以使用被link容器的别名进行访问。从而解除应用对IP的依赖。不幸的是,link方式只能解决单机容器间的互联。多机情况下,容器的互联需要其他的方式。…

glib 2.0 arm linux,glib源码安装使用方法

glib库是GTK和GNOME工程的基础底层核心程序库,是一个综合用途的实用的轻量级的C程序库,它提供C语言的常用的数据结构的定义、相关的处理函数,有趣而实用的宏,可移植的封装和一些运行时机能,如事件循环、线程、动态调用…

iOS 用自签名证书实现 HTTPS 请求的原理实例讲解

在16年的WWDC中,Apple已表示将从2017年1月1日起,所有新提交的App必须强制性应用HTTPS协议来进行网络请求。默认情况下非HTTPS的网络访问是禁止的并且不能再通过简单粗暴的向Info.plist中添加NSAllowsArbitraryLoads设置绕过ATS(App Transport Security)的…

WordPress Editorial Calendar插件权限安全绕过漏洞

漏洞名称:WordPress Editorial Calendar插件权限安全绕过漏洞CNNVD编号:CNNVD-201302-369发布时间:2013-02-22更新时间:2013-02-22危害等级: 漏洞类型:权限许可和访问控制威胁类型:远程CVE编号…

文件操作(ifstream、ofstream、fstream)

原文链接:http://blog.csdn.net/soar_ersa/article/details/3908943 转载于:https://www.cnblogs.com/MrYuan/p/5288264.html

linux error log 换行,日志提示

日志提示线上问题,需要看日志。控制台可以打印Mybatis操作的SQL语句。开发流程:第一步:加入依赖image.png第二步:在项目的resources中加入log4j属性文件image.png第三步:演示image.png扩展了解一、日志概念的介绍Log4j…

本页面添加至收藏夹

经常在网站页面上需要把本页面添加至收藏夹 <script type"text/javascript">function addMe() {var url document.location.href;var wTitle document.title;if (document.all) {window.external.addFavorite(url, wTitle);} else if (window.sidebar) {wind…

javascript——Array类型

今天这节教程不仅仅是阐述ECMAScript3的部分功能&#xff0c;同时也会阐述有关EXMASctip5的很多新的功能。 一、创建 因为它是一个引用类型&#xff0c;自然就需要在使用前先构造它。 我将分成两种方式来讲述 I、构造函数 1.空的Array实例 var colors new Array(); 2.初始化存…

iOS使用自签名证书实现HTTPS请求

原文链接:http://www.jianshu.com/p/e6a26ecd84aa 由于苹果规定2017年1月1日以后&#xff0c;所有APP都要使用HTTPS进行网络请求&#xff0c;否则无法上架&#xff0c;因此研究了一下在iOS中使用HTTPS请求的实现。相信大家对HTTPS都或多或少有些了解&#xff0c;这里我就不再介…

蜜蜂实训平台c语言考试答案,北理c语言上机答案(全)

小蜜蜂的不过,麻烦大家上百度找一下~1 Hello world让我们用C语言向世界问好。 最早的程序基本是这个样子的&#xff1a; 程序一&#xff1a;#include void main() {printf("Hello world.\n"); }程序二&#xff1a;#include int main() {printf("Hello world.\n&…

ecshop目录结构

ECShop 最新程序 的结构图及各文件相应功能介绍ECShop文件结构目录┣ activity.php 活动列表┣ affiche.php 广告处理文件┣ affiliate.php 生成商品列表┣ article.php 文章内容┣ article_cat.php文章分类┣ auction.php 拍卖前台文件┣ brand.php 品牌列表┣ captcha.php 生…

一劳永逸,iOS 网页视图控制器通用类封装

原文链接&#xff1a;http://www.jianshu.com/p/553424763585随着 H5 的发展&#xff0c;在 iOS 开发中&#xff0c;网页视图的使用率逐渐提升&#xff0c;为了增加代码封装度、减轻开发负担&#xff0c;因此通常会对网页视图进行通用类的封装&#xff0c;本文简单讲述网页视图…

enyo官方开发入门教程翻译一Layout之Fittables

Fittables Fittable包帮助你创建布局更合理的使用可用空间&#xff08;app都有这样的布局需求&#xff0c;但使用以前的web技术很难做到这一点&#xff09;。个人观点&#xff0c;现在移动Web开发框架中有很多都支持自适应布局&#xff0c;如senchatouch&#xff0c;但是enyo的…

c语言 栈结构存放数据类型,数据结构——栈的详解

栈和队列是两种重要的线性结构&#xff0c;从数据结构的角度看&#xff0c;栈和队列也是线性表&#xff0c;其特殊性在于栈和队列的基本操作是线性表的子集。他们是操作受限的线性表&#xff0c;因此&#xff0c;可称为限定性的数据结构。但从数据类型角度看&#xff0c;他们是…

Verlet Integration

Verlet Integration Verlet 积分法是一种用于求解牛顿运动方程的数值方法&#xff0c;被广泛运用于动力学模拟以及视频游戏中。尔莱算法的优点在于&#xff1a;数值稳定性比简单的欧拉方法高很多&#xff0c;并保持了物理系统中的时间可逆性与相空间体积元体积守恒的性质。 基本…

[译] iOS 开发之新版 APNs 搭建必备知识

原文链接&#xff1a;http://www.jianshu.com/p/d8dba6c2c07a本文的大部分内容是对苹果关于 APNs 官方文档的翻译以及整理。 —— 由 稀土君 分享本文的大部分内容是对苹果关于APNs官方文档的翻译以及整理。 一、设备token和消息的生命周期 关于设备token以及推送消息的生命周期…

使用Application.GetResourceStream从XAP安装包加载任意资源

不得不说&#xff0c;WP7开发的资料真的是太少了&#xff0c;国内有句话叫“天下文章一大抄”&#xff0c;查Application.GetResourceStream的用法&#xff0c;找遍了整个网络&#xff0c;无非就那一两篇&#xff0c;而且写得还不完整&#xff0c;包括微软官方的例子。在花了近…

c语言知道算法写不出代码,这个代码怎么写算法啊,求教,我真的不会写算法怎么办#incl...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼这个代码怎么写算法啊&#xff0c;求教&#xff0c;我真的不会写算法怎么办#include "stdio.h"#define N 3 //学生数3。struct Student //建立结构体。{int num;char name[20];float score[3];float aver;};int main(){v…

猎豹MFC--列表控件ListControl

ListControl添加变量&#xff1a;关联控件变量&#xff1a;初始化&#xff1a;设置样式 添加列标题&#xff1a;添加位图资源&#xff1a;添加位图变量&#xff1a;创建图像列表&#xff1a;并把图像列表 给 列表控件使用&#xff1a;双击添加行按钮&#xff1a;添加第2列时 不…

iOS 命令行自动打包 (archive)

原文链接&#xff1a;http://www.jianshu.com/p/2247f76404ebiOS 开发工程师在测试修复 bug 的过程中&#xff0c;一般会存在频繁打包的情况&#xff0c;如果一步步在 xcode 中点击 archive&#xff0c;下一步&#xff0c;下一步。。。这样太浪费我们的时间了。下面我们来介绍在…

看看现在大型网站都是用什么语言写的 ?

看看现在大型网站都是用什么语言写的 &#xff1f; 不排除一个网站用多种技术&#xff01;如淘宝是Java php&#xff0c;底层是java&#xff0c;表现层是php。新浪&#xff0c;网易&#xff0c;腾讯应该也是用了多种技术。 据说是这样的&#xff1a;php&#xff0c;新浪&#…

数据结构 算法与应用C 语言描述第六章,数据结构算法与应用-C语言描述002.pdf

下载下载第2 章 程 序 性 能以下是本章中所介绍的有关程序性能分析与测量的概念&#xff1a;• 确定一个程序对内存及时间的需求。• 使用操作数和执行步数来测量一个程序的时间需求。• 采用渐进符号描述复杂性&#xff0c;如 O、 、 、o 。• 利用计时函数测量一个程序的实际…

GCD 容易让人迷惑的几个小问题

来源&#xff1a;涂耀辉 链接&#xff1a;http://www.jianshu.com/p/ff444d664e51 写在开头&#xff1a; 本文旨在阐述一些大家容易产生迷惑的GCD相关内容&#xff0c;如果是需要了解一些GCD概念或者基础用法&#xff0c;可以看看这两篇文章&#xff1a;GCD 扫盲篇、巧谈GCD 。…

【贪心】【codevs】1214 线段覆盖

http://codevs.cn/problem/1214/ 我去这个题。。。wa的我都没脾气了。。。 我写while&#xff08;~scanf&#xff08;“%d”&#xff0c; &n&#xff09;&#xff09;竟然是不对的。。。 这个程序你妹多次输入是不能结束的&#xff1f;&#xff1f;&#xff1f;&#xff1f…

虚函数表剖析,网上转的,呵呵

http://www.cppblog.com/xczhang/archive/2008/01/20/41508.html C虚函数表解析(转)C中的虚函数的作用主要是实现了多态的机制。关于多态&#xff0c;简而言之就是用父类型别的指针指向其子类的实例&#xff0c;然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的…