如何使用Debussy与ModelSim做Co-Simulation

作者&投稿:陀朗 (若有异议请与网页底部的电邮联系)
~ 本文介绍如何使用Debussy与ModelSim做Co-Simulation,并使用Verilog、VHDL以及Verilog搭配VHDL交叉一起simulation。
Introduction
使用环境:Debussy 5.4 v9 + ModelSim SE 6.3e
我之前一直使用Debussy + NC-Verilog做simulation,Debussy (Verdi)可以说是HDL的Source Insight,是trace与debug的神兵利器,NC-Verilog也是Verilog simulator中速度最快的,可是最近因工作需要,拿到的一包code却是用Verilog写RTL,用VHDL写testbench,所以必须2种语言一起做simulation,我在NC-Verilog一直无法成功让两种语言一起simulation。ModelSim虽然支援Verilog + VHDL co-simulation,但用惯Debussy的我还是无法忘怀其方便的trace code方式,所以若能让ModelSim也能dump出Debussy所需要的fsdb档案,这样就太完美了。
接下来会分4个方式讨论
1.RTL与testbench皆使用Verilog
2.RTL与testbench皆使用VHDL
3.RTL使用VHDL,testbench使用Verilog
4.RTL使用Verilog,testbench使用VHDL
1.RTL与testbench皆使用Verilog
Step 1:
设定ModeSim使用Verilog PLI (因为testbench使用Verilog)
将C:\Novas\Debussy\share\PLI\modelsim_pli\WINNT\novas.dll复制到C:\Modeltech_6.3e\win32\下
修改C:\Modeltech_6.3e\modelsim.ini,将Veriuser部分修改成如下所示:
; List of dynamically loaded objects for Verilog PLI applications
; Veriuser = veriuser.sl
; use by verilog
Veriuser = novas.dll
; use by vhdl
; Veriuser = novas_fli.dll

modelsim.ini是个read only档,要修改前记得修改其属性才能存档。
Step 2:
RTL部分 (以4 bit counter为例)
counter.v / Verilog

1 /*
2 (C) OOMusou 2011 http://oomusou.cnblogs.com
3
4 Filename : counter.v
5 Simulator : ModelSim 6.3e, Debussy 5.4 v9
6 Description : ModelSim with debussy
7 Release : 01/31/2010 1.0
8 */
9
10 module counter (
11 clk,
12 rst_n,
13 cnt
14 );
15
16 input clk;
17 input rst_n;
18 output [3:0] cnt;
19
20 reg [3:0] cnt;
21
22 always@(posedge clk, negedge rst_n) begin
23 if (~rst_n)
24 cnt <= 4'h0;
25 else
26 cnt <= cnt + 1'b1;
27 end
28
29 endmodule

Step 3:
Testbench部分
counter_tb.v / Verilog

1 /*
2 (C) OOMusou 2011 http://oomusou.cnblogs.com
3
4 Filename : counter_tb.v
5 Compiler : ModelSim 6.3e, Debussy 5.4 v9
6 Description : ModelSim with debussy
7 Release : 01/31/2010 1.0
8 */
9
10 module counter_tb;
11
12 reg clk;
13 reg rst_n;
14 wire [3:0] cnt;
15
16 // 50MHz
17 always #(10) clk = ~clk;
18
19 initial begin
20 #0;
21 clk = 1'b0;
22 rst_n = 1'b0;
23
24 #5;
25 rst_n = 1'b1;
26 #195;
27 $finish;
28 end
29
30 initial begin
31 $fsdbDumpfile("counter.fsdb");
32 $fsdbDumpvars(0, counter_tb);
33 end
34
35 counter u_counter (
36 .clk(clk),
37 .rst_n(rst_n),
38 .cnt(cnt)
39 );
40
41 endmodule

19行

initial begin
#0;
clk = 1'b0;
rst_n = 1'b0;

#5;
rst_n = 1'b1;

#195;
$finish;
end

一搬来说,若在NC-Verilog做simulation,我们会在testbench内指定结束simulation的时间,不过在ModelSim里,simulation时间是由ModelSim script控制,在testbench内写$finish并没有用,所以会省略$finish时间入下。

initial begin
#0;
clk = 1'b0;
rst_n = 1'b0;

#5;
rst_n = 1'b1;
end

Step 4:
ModelSim script部分
vsim.do
vlib work
vlog counter.v
vlog counter_tb.v
vsim counter_tb
run 200ns
q
其中
vlib work

建立work library。
vlog counter.v
vlog counter_tb.v
编译RTL:counter.v 与 testbench:counter_tb.v,vlog为modelsim的Verilog compiler。
vsim counter_tb

以counter_tb为top module进行simulation。
run 200ns

命令ModelSim执行200 ns的simulation。
q

离开ModelSim
Step 5:
执行ModelSim的批次档
mod.bat
vsim -c -do sim.do

-c 表示ModelSim将以console mode执行,因为在Debussy + ModelSim时,只把ModelSim当成NC-Verilog使用,并没有用到ModelSim的GUI模式。
-do 表示执行ModelSim script。
执行结果

D:\0Clare\VerilogLab\ModelSim\counter_verilog>vsim -c -do sim.do
Reading C:/Modeltech_6.3e/tcl/vsim/pref.tcl

# 6.3e

# do sim.do
# ** Warning: (vlib-34) Library already exists at "work".
# Model Technology ModelSim SE vlog 6.3e Compiler 2008.02 Feb 2 2008
# -- Compiling module counter
#
# Top level modules:
# counter
# Model Technology ModelSim SE vlog 6.3e Compiler 2008.02 Feb 2 2008
# -- Compiling module counter_tb
#
# Top level modules:
# counter_tb
# vsim counter_tb
# ** Note: (vsim-3813) Design is being optimized due to module recompilation...
# ** Note: (vsim-3865) Due to PLI being present, full design access is being specified.
# Loading C:\Modeltech_6.3e\win32/novas.dll
# // ModelSim SE 6.3e Feb 2 2008
# //
# // Copyright 1991-2008 Mentor Graphics Corporation
# // All Rights Reserved.
# //
# // THIS WORK CONTAINS TRADE SECRET AND
# // PROPRIETARY INFORMATION WHICH IS THE PROPERTY
# // OF MENTOR GRAPHICS CORPORATION OR ITS LICENSORS
# // AND IS SUBJECT TO LICENSE TERMS.
# //
# Loading work.counter_tb(fast)
# Loading work.counter(fast)
# Novas FSDB Dumper for ModelSim, Release 5.4v9 (Win95/NT) 05/04/2005
# Copyright (C) 1996 - 2004 by Novas Software, Inc.
# *Novas* Create FSDB file 'counter.fsdb'
# *Novas* Start dumping the scope(counter_tb), layer(0).
# *Novas* End of dumping.
# ** Note: $finish : counter_tb.v(27)
# Time: 200 ns Iteration: 0 Instance: /counter_tb

转载仅供参考,版权属于原作者。祝你愉快,满意请采纳哦


德彪西的月光表达什么意思
德彪西(Claude Achille Debuss,1862~1918),法国作曲家,印象主义音乐的创始人。他的作品以诗、画、自然景物为题材,借助标题和丰富的色调变化引起联想,表现感觉世界中的主观印象,与印象派画家对光、色的理解一样,德彪西通过音响来表现自然界中光和色的变化。《月光》是德彪西钢琴组曲《贝加摩组曲》中...

德彪西的月光表达什么意思
德彪西(Claude Achille Debuss,1862~1918),法国作曲家,印象主义音乐的创始人。他的作品以诗、画、自然景物为题材,借助标题和丰富的色调变化引起联想,表现感觉世界中的主观印象,与印象派画家对光、色的理解一样,德彪西通过音响来表现自然界中光和色的变化。《月光》是德彪西钢琴组曲《贝加摩组曲》中...

东河区18827275149: 如何使用Debussy与ModelSim做Co - Simulation -
禽毅黄龙: 1.RTL与testbench皆使用VerilogStep 1:设定ModeSim使用Verilog PLI (因为testbench使用Verilog)将C:\Novas\Debussy\share\PLI\modelsim_pli\WINNT\novas.dll复制到C:\Modeltech_6.3e\win32\下修改C:\Modeltech_6.3e\modelsim.ini,将...

东河区18827275149: quartus里面仿真波形时很多结点都没有显示,但是有很多这样的warning.. -
禽毅黄龙: 一直为X,可能是由于你的信号没有初始值.而你的warning,应该是waveform里面画信号时有错误,需再仔细检查下.另外,不建议使用quartus进行仿真.你最好换一个EDA工具,在windows下可以使用modelsim+debussy.

东河区18827275149: 请教下FPGA完整设计流程 -
禽毅黄龙: 1、设计输入 1)设计的行为或结构描述. 2)典型文本输入工具有UltraEdit-32和Editplus.exe.. 3)典型图形化输入工具-Mentor的Renoir. 4)我认为UltraEdit-32最佳. 2、代码调试 1)对设计输入的文件做代码调试,语法检查. 2)典型工具...

东河区18827275149: verilog中如何对一个模块进行波形仿真 -
禽毅黄龙: 编写包含该模块的测试脚本testbench,一般综合工具都自带仿真器的,用仿真器仿真就行

东河区18827275149: fpga设计需要画流程图吗 -
禽毅黄龙: 自顶向下的设计流程从系统级设计开始,划分为若干个二级单元,然后再把各个二级单元划分为下一层次的基本单元.一直下去,直到能够使用基本模块或者IP核直接实现为止,流行的FPGA开发工具都提供了层次化管理,可以有效地梳理错综复杂的层次,能够方便地查看某一层次模块的源代码以修改错误.

东河区18827275149: 在C语言中,i++的问题i++;是否等价于i=i++;
禽毅黄龙: 不等价,i=i++是执行两步,首先是先把i的值取出来赋值给i,然后进行i自加,i=i++相当于(i=i;i=i+1),此时i的值还是没变. i=++i就不一样了,i的值会加上1. #include int main() { int i = 1 , j = 1; printf("i = %d\n",i=i++); printf("j = %d\n",j=++j); return 0; } 你可以运行上面那段程序试试就知道结果了.

东河区18827275149: 如何建立毛利目标模型?
禽毅黄龙: 贡献度计算法是建立与掌握毛利的最好模型.要建立自己超市的毛利模型其步骤为:1•了解损益平衡点的毛利,以及企业想获得的投资报酬率.例如,某超市每月预估可...

东河区18827275149: text在css里怎么定义?
禽毅黄龙: input {font-family: "Verdana";font-size: "11px";BACKGROUND-COLOR: "#FFFFFF";height: "18px";border: "1px solid #666666";}

东河区18827275149: 生抽和老抽区别是什么?一般什么时候用什么呢
禽毅黄龙: 区别: 1、在颜色上,生抽的颜色浅、偏红棕色;老抽的颜色深,更接近黑色. 2、在味道上,生抽比较淡,而老抽比较咸. 3、最关键的,两者使用的场合不同.生抽一般用来拌凉菜,或者是炒菜时提个鲜;老抽一般在红烧时做上色用.可以简单记成: 生抽调味提鲜,老抽增亮上色.

东河区18827275149: 君子喻于义,小人喻于利是说:与君子交往,直接告知“义”,与小人?
禽毅黄龙: 是指 君子 、小人价值取向不同,君子领悟大义,小人领悟小利. 君子的原则是大是大非,小人的原则是有钱赚就行.“喻”=“知晓 学术讨论:有人认为,“君子愉于义”指“君子为了义而勤苦”,“小人愉于利”指“小人为了利而劳苦”. “喻”=“愉”,做“勤苦、劳苦”之意, 与孔子“君子忧道不忧贫”的思想相一致,而“喻”当成“知晓”解释牵强.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网