dotafengvs的个人空间 https://blog.eetop.cn/913985 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

Modelsim+Debussy for VHDL

已有 4127 次阅读| 2014-3-13 16:59

1 安装

1.1 Modelsim安装

Bulb64中找到安装程序,按提示安装即可。(注意:安装目录尽量没有空格 

1.2 Debussy安装

找到并下载安装程序(windows最后的版本为“Debussy-54v9-NT”,后改名为Verdi,不再支持windows)。运行破解程序“debussy-54v9-crack.exe”,找到安装目录(例如“D:\Programme\Novas\Debussy\bin”),选择可执行文件“Debussy.exe”,破解即可。(注意:安装目录不要有空格)。

2 配置

Step 1

设定ModelSim使用VHDL FLI ,

$Debussy\share\PLI\modelsim_fli54\WINNT\novas_fli.dll

复制到

$Modelsim10.0a\win32\

修改$Modelsim10.0a\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.iniread only文档,修改前需修改其属性。

复制

$Debussy\share\PLI\modelsim_fli54\WINNT\novas.vhd

到自己的project,(为什么Verilog不需要此操作,而VHDL需要,稍后解释)。 

Step 2

Testbench中加入

use work.pkg.all;

这是因为novas.vhdVHDL FLI的原因,稍后解释。 

同样加入

process begin

fsdbDumpfile("counter.fsdb");
    fsdbDumpvars(0, "counter_tb");
    wait;
end process;

同样使用fsdbDumpfile()fsdbDumpvars()两个Debussy所提供的函数,不过在VHDL FLI不需要如Verilog PLI一樣加上$wait也一定要加上,否則在ModelSimsimulation时会造成死循环 

Step 3

ModelSim script中加入

vcom novas.vhd

其中novas.vhd是从Debussy目录复制过来的,为什么要编译这个文件呢? VHDL FLI Foreign Language InterfaceVerilog PLI Programming Language Interface不同的地方在于,当你自己提供由C写的functionsimulator使用时,Verilog PLI会自己到所提供的dll去找是否有此function,但VHDL FLI需要自己提供mapping的动作,告诉simulator哪一个function对应dll内的哪一个function。“novas.vhd”就是提供这个mapping的角色。 

若直接使用Debussy提供的novas.vhd,在执行ModelSim时会有以下错误信息:

# ** Warning: (vsim-FLI-3159) Failed to find foreign function 'fliparseVariableInFile' in FLI object file "$Modelsim10.0a\win32/./novas_fli.dll".

意思是novas.vhd定义的flipaseVariableInFilenovas_fil.dll找不到,原因不明。 

解决方法:

novas.vhd修改成如下所示:

1 package pkg is
 2
  attribute foreign : string;
 3

 4
  procedure fsdbDumpfile (file_name : in string);
 5
  attribute foreign of fsdbDumpfile : procedure is "fliparseTraceInit ./novas_fli.dll";
 6

 7
  procedure fsdbDumpvars (depth : in integer;
 8
                          region_name : in string);
 9
  attribute foreign of fsdbDumpvars : procedure is "fliparsePartial ./novas_fli.dll";
10
 end;
11
 
12
 package body pkg is
13
     procedure fsdbDumpfile(file_name : in string) is
14
     begin
15
         assert false report "ERROR : foreign subprogram not called" severity note;
16
     end;
17
     
18
     procedure fsdbDumpvars(depth : in integer;
19
                            region_name : in string) is
20
     begin
21
         assert false report "ERROR : foreign subprogram not called" severity note;
22
     end;
23
 end;
24
 
25
 entity novas is end;
26
 
27
 architecture novas_arch of novas is
28
     attribute foreign : string;
29
     attribute foreign of novas_arch : architecture is "fliparseCommand novas_fli.dll";
30
 begin
31
 end;
32

也就是只留下fsdbDumpfile()fsdbDumpvars()两个function,其它都删除。

novas.vhd也看到这些是定义在pkg这个package下,所以在tb.vhd中要加入

use work.pkg.all

3 Xilinx

3.1 Modelsim编译Xilinx

Xilinx提供的HDL仿真模型位于ISE安装路径下的verilog\src目录(对应Verilog仿真模型)和vhdl\src目录(对应VHDL仿真模型)下。在编译Xilinx仿真模型的时候,我们可以使用多种方法,例如直接使用ModelSimvlibvmapvlog等命令进行编译、使用ISE集成开发环境进行编译等。本文描述的方法是采用ISE 自带的


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 2

    粉丝
  • 0

    好友
  • 0

    获赞
  • 1

    评论
  • 1651

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-3 09:52 , Processed in 0.024487 second(s), 13 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部