原创 我的仿真工作流程(Verilog/Modelsim+Debussy)

2011-6-11 09:35 3172 11 12 分类: FPGA/CPLD
这是献给大家的第二篇,文章详细说明了本人近一年来,自己摸索出来的一套仿真工作流程。接触过Modelsim这类软件的朋友可能都会感觉上手比较困难,原因有二:一、对仿真机制不了解,对基于source+testbench的工作流程不熟悉(大多数朋友接触FPGA仿真可能以waveform的方式);二、对软件的安装和使用不熟悉,Modelsim软件破解和平时常用软件相比要麻烦一些,也不像常用软件那样易于上手。即使入门了,也不一定能够熟练使用,相信很多朋友后仿过程中都碰到过back-annotation error的问题与大家一样,我也是这样一步步摸索出来的……
 
  设计语言完全采用verilog, 设计工具采用ModelSim + Debussy。目前我的工作平台是Windows, 使用的版本是ModelSim6.2a + Debussy5.3v9。

      为了便于管理,在文件夹的管理上采用分级管理。举一个例子:如果顶层模块是A1;A1划分为B1,B2,B3;B1又划分为C1,C2,B2划分为C3, C4,B3划分为C5,C6。那么一共建立10个文件夹,分别命名为A1, B1, B2, B3, C1, C2, C3, C4, C5, C6。在各文件夹中存放相应的设计源文件.v和testbench文件.v,这样可以避免单个文件夹中文件过多,给管理上带来不便。

      ModelSim有三种操作模式:GUI、Command-line和Batch。GUI模式比较麻烦,又要敲键盘,又要点鼠标,对我这样的懒人不合适而且初学者在做后仿的时候,.sdf文件的back-annotation比较难掌握。我推荐的是采用编写.do文件或.bat文件的工作方式。. do文件的编写可以参照ISE自动生成的.fdo(功能仿真)和.tdo(后仿)文件。通过ISE调用ModelSim进行仿真,在工程的文件夹下会生成 *.fdo和*.tdo的文件,用编辑器打开文件查看,是诸如此类的一些命令:
    ## NOTE: Do not edit this file.
    ## Auto generated by Project Navigator for Post-PAR Simulation
    ##
    vlib work
    ## Compile Post-PAR Model
    vlog  "C:/test/netgen/par/shift_reg_timesim.v"
    vlog  "testbench.v"
    vlog  "C:/Xilinx/verilog/src/glbl.v"
    vsim -novopt +maxdelays  -L simprims_ver -lib work testbench glbl
    do {testbench.udo}
    view wave
    add wave *
    add wave .glbl.GSR
    view structure
    view signals
    run 10us
    ## End
      这些命令并不一定都要写上,可以根据自己的需要加以精简,比如一个功能仿真的fsim.do文件如下所示:
   
    vlib work
    vlog  "PCMSyn.v"
    vlog  "Timing.v"
    vlog  "Search.v"
    vlog  "FSM.v"
    vlog  "test.v"
    vsim -t 1ns -lib work test
    view wave
    add wave *
    view structure
    view signals
    run 4ms
      用ModelSim也可以查看波形图和进行调试,但是Debussy查错比较方便,下面说明如何利用ModelSim和Debussy进行仿真和调试。
      在testbench文件中initial begin后需添加两条语句:
    $fsdbDumpfile("test.fsdb");     //文件名随便起
    $fsdbDumpvars;

      点击图标或在cmd下敲vsim启动ModelSim GUI,在Transcript窗口cd到该模块的文件夹下,运行do *.do(*.do为仿真的do文件,比如fsim.do)。ModelSim有个不好的地方,如果仿真波形不对,可能需要查看中间信号以便定位错误,这时用add wave命令添加中间信号后,需要重新run一次,才能看到这些中间信号的值。而采用Debussy查看ModelSim生成的.fsdb文件的话,添加信号后立即就可看到值,给调试带来很大的方便。另外,Debussy还有个很有用的功能叫做active annotation,在nWave窗口点击波形图上的不同时间点,nTrace和nScheme的源代码和示意图上的表示出的信号值会随之变化,也大大方便了查错。关于Debussy的使用方法,请大家参考帮助文档,我只结合自己使用的经验强调2点:
      1.在打开.fsdb文件之前,先在nTrace窗口Import Design一下,选择From File,Add所有相关的设计源文件和testbench文件,否则在nWave窗口打开.fsdb文件,用Get Signal添加信号后会显示NF。另外,在Get Signal之前请将ModelSim关掉,否则好像还是会显示NF。
      2.再强调一遍,Import Design的时候要将testbench文件也添加进去,否则启动active annotation后,所有信号都会显示NF!这个问题曾郁闷了我很久,所以特别提出来。

      可能大家都发现ModelSim的主要作用是产生.fsdb文件,我们并没有用它来进行查错,完全没必要启动GUI。这个问题我思考了很久,最后在网友 hamamdu的帮助下解决了这个问题。用文本编辑器生成一个.bat文件,文件内容和.do文件差不多,不过语句到vsim命令为止,此外vsim命令也要做一些修改,添加-c参数。下面给出一个.bat的例子:
    vlib work
    vlog  "PCMSyn.v"
    vlog  "Timing.v"
    vlog  "Search.v"
    vlog  "FSM.v"
    vlog  "test.v"
    vsim -c work.test
      运行这个.bat文件后,将会出现VSIM 1>提示,这时输入run 4ms,回车,将提示fsdb文件产生好了。
      经我试验,开启Optimization后,对Command-line操作模式没有影响,但是最后一条语句不可写成vsim -c test,虽然这样也可产生fsdb文件,但是启动active annotation后Debussy软件会报错
      写的比较仓促,大家试验中发现什么问题,请及时提出来
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1716526 2013-8-8 09:17

学习了,谢谢分享!

用户1355722 2011-6-12 21:47

楼主写的不错! 以后多多交流
相关推荐阅读
wrhwindboy 2011-07-24 07:15
下载与KEIL和IAR联调文件vdmagdi.exe和vdmcspy.exe的方法
安装proteus7,点击程序->proteus7->proteus VSM model help->ARM MICROPROCESSOR MODEL,然后点击Remote Debu...
wrhwindboy 2011-07-24 06:58
怎么样从一个疯狂下载者成为一个学习者
为了方便广大网友,各种网站也应运而生。当网络的建设和发展正进行的如火如荼,喧闹之中,搭配学习这壶美酒的,竟是一瓶名叫资料下载的毒药,更糟糕的是,美酒和毒药已经被灌到了同一个杯子里,浑然一体 ,叫人在畅...
wrhwindboy 2011-07-23 07:37
DES算法的介绍和实现(下)
INT32 handle_data(ULONG32 *left , ULONG8 choice){       INT32  number = 0 ,j = 0;          ULONG32 *...
wrhwindboy 2011-07-23 07:36
DES算法的介绍和实现(中)
三.文件加密解密工具在《DES算法的介绍和实现(上)》一文中,介绍了DES算法的原理,在本文中将给出一个文本文件加密工具的具体实现代码。3.1 实现的介绍利用算法核心代码封装的接口函数笔者编写了一个针...
wrhwindboy 2011-07-23 07:35
DES算法的介绍和实现(上)
一.DES算法介绍DES( Data Encryption Standard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。虽然56位密钥的DES算法已经风光不在...
wrhwindboy 2011-07-23 06:59
FIFO 深度!
如果数据流连续不断则FIFO深度无论多少,只要读写时钟不同源同频则都会丢数;FIFO用于缓冲块数据流,一般用在写快读慢时,FIFO深度 / (写入速率 - 读出速率) = FIFO被填满时间  应大于...
我要评论
1
11
关闭 站长推荐上一条 /3 下一条