Debussy学习笔记

学习FPGA以来,一直是用Modelsim作为仿真调试工具,前几天在同事那儿看到了一个新工具:Debussy,看她用的相当顺手,而且工具本身也相 当好用,有很多Modelsim不具有的功能,然后就立马上网下载了Debussy软件和相关教程学习了一下,从本文开始软件的学习笔记。

Debussy 是NOVAS Software, Inc(思源科技)开发的HDL Debug & Analysis tool,这套软体主要不是用来跑模拟或看波形,它本身不具有仿真功能,需要调用Modelsim等仿真软件生成的仿真结果文件来观测波形,但是它可以预 存设计中所有信号的仿真波形,仿真需要新调入信号进行观测时,可以即时调入而无需重新跑仿真;Debussy另一个最强大的功能是:能够在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的软件使用,如图1所示为Debussy的基本原理架构,其中主要由4部分组成:nSchema、nTrace、nWave和nState。

图1

nTrace:超文本源代码分析和浏览工具,是Debussy 软件所开启的主画面;nWave:波形分析观测工具,可由nTrace内开启;nSchema:层次原理图生成器;nState:有限状态机提取和分析工具。

上文中提到,Debussy软件一大功能就是波形的预存观测功能。由于Debussy自身不具有仿真功能,需要由 Modelsim等仿真软件生成fsdb(fast signal database)文件,是Spring Soft (Novas)公司Debussy / Verdi 支持的波形文件,一般较小,使用较为广泛,其余仿真工具如ncsim,modlesim等等可以通过加载Verdi 的PLI (一般位于安装目录下的share/pli 目录下) 而直接dump fsdb文件。fsdb文件是verdi使用一种专用的数据格式,类似于VCD,但是它是只提出了仿真过程中信号的有用信息,除去了VCD中信息冗余,就 像对VCD数据进行了一次huffman编码。因此fsdb数据量小,而且会提高仿真速度。下面介绍一下利用Modelsim生成fsdb文件的方 法,Verilog HDL和VHDL方法有些不同,因此分别说明:

A. Verilog HDL方法

1. 修改Modelsim安装根目录下modelsim.ini文件,去除只读保护后,加入一条语句:Veriuser=<Debussuy软件安装目录>/Debussy/share/PLI/modelsim_pli/WINNT/novas.dll

2. 在Testbench中加入以下代码:

initial begin

$fsdbDumpfile("wave_test.fsdb");

$fsdbDumpvars;

end

3. 在Modelsim中建立工程,编译所有*.v文件,调用仿真命令:vsim –pli novas.dll work.**_tb,仿真一段时间后退出仿真。然后可以在新建工程根目录下发现多出了一个wave_test.fsdb文件。

B. VHDL方法

1. 从<Debussy安装目录>\Debussy\share\PLI\modelsim_fli54\WINNT中找到novas.vhd文 件和novas_fli.dll文件,novas_fli.dll文件拷贝到modelsim安装根目录的win32文件夹下,并且修改 modelsim.ini文件,去除只读保护后,加入一条语句:Veriuser=novas_fli.dll;

2. 在Modelsim中建立工程,将第1步中的novas.vhd文件拷贝到新建的modelsim工程根目录下,在Transcript中运行以下脚本命令:

vlib novas

vmap novas novas

vcom –work novas ./novas.vhd

3. 在VHDL Testbench中加入语句:

library novas;use novas.pkg.all;

process

begin

fsdbDumpfile("wave_vhd.fsdb");

fsdbDumpvars(0,"div_tb"); --0表示dump的模块层,“div_tb”表示第0层模块名

wait;

end process;

4. 编译所有*.v文件,调用仿真命令:vsim work.**_tb,仿真一段时间后退出仿真。然后可以在新建工程根目录下发现多出了一个wave_vhd.fsdb文件。

:在VHDL方法中遇到了些问题,在执行vsim命令时出现以下错误警告:

# Loading D:\modeltech_6.6f\win32/./novas_fli.dll

# ** Warning: (vsim-FLI-3159) Failed to find foreign function ‘fliparseVariableInFile‘ in FLI object file "D:\modeltech_6.6f\win32/./novas_fli.dll".

# Region: /

# ** Fatal: (vsim-3274) Null foreign subprogram pointer (19).

在网上搜索了也没有什么好的解决方法,生成方法也没有什么问题。只能自己试着解决一下问题了。看错误是因为 fliparseVariableInFile没有在novas_fli.dll中找到,这个函数在Testbench中也没有使用,但是在 novas.vhd中确实有这个名为“fliparseVariableInFile” 的procedure说明,在novas_fli.dll没找到会不会是因为novas.vhd文件和novas_fli.dll文件不匹配造成的。定位 了问题,就修改了一下novas.vhd文件,将有关fliparseVariableInFile的说明都注释掉了,然后重新编译了novas库,运行 vsim就好使了,run后成功生成了fsdb文件。

fsdb生成后,就可以通过Debussy软件中的nWave导入:

1. 首先打开Debussy软件,启动界面是nTrace,通过Tools->New Waveform新建一个nWave窗口,如图2所示;

图2

2. 在nWave中打开**.fsdb文件,如图3所示;

图3

3. 通过Get Signals按钮选取需要观测的信号,如图4所示为在nWave中显示的波形。

图4

学习笔记(二)主要熟悉一下Debussy软件中nWave的界面和学习一下相关的常规操作。首先介绍一下nWave界面,如图1所示,其中主要包含三个 窗口:信号窗口、值窗口和波形窗口。在信号窗口中显示了加入的所有信号,并且可以分组,其中图1中信号都在组G1中;值窗口显示了当前光标所处位置的信号 值;波形窗口中显示所有加入信号的波形,其中上边区域有个窗口标尺,表示当前显示窗口范围的时间标尺,中间是波形显示区域,除了信号波形,还有光标 (cursor)和标记(marker),最下边区域是全局标尺,表示整个fsdb文件所含信息范围的时间标尺。

图1

按照笔记(一)的方法成功地生成了fsdb文件,通过File->Open或者快捷键打开,如图2所示,在左侧窗口中选择路径,在右侧窗口中选择fsdb文件。

图2

fsdb文件读取之后,在nWave是没信号显示的,需要通过Signal->Get Signals或者快捷键选取信号,弹出窗口如图3所示,左侧窗口中显示了整个仿真设计的层次,中间窗口显示了选定层次中的所有信号,可以点击选取需要观测的信号。

图3

读取信号之后就可观测到信号波形了,如图1所示。在各个窗口中需要一些常用操作:

信号窗口:如果需要拖动信号改变显示顺序,需要点击鼠标中键即滚轮选中需要拖动的信号,如图4所示,而黄色光标表示信号拖动后所处位置;改变黄色光标的位置也需要通过点击鼠标中键来完成,配合剪切、复制和粘贴信号等操作。

图4

值窗口:值窗口显示当前光标所处位置各信号的值,并且可以通过 View->Values at Cursor/Marker同时显示光标位置和标记位置处信号的值,如图5所示,显示的信号值有2列,分别对应光标和标记位置处信号值。右击值窗口可以改 变信号的数字表示格式,如图6所示,当前选择信号的表示格式为16进制,可以将其切换成二进制、10进制等。

图5

图6

波形窗口:在波形窗口中最主要的是光标和标记的操作,可以由三个键的组合操作就能完 成所有工作,1. 通过鼠标左键控制光标的位置;2. 通过鼠标中键控制标记的位置;3. 通过鼠标右键放大光标和标记间区域的波形至整个波形窗口。在移动光标和标记时,要注意一个选项Waveform->Snap Cursor To Transitions,在使能该选项时,光标和标记始终处于信号波形变化边沿,如1-bit信号的上升沿或者下降沿;在不使能该选项时,光标和标记可以 在信号波形任意位置,如图7所示,左边图为不使能选项效果,右边图为使能时效果。通过鼠标右键放大了光标和标记间区域波形,如图8所示。

图7

图8

波形窗口中操作还有几个快捷键:

z: 缩小

shift+z:放大

f:所有波形缩小至整个窗口中显示

l:返回至上一个视图

在nWave中还提供了模拟波形的显示功能,如图9所示,白色波形曲线是通过Waveform->Analog Waveform将数字数据化成模拟曲线,可以看到有明显的量化效果;而红色和黄色曲线是通过Analog->Convert To Analog将数字数据转化成模拟量,从图中可以看到转化后波形比较光滑,并且可以在Analog菜单中设置各种参数,

时间: 2024-08-06 14:20:47

Debussy学习笔记的相关文章

vector 学习笔记

vector 使用练习: /**************************************** * File Name: vector.cpp * Author: sky0917 * Created Time: 2014年04月27日 11:07:33 ****************************************/ #include <iostream> #include <vector> using namespace std; int main

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle ICondu

jQuery学习笔记(一):入门

jQuery学习笔记(一):入门 一.JQuery是什么 JQuery是什么?始终是萦绕在我心中的一个问题: 借鉴网上同学们的总结,可以从以下几个方面观察. 不使用JQuery时获取DOM文本的操作如下: 1 document.getElementById('info').value = 'Hello World!'; 使用JQuery时获取DOM文本操作如下: 1 $('#info').val('Hello World!'); 嗯,可以看出,使用JQuery的优势之一是可以使代码更加简练,使开

[原创]java WEB学习笔记93:Hibernate学习之路---Hibernate 缓存介绍,缓存级别,使用二级缓存的情况,二级缓存的架构集合缓存,二级缓存的并发策略,实现步骤,集合缓存,查询缓存,时间戳缓存

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

Activiti 学习笔记记录(三)

上一篇:Activiti 学习笔记记录(二) 导读:上一篇学习了bpmn 画图的常用图形标记.那如何用它们组成一个可用文件呢? 我们知道 bpmn 其实是一个xml 文件

HTML&CSS基础学习笔记8-预格式文本

<pre>标签的主要作用是预格式化文本.被包围在 pre 标签中的文本通常会保留空格和换行符.而文本也会呈现为等宽字体. <pre>标签的一个常见应用就是用来表示计算机的源代码.当然你也可以在你需要在网页中预显示格式时使用它. 会使你的文本换行的标签(例如<h>.<p>)绝不能包含在 <pre> 所定义的块里.尽管有些浏览器会把段落结束标签解释为简单地换行,但是这种行为在所有浏览器上并不都是一样的. 更多学习内容,就在码芽网http://www.

java/android 设计模式学习笔记(14)---外观模式

这篇博客来介绍外观模式(Facade Pattern),外观模式也称为门面模式,它在开发过程中运用频率非常高,尤其是第三方 SDK 基本很大概率都会使用外观模式.通过一个外观类使得整个子系统只有一个统一的高层的接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节.当然,在我们的开发过程中,外观模式也是我们封装 API 的常用手段,例如网络模块.ImageLoader 模块等.其实我们在开发过程中可能已经使用过很多次外观模式,只是没有从理论层面去了解它. 转载请注明出处:http://bl

[原创]java WEB学习笔记48:其他的Servlet 监听器:域对象中属性的变更的事件监听器 (3 个),感知 Session 绑定的事件监听器(2个)

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

java/android 设计模式学习笔记(10)---建造者模式

这篇博客我们来介绍一下建造者模式(Builder Pattern),建造者模式又被称为生成器模式,是创造性模式之一,与工厂方法模式和抽象工厂模式不同,后两者的目的是为了实现多态性,而 Builder 模式的目的则是为了将对象的构建与展示分离.Builder 模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程.一个复杂的对象有大量的组成部分,比如汽车它有车轮.方向盘.发动机.以及各种各样的小零件,要将这些部件装配成一辆汽车,这个装配过