如何在modelsim添加altera库里仿真Altera的lpm

->【Altera FPGA小组】
关于Modelsim中LPM_的问题
做的是功能仿真,总是提示以下错误:
# ** Error: (vsim-7) Failed to open
file "my_rom.hex" in rb mode.
# No such file or directory. (errno = ENOENT)
Time: 0 ns
Iteration: 0
Instance: /test_rom/uut/ip1/altsyncram_component
# ** Fatal: (vsim-7) Failed to open V file "my_rom.hex" in rb mode.
# No such file or directory. (errno = ENOENT)
Time: 0 ns
Iteration: 0
Process: /test_rom/uut/ip1/altsyncram_component/memory File: E:/programfiles/altera/90/quartus/eda/sim_lib/altera_mf.vhd
# Fatal error in Process memory at E:/programfiles/altera/90/quartus/eda/sim_lib/altera_mf.vhd line 38968
# HDL call sequence:
# Stopped at E:/programfiles/altera/90/quartus/eda/sim_lib/altera_mf.vhd 38968 Subprogram read_my_memory
# called from
E:/programfiles/altera/90/quartus/eda/sim_lib/altera_mf.vhd 40690 Process memory
在网上看到,有人这样做:在安装的目录下找到modelsim.ini,将其只读属性去掉,在vsim部分里添加一行
“Veriuser = D:/altera/quartus50/eda/mentor/modelsim/convert_hex2ver.dll”,保存文件,将只读属性改回来。当然,
这里的路径要改成实际上您的安装路径。其中的convert_hex2ver.dll就是把hex文件转换成ModelSim能认出来的ver文件的动态链接库文件;
我用这种方法尝试了,还是出现上面的提示错误,我用的是Quartus II9.0+Modelsim SE 6.4b,VHDL。是不是这种方法只是针对verilog语言的。Modelsim-Altera 使用技巧总结(一)-Strive_JP的博客
我的网络家园--电子技术应用.
Modelsim-Altera 使用技巧总结(一)
16:40 发表&&
系统分类:&&
自定义分类:
软件使用版本:Quartus II 13.0+Modelsim_Altera10.1d
工程使用例程:同步FIFO
一、功能仿真(前仿真)的一般性方法
对于Modelsim的使用,用的最多的还是功能仿真。这里对同步FIFO进行仿真分析,来说明Modelsim如何进行一般性的功能仿真方法。
1、将工程中用到的.v文件拷贝到新建的文件夹下,文件夹命名为fifo,包括quartusII设计的工程文件及testbench文件。
2、打开Modelsim-Altera,新建工程,如下图所示:
3、工程名为fifo,路径为刚刚新建的文件夹,库名称保持默认
4、向工程中添加文件,将fifo中拷贝的.v文件和testbenc加入工程中。
5、编译所有文件,这里有两种方式。
①选择project窗口,右击任意文件,选择compile all,也可以单个文件编译。如下图所示:
②通过命令来实现全编译,执行全编译的命令为project compileall。
注意:文件无法通过编译的原因有以下情况:1、编译的文件本身存在句法错误,导致无法通过全编译;2、选择编译全部文件,但编译order(顺序)不对,有可能先编译了testbench文件,导致无法通过全编译。针对以上两种情况:第一种可根据命令窗口的提示,返回到文件中修改代码;第二种通过设置文件编译order来解决。选择compile order,根据提示,一般设置为Auto Generate。具体如下所示:
6、编译完成后,点击进入library窗口,在work目录下,点击fifo_top_tb,即testbench文件,进入仿真。也可通过以下两种方式进入仿真。
①点击菜单栏中的simulate,选择start simulation,自动跳出如下界面。
同样选择work库下面的fifo_top_tb,单击OK后,进入仿真界面。
②通过Transcript窗口,输入vsim fifo_top_tb,进入仿真界面。
7、进入仿真界面后,选择添加波形至wave窗口。这里面添加了所需的全部信号,也可有选择性添加信号。
8、运行仿真。点击wave窗口上的,或者直接在命令窗口下输入run等命令。
这样,基本的modelsim用法流程介绍完毕。Wave中的波形,可保存.do文件,方便下次运行时查看。波形的分析,可通过仿真结果进行查看。对于本实例,也可通过view下面的Memory list 进行查看和分析。
可以先结束仿真,再重新运行仿真过程。打开memory list,然后选择10ns的步长进行单步仿真。在memory list中可清楚查看fifo的写入和读出过程。这里不再详述。这样,对Modelsim—Altera运行功能仿真的通用方法介绍至此。
Modelsim的基本命令:
·project compileall&&&&&&&&&&&&& //编译所有工程文件
·vlib work&&&&&&&&&&&&&&&&&&&& //该目录下新建一个work目录
·vmap work work&&&&&&&&&&&&& //将目前的逻辑工作库work和实际的工作库work映射 对应
·vlog file.v&&&&&&&&&&&&&&&&&&&& //编译对应的文件
·vsim tb_module_name&&&&&&&& //仿真命令,注意testbench为模块名
·view wave/dataflow&&&&&&&&&&& //打开波形或数据流窗口
·add wave -hex * //*表示添加设计中所有的信号,-hex表示以十六进制 来显示波形窗口中的信号值
·add wave /tb_module_name/ *& //模块中所有信号加入波形文件
·restart -f&&&&&&&&&&&&&&&&&&&& //重新执行仿真
·run/run -all&&&&&&&&&&&&&&&&&& //运行仿真
·run time&&&&&&&&&&&&&&&&&&&& //运行仿真时间
·quit -sim //结束退出仿真
·pwd //transcript窗口显示当前路径(一般不用)
·cd //改变工作路径(一般不用)
·do file.do&&&&&&&&&&&&&&&&&&& //运行do文件
发表于 20:25
那么多.v文件在哪里找的啊? 求指教。。。
共1页&1条记录&&&首页 上一页&1 下一页 末页
自定义分类
感謝大大的分享
您好,在吗?加qq沟通交流下
@匿名用户(182.138.170.55 )
楼主可不可共享软件呢》
有问题咨询关于 sopc.h下 include "system.h"的问题 能帮忙么
@universitelim54
send a fart to U, image is enough, sluggard !
透彻~~写的不错!
那么多.v文件在哪里找的啊? 求指教。。。
ADI热线电话:
ADI技术支持邮箱:china.就是IN和OUT端波形是红色的长线,表示没有信号,但是我自己设置的中间信号,因为设了初值,是有信号的,但是也没法运作。我的问题不麻烦吧,求各路大神来帮哈~可能是testbench不对:&br&LIBRARY
&br&USE ieee.std_logic_1164.
&br&&br&ENTITY divtry2_vhd_tst IS&br&END divtry2_vhd_&br&ARCHITECTURE divtry2_arch OF divtry2_vhd_tst IS&br&-- constants
&br&-- signals
&br&SIGNAL newclock : STD_LOGIC;&br&SIGNAL oldclock : STD_LOGIC;&br&COMPONENT divtry2&br& PORT (&br& newclock : OUT STD_LOGIC;&br& oldclock : IN STD_LOGIC&br& );&br&END COMPONENT;&br&BEGIN&br& divtry2_instance: divtry2&br& PORT MAP (&br&-- list connections between master ports and signals&br& newclock =& newclock,&br& oldclock =& oldclock&br& );&br&tb:process
--激励信号
oldclock&='0'; &br& wait for 100&br& oldclock&='1';&br& wait for 100&br&
oldclock&='0';&br& wait for 100&br& oldclock&='1';&br& wait for 100&br&
oldclock&='0';&br& wait for 100&br& oldclock&='1';&br& wait for 100 -- code executes for every event on sensitivity list &br&
&br&END PROCESS
&br&END divtry2_&br&简单的二分频器,谢~
就是IN和OUT端波形是红色的长线,表示没有信号,但是我自己设置的中间信号,因为设了初值,是有信号的,但是也没法运作。我的问题不麻烦吧,求各路大神来帮哈~可能是testbench不对:LIBRARY
USE ieee.std_logic_1164.
ENTITY divtry2_vhd_tst ISEND divtry2_vhd_ARCHITECTURE divtry2_arch OF divtry2_vhd_tst IS-- constants
-- signals
SIGNAL newclock : STD_LOGIC;SIGNAL oldclock : STD_LOGIC;COMPONENT divtry2 PORT ( newclock : OUT STD_LOGIC; oldclock : IN STD_LOGIC );END COMPONENT;BEGIN divtry2_instance: divtry2…
tb不对就看看tb的信号先,从源头开始,一点点追吧
已有帐号?
无法登录?
社交帐号登录
IC民工 /icer2012二次元同好交流新大陆
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(1406)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'modelsim.ini文件(添加altera仿真库时用到)',
blogAbstract:'; Copyright 2006 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.;&&
[Library]std = $MODEL_TECH/../stdieee = $MODEL_TECH/../ieeeverilog = $MODEL_TECH/../verilogvital2000 = $MODEL_TECH/../vital2000',
blogTag:'default,turn,set,value,file',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:1,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}(转载)&如何使用ModelSim對Megafunction或LPM作仿真?&(SOC)&(MegaCore)&(ModelSim)
在FPGA開發中,常會用到Altera所提供的Megafunction與LPM加速開發,這要如何使用ModelSim作仿真呢?
Introduction
使用環境:Quartus II 8.1 + ModelSim-Altera 6.3g_p1 + ModelSim SE
在中,提到如何使用ModelSim對Verilog作仿真,包含前仿真與後仿真,若使用了Altera的Megafunction與LPM,則仿真的方法稍有不同,本文分別使用ModelSim-Altera與ModelSim
SE,並對Megafunction:dcfifo作仿真。
my_dcfifo.v /
Verilog使用MegaWizard產生的dcfifo。
megafunction wizard:
GENERATION:
MODULE: dcfifo
============================================================
File Name:
my_dcfifo.v&
Megafunction
9&//&&&&&&&&&&&&
dcfifo<span STYLE="CoLor: #&//<span STYLE="CoLor: #&// Simulation
Library Files(s):<span STYLE="CoLor: #&//&&&&&&&&&&&&
altera_mf<span STYLE="CoLor: #&// ============================================================
<span STYLE="CoLor: #&// ************************************************************
<span STYLE="CoLor: #&// THIS IS A
WIZARD-GENERATED FILE. DO NOT EDIT THIS
FILE!<span STYLE="CoLor: #&//<span STYLE="CoLor: #&// <span STYLE="CoLor: #.1 Build
163 10/28/2008 SJ Full Version<span STYLE="CoLor: #&// ************************************************************
<span STYLE="CoLor: #&<span STYLE="CoLor: #&<span STYLE="CoLor: #&//Copyright
Altera Corporation<span STYLE="CoLor: #&//Your use of
Altera Corporation's design tools, logic functions
<span STYLE="CoLor: #&//and
other software and tools, and its AMPP partner logic
<span STYLE="CoLor: #&//functions,
and any output files from any of the foregoing
<span STYLE="CoLor: #&//(including
device programming or simulation files), and any
<span STYLE="CoLor: #&//associated
documentation or information are expressly subject
<span STYLE="CoLor: #&//to
the terms and conditions of the Altera Program License
<span STYLE="CoLor: #&//Subscription
Agreement, Altera MegaCore Function License
<span STYLE="CoLor: #&//Agreement,
or other applicable license agreement, including,
<span STYLE="CoLor: #&//without
limitation, that your use is for the sole purpose of
<span STYLE="CoLor: #&//programming
logic devices manufactured by Altera and sold by
<span STYLE="CoLor: #&//Altera
or its authorized distributors.& Please refer to
the <span STYLE="CoLor: #&//applicable
agreement for further details.<span STYLE="CoLor: #&<span STYLE="CoLor: #&<span STYLE="CoLor: #&// synopsys
translate_off<span STYLE="CoLor: #&`timescale <span STYLE="CoLor: # ps
/&<span STYLE="CoLor: # ps<span STYLE="CoLor: #&// synopsys
translate_on<span STYLE="CoLor: #&module my_dcfifo (<span STYLE="CoLor: #&&&&
aclr,<span STYLE="CoLor: #&&&&
data,<span STYLE="CoLor: #&&&&
rdclk,<span STYLE="CoLor: #&&&&
rdreq,<span STYLE="CoLor: #&&&&
wrclk,<span STYLE="CoLor: #&&&&
wrreq,<span STYLE="CoLor: #&&&&
q,<span STYLE="CoLor: #&&&&
rdempty,<span STYLE="CoLor: #&&&&
rdusedw,<span STYLE="CoLor: #&&&&
wrfull);<span STYLE="CoLor: #&<span STYLE="CoLor: #&&&&
input&&&&&
<span STYLE="CoLor: #&&&&
[<span STYLE="CoLor: #:<span STYLE="CoLor: #]&<span STYLE="CoLor: #&&&&
input&&&&&
<span STYLE="CoLor: #&&&&
input&&&&&
<span STYLE="CoLor: #&&&&
input&&&&&
<span STYLE="CoLor: #&&&&
input&&&&&
<span STYLE="CoLor: #&&&&
[<span STYLE="CoLor: #:<span STYLE="CoLor: #]&<span STYLE="CoLor: #&&&&
output&&&&&
<span STYLE="CoLor: #&&&&
[<span STYLE="CoLor: #:<span STYLE="CoLor: #]&
<span STYLE="CoLor: #&&&&
output&&&&&
<span STYLE="CoLor: #&<span STYLE="CoLor: #&&&&
sub_wire0;<span STYLE="CoLor: #&&&&
sub_wire1;<span STYLE="CoLor: #&&&&
wire [<span STYLE="CoLor: #:<span STYLE="CoLor: #]
sub_wire2;<span STYLE="CoLor: #&&&&
wire [<span STYLE="CoLor: #:<span STYLE="CoLor: #]
sub_wire3;<span STYLE="CoLor: #&&&&
wire& rdempty = sub_wire0;<span STYLE="CoLor: #&&&&
wire& wrfull = sub_wire1;<span STYLE="CoLor: #&&&&
wire [<span STYLE="CoLor: #:<span STYLE="CoLor: #] q
= sub_wire2[<span STYLE="CoLor: #:<span STYLE="CoLor: #];<span STYLE="CoLor: #&&&&
wire [<span STYLE="CoLor: #:<span STYLE="CoLor: #]
rdusedw = sub_wire3[<span STYLE="CoLor: #:<span STYLE="CoLor: #];<span STYLE="CoLor: #&<span STYLE="CoLor: #&&&&
dcfifo_component (<span STYLE="CoLor: #&&&&&&&&&&&&&&&&
.wrclk (wrclk),<span STYLE="CoLor: #&&&&&&&&&&&&&&&&
.rdreq (rdreq),<span STYLE="CoLor: #&&&&&&&&&&&&&&&&
.aclr (aclr),<span STYLE="CoLor: #&&&&&&&&&&&&&&&&
.rdclk (rdclk),<span STYLE="CoLor: #&&&&&&&&&&&&&&&&
.wrreq (wrreq),<span STYLE="CoLor: #&&&&&&&&&&&&&&&&
.data (data),<span STYLE="CoLor: #&&&&&&&&&&&&&&&&
.rdempty (sub_wire0),<span STYLE="CoLor: #&&&&&&&&&&&&&&&&
.wrfull (sub_wire1),<span STYLE="CoLor: #&&&&&&&&&&&&&&&&
.q (sub_wire2),<span STYLE="CoLor: #&&&&&&&&&&&&&&&&
.rdusedw (sub_wire3)<span STYLE="CoLor: #&&&&&&&&&&&&&&&&
// synopsys translate_off<span STYLE="CoLor: #&&&&&&&&&&&&&&&&
,<span STYLE="CoLor: #&&&&&&&&&&&&&&&&
.rdfull (),<span STYLE="CoLor: #&&&&&&&&&&&&&&&&
.wrempty (),<span STYLE="CoLor: #&&&&&&&&&&&&&&&&
.wrusedw ()<span STYLE="CoLor: #&&&&&&&&&&&&&&&&
// synopsys translate_on<span STYLE="CoLor: #&&&&&&&&&&&&&&&&
);<span STYLE="CoLor: #&&&&
defparam<span STYLE="CoLor: #&&&&&&&&
dcfifo_component.intended_device_family =&"Cyclone
II",<span STYLE="CoLor: #&&&&&&&&
dcfifo_component.lpm_hint =&"MAXIMIZE_SPEED=5,",<span STYLE="CoLor: #&&&&&&&&
dcfifo_component.lpm_numwords =&<span STYLE="CoLor: #,<span STYLE="CoLor: #&&&&&&&&
dcfifo_component.lpm_showahead =&"OFF",<span STYLE="CoLor: #&&&&&&&&
dcfifo_component.lpm_type =&"dcfifo",<span STYLE="CoLor: #&&&&&&&&
dcfifo_component.lpm_width =&<span STYLE="CoLor: #,<span STYLE="CoLor: #&&&&&&&&
dcfifo_component.lpm_widthu =&<span STYLE="CoLor: #,<span STYLE="CoLor: #&&&&&&&&
dcfifo_component.overflow_checking =&"ON",<span STYLE="CoLor: #&&&&&&&&
dcfifo_component.rdsync_delaypipe =&<span STYLE="CoLor: #,<span STYLE="CoLor: #&&&&&&&&
dcfifo_component.underflow_checking =&"ON",<span STYLE="CoLor: #0&&&&&&&&
dcfifo_component.use_eab =&"ON",<span STYLE="CoLor: #1&&&&&&&&
dcfifo_component.write_aclr_synch =&"OFF",<span STYLE="CoLor: #2&&&&&&&&
dcfifo_component.wrsync_delaypipe =&<span STYLE="CoLor: #;<span STYLE="CoLor: #3&<span STYLE="CoLor: #4&<span STYLE="CoLor: #5&endmodule<span STYLE="CoLor: #6&<span STYLE="CoLor: #7&// ============================================================
<span STYLE="CoLor: #8&// CNX file
retrieval info<span STYLE="CoLor: #9&// ============================================================
<span STYLE="CoLor: #0&// Retrieval
info: PRIVATE: AlmostEmpty NUMERIC "0"<span STYLE="CoLor: #1&// Retrieval
info: PRIVATE: AlmostEmptyThr NUMERIC "-1"<span STYLE="CoLor: #2&// Retrieval
info: PRIVATE: AlmostFull NUMERIC "0"<span STYLE="CoLor: #3&// Retrieval
info: PRIVATE: AlmostFullThr NUMERIC "-1"<span STYLE="CoLor: #4&// Retrieval
info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC
"0"<span STYLE="CoLor: #5&// Retrieval
info: PRIVATE: Clock NUMERIC "4"<span STYLE="CoLor: #6&// Retrieval
info: PRIVATE: Depth NUMERIC "32"<span STYLE="CoLor: #7&// Retrieval
info: PRIVATE: Empty NUMERIC "1"<span STYLE="CoLor: #8&// Retrieval
info: PRIVATE: Full NUMERIC "1"<span STYLE="CoLor: #9&// Retrieval
info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone
II"<span STYLE="CoLor: #0&// Retrieval
info: PRIVATE: LE_BasedFIFO NUMERIC "0"<span STYLE="CoLor: #1&// Retrieval
info: PRIVATE: LegacyRREQ NUMERIC "1"<span STYLE="CoLor: #2&// Retrieval
info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0"<span STYLE="CoLor: #3&// Retrieval
info: PRIVATE: OVERFLOW_CHECKING NUMERIC
"0"<span STYLE="CoLor: #4&// Retrieval
info: PRIVATE: Optimize NUMERIC "2"<span STYLE="CoLor: #5&// Retrieval
info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0"<span STYLE="CoLor: #6&// Retrieval
info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING
"0"<span STYLE="CoLor: #7&// Retrieval
info: PRIVATE: UNDERFLOW_CHECKING NUMERIC
"0"<span STYLE="CoLor: #8&// Retrieval
info: PRIVATE: UsedW NUMERIC "1"<span STYLE="CoLor: #9&// Retrieval
info: PRIVATE: Width NUMERIC "8"<span STYLE="CoLor: #0&// Retrieval
info: PRIVATE: dc_aclr NUMERIC "1"<span STYLE="CoLor: #1&// Retrieval
info: PRIVATE: diff_widths NUMERIC "0"<span STYLE="CoLor: #2&// Retrieval
info: PRIVATE: msb_usedw NUMERIC "0"<span STYLE="CoLor: #3&// Retrieval
info: PRIVATE: output_width NUMERIC "8"<span STYLE="CoLor: #4&// Retrieval
info: PRIVATE: rsEmpty NUMERIC "1"<span STYLE="CoLor: #5&// Retrieval
info: PRIVATE: rsFull NUMERIC "0"<span STYLE="CoLor: #6&// Retrieval
info: PRIVATE: rsUsedW NUMERIC "1"<span STYLE="CoLor: #7&// Retrieval
info: PRIVATE: sc_aclr NUMERIC "0"<span STYLE="CoLor: #8&// Retrieval
info: PRIVATE: sc_sclr NUMERIC "0"<span STYLE="CoLor: #9&// Retrieval
info: PRIVATE: wsEmpty NUMERIC "0"<span STYLE="CoLor: #0&// Retrieval
info: PRIVATE: wsFull NUMERIC "1"<span STYLE="CoLor: #1&// Retrieval
info: PRIVATE: wsUsedW NUMERIC "0"<span STYLE="CoLor: #2&// Retrieval
info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone
II"<span STYLE="CoLor: #3&// Retrieval
info: CONSTANT: LPM_HINT STRING
"MAXIMIZE_SPEED=5,"<span STYLE="CoLor: #4&// Retrieval
info: CONSTANT: LPM_NUMWORDS NUMERIC "32"<span STYLE="CoLor: #5&// Retrieval
info: CONSTANT: LPM_SHOWAHEAD STRING "OFF"<span STYLE="CoLor: #6&// Retrieval
info: CONSTANT: LPM_TYPE STRING "dcfifo"<span STYLE="CoLor: #7&// Retrieval
info: CONSTANT: LPM_WIDTH NUMERIC "8"<span STYLE="CoLor: #8&// Retrieval
info: CONSTANT: LPM_WIDTHU NUMERIC "5"<span STYLE="CoLor: #9&// Retrieval
info: CONSTANT: OVERFLOW_CHECKING STRING
"ON"<span STYLE="CoLor: #0&// Retrieval
info: CONSTANT: RDSYNC_DELAYPIPE NUMERIC
"4"<span STYLE="CoLor: #1&// Retrieval
info: CONSTANT: UNDERFLOW_CHECKING STRING
"ON"<span STYLE="CoLor: #2&// Retrieval
info: CONSTANT: USE_EAB STRING "ON"<span STYLE="CoLor: #3&// Retrieval
info: CONSTANT: WRITE_ACLR_SYNCH STRING
"OFF"<span STYLE="CoLor: #4&// Retrieval
info: CONSTANT: WRSYNC_DELAYPIPE NUMERIC
"4"<span STYLE="CoLor: #5&// Retrieval
info: USED_PORT: aclr 0 0 0 0 INPUT GND
aclr<span STYLE="CoLor: #6&// Retrieval
info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL
data[7..0]<span STYLE="CoLor: #7&// Retrieval
info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL
q[7..0]<span STYLE="CoLor: #8&// Retrieval
info: USED_PORT: rdclk 0 0 0 0 INPUT NODEFVAL
rdclk<span STYLE="CoLor: #9&// Retrieval
info: USED_PORT: rdempty 0 0 0 0 OUTPUT NODEFVAL
rdempty<span STYLE="CoLor: #0&// Retrieval
info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL
rdreq<span STYLE="CoLor: #1&// Retrieval
info: USED_PORT: rdusedw 0 0 5 0 OUTPUT NODEFVAL
rdusedw[4..0]<span STYLE="CoLor: #2&// Retrieval
info: USED_PORT: wrclk 0 0 0 0 INPUT NODEFVAL
wrclk<span STYLE="CoLor: #3&// Retrieval
info: USED_PORT: wrfull 0 0 0 0 OUTPUT NODEFVAL
wrfull<span STYLE="CoLor: #4&// Retrieval
info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL
wrreq<span STYLE="CoLor: #5&// Retrieval
info: CONNECT: @data 0 0 8 0 data 0 0 8 0<span STYLE="CoLor: #6&// Retrieval
info: CONNECT: q 0 0 8 0 @q 0 0 8 0<span STYLE="CoLor: #7&// Retrieval
info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0
0<span STYLE="CoLor: #8&//
Retrieval info: CONNECT: @rdreq 0 0 0
0 rdreq 0 0 0 0<span STYLE="CoLor: #9&// Retrieval
info: CONNECT: @rdclk 0 0 0 0 rdclk 0 0 0
0<span STYLE="CoLor: #0&//
Retrieval info: CONNECT: @wrclk 0 0 0
0 wrclk 0 0 0 0<span STYLE="CoLor: #1&// Retrieval
info: CONNECT: rdempty 0 0 0 0 @rdempty 0 0 0
0<span STYLE="CoLor: #2&// Retrieval
info: CONNECT: rdusedw 0 0 5 0 @rdusedw 0 0 5
0<span STYLE="CoLor: #3&// Retrieval
info: CONNECT: wrfull 0 0 0 0 @wrfull 0 0 0
0<span STYLE="CoLor: #4&// Retrieval
info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0<span STYLE="CoLor: #5&// Retrieval
info: LIBRARY: altera_mf
altera_mf.altera_mf_components.all<span STYLE="CoLor: #6&// Retrieval
info: GEN_FILE: TYPE_NORMAL my_dcfifo.v
TRUE<span STYLE="CoLor: #7&// Retrieval
info: GEN_FILE: TYPE_NORMAL my_dcfifo.inc
FALSE<span STYLE="CoLor: #8&// Retrieval
info: GEN_FILE: TYPE_NORMAL my_dcfifo.cmp
FALSE<span STYLE="CoLor: #9&// Retrieval
info: GEN_FILE: TYPE_NORMAL my_dcfifo.bsf
FALSE<span STYLE="CoLor: #0&// Retrieval
info: GEN_FILE: TYPE_NORMAL my_dcfifo_inst.v
FALSE<span STYLE="CoLor: #1&// Retrieval
info: GEN_FILE: TYPE_NORMAL my_dcfifo_bb.v
TRUE<span STYLE="CoLor: #2&// Retrieval
info: GEN_FILE: TYPE_NORMAL my_dcfifo_waveforms.html
TRUE<span STYLE="CoLor: #3&// Retrieval
info: GEN_FILE: TYPE_NORMAL my_dcfifo_wave*.jpg
TRUE<span STYLE="CoLor: #4&// Retrieval
info: LIB_FILE: altera_mf
my_dcfifo_tb.v / Verilog
dcfifo的testbench。
<span STYLE="CoLor: #&
<span STYLE="CoLor: #&`timescale <span STYLE="CoLor: # ns/<span STYLE="CoLor: #0
ps<span STYLE="CoLor: #&<span STYLE="CoLor: #&module my_dcfifo_<span STYLE="CoLor: #&<span STYLE="CoLor: #&parameter WRPERIOD =&<span STYLE="CoLor: #;<span STYLE="CoLor: #&parameter RDPERIOD =&<span STYLE="CoLor: #;<span STYLE="CoLor: #&<span STYLE="CoLor: #&// write
side<span STYLE="CoLor: #&reg&&&&&&&
<span STYLE="CoLor: #&reg&&&&&&&
<span STYLE="CoLor: #&reg&&&&&&&
<span STYLE="CoLor: #&reg& [<span STYLE="CoLor: #:<span STYLE="CoLor: #]
<span STYLE="CoLor: #&wire&&&&&&
<span STYLE="CoLor: #&<span STYLE="CoLor: #&// read
side<span STYLE="CoLor: #&reg&&&&&&&
<span STYLE="CoLor: #&reg&&&&&&&
<span STYLE="CoLor: #&wire [<span STYLE="CoLor: #:<span STYLE="CoLor: #]
q;<span STYLE="CoLor: #&wire&&&&&&
<span STYLE="CoLor: #&wire [<span STYLE="CoLor: #:<span STYLE="CoLor: #]
<span STYLE="CoLor: #&<span STYLE="CoLor: #&my_dcfifo my_dcfifo0 (<span STYLE="CoLor: #&&
.aclr(aclr),<span STYLE="CoLor: #&&
.wrclk(wrclk),<span STYLE="CoLor: #&&
.wrreq(wrreq),<span STYLE="CoLor: #&&
.data(data),<span STYLE="CoLor: #&&
.wrfull(wrfull),<span STYLE="CoLor: #&&
.rdclk(rdclk),<span STYLE="CoLor: #&&
.rdreq(rdreq),<span STYLE="CoLor: #&& .q(q),<span STYLE="CoLor: #&&
.rdempty(rdempty),<span STYLE="CoLor: #&&
.rdusedw(rdusedw)<span STYLE="CoLor: #&);<span STYLE="CoLor: #&<span STYLE="CoLor: #&initial&begin<span STYLE="CoLor: #&& #<span STYLE="CoLor: #& aclr =&<span STYLE="CoLor: #'b0;<span STYLE="CoLor: #&&&&&&
wrclk =&<span STYLE="CoLor: #'b0;<span STYLE="CoLor: #&&&&&&
wrreq =&<span STYLE="CoLor: #'b1;<span STYLE="CoLor: #&&&&&&
data& =&<span STYLE="CoLor: #'h00;<span STYLE="CoLor: #&&&&&&
rdclk =&<span STYLE="CoLor: #'b0;<span STYLE="CoLor: #&&&&&&
rdreq =&<span STYLE="CoLor: #'b0;<span STYLE="CoLor: #&& #<span STYLE="CoLor: # rdreq =&<span STYLE="CoLor: #'b1;<span STYLE="CoLor: #&& #<span STYLE="CoLor: # rdreq =&<span STYLE="CoLor: #'b0;<span STYLE="CoLor: #&& #<span STYLE="CoLor: # rdreq =&<span STYLE="CoLor: #'b1;<span STYLE="CoLor: #&end<span STYLE="CoLor: #&<span STYLE="CoLor: #&// wr
clk<span STYLE="CoLor: #&always #(WRPERIOD/<span STYLE="CoLor: #)
wrclk =&~<span STYLE="CoLor: #&<span STYLE="CoLor: #&// wr
data<span STYLE="CoLor: #&always@(posedge wrclk, posedge aclr) begin<span STYLE="CoLor: #&& if (aclr) <span STYLE="CoLor: #&&&&
data &=&<span STYLE="CoLor: #'h00;<span STYLE="CoLor: #&& else&begin<span STYLE="CoLor: #&&&&
data +&<span STYLE="CoLor: #'h01;<span STYLE="CoLor: #&& end<span STYLE="CoLor: #&end<span STYLE="CoLor: #&<span STYLE="CoLor: #&// rd
clk<span STYLE="CoLor: #&always #(RDPERIOD/<span STYLE="CoLor: #)
rdclk =&~<span STYLE="CoLor: #&<span STYLE="CoLor: #&endmodule
使用ModelSim-Altera與其自帶的precompiled library作仿真
改變預設目錄
File -& Change Directory
建立work library
編譯Verilog
Compile -& Compile ...
<img HEIGHT="411" ALT="modelsim_ae11" src="/blog7style/images/common/sg_trans.gif" real_src ="/cnblogs_com/oomusou/WindowsLiveWriter/ModelSimMegafunctionLPMSOCModelSim_A71B/modelsim_ae11_33c4a139-f152-416a-b907-aec136f8ded3.gif" WIDTH="612" BORDER="0"
TITLE="(转载)&如何使用ModelSim對Megafunction或LPM作仿真?&(SOC)&(MegaCore)&(ModelSim)" />&
Simulate -& Start Simulation
在Design tab指定testbench。
<img HEIGHT="510" ALT="modelsim_ae08" src="/blog7style/images/common/sg_trans.gif" real_src ="/cnblogs_com/oomusou/WindowsLiveWriter/ModelSimMegafunctionLPMSOCModelSim_A71B/modelsim_ae08_886e-4c7d-ac16-a55df107ff97.gif" WIDTH="765" BORDER="0"
TITLE="(转载)&如何使用ModelSim對Megafunction或LPM作仿真?&(SOC)&(MegaCore)&(ModelSim)" />
在Libraries tab,將Altera的precompiled
library加入,220model是LPM、而altera_mf是Megafunction的precompiled
library。完整的說明請參考。
<img HEIGHT="510" ALT="modelsim_ae09" src="/blog7style/images/common/sg_trans.gif" real_src ="/cnblogs_com/oomusou/WindowsLiveWriter/ModelSimMegafunctionLPMSOCModelSim_A71B/modelsim_ae09_5983acf6-c29b-4fcb-a625-4fca.gif" WIDTH="765" BORDER="0"
TITLE="(转载)&如何使用ModelSim對Megafunction或LPM作仿真?&(SOC)&(MegaCore)&(ModelSim)" />
加入觀察信號
在Objects window按滑鼠右鍵,Add to Wave -& Signals in
設定300 ns,run。
<img HEIGHT="555" ALT="modelsim_ae10" src="/blog7style/images/common/sg_trans.gif" real_src ="/cnblogs_com/oomusou/WindowsLiveWriter/ModelSimMegafunctionLPMSOCModelSim_A71B/modelsim_ae10_9d06db66-9e93-4dd3-9d6b-8d.gif" WIDTH="985" BORDER="0"
TITLE="(转载)&如何使用ModelSim對Megafunction或LPM作仿真?&(SOC)&(MegaCore)&(ModelSim)" />
使用TCL script
Step 2到Step 6的GUI,可使用以下TCL script取代。
<span STYLE="CoLor: #&#create
work library<span STYLE="CoLor: #&vlib work<span STYLE="CoLor: #&<span STYLE="CoLor: #&#compile<span STYLE="CoLor: #&vlog my_dcfifo.v<span STYLE="CoLor: #&vlog my_dcfifo_tb.v<span STYLE="CoLor: #&<span STYLE="CoLor: #&#simulate<span STYLE="CoLor: #&vsim -L C:/altera/<span STYLE="CoLor: #/modelsim_ae/altera/verilog/<span STYLE="CoLor: #0model -L
C:/altera/<span STYLE="CoLor: #/modelsim_ae/altera/verilog/altera_mf
work.my_dcfifo_tb<span STYLE="CoLor: #&<span STYLE="CoLor: #&#probe
signals<span STYLE="CoLor: #&add wave sim:/my_dcfifo_tb/aclr<span STYLE="CoLor: #&add wave sim:/my_dcfifo_tb/wrclk<span STYLE="CoLor: #&add wave sim:/my_dcfifo_tb/wrreq<span STYLE="CoLor: #&add wave -literal -radix decimal
sim:/my_dcfifo_tb/data<span STYLE="CoLor: #&add wave sim:/my_dcfifo_tb/wrfull<span STYLE="CoLor: #&add wave sim:/my_dcfifo_tb/rdclk<span STYLE="CoLor: #&add wave sim:/my_dcfifo_tb/rdreq<span STYLE="CoLor: #&add wave -literal -radix decimal
sim:/my_dcfifo_tb/q<span STYLE="CoLor: #&add wave sim:/my_dcfifo_tb/rdempty<span STYLE="CoLor: #&add wave -literal -radix decimal
sim:/my_dcfifo_tb/rdusedw<span STYLE="CoLor: #&<span STYLE="CoLor: #&#<span STYLE="CoLor: #0
ns<span STYLE="CoLor: #&run&<span STYLE="CoLor: #0 ns
使用ModelSim
SE,每次仿真自行編譯Megafunction與LPM若沒安裝ModelSim-Altera,只安裝ModelSim
SE,就沒有Altera提供的precompiled
library可用,這時若要對有使用Megafunction與LPM的code作仿真,就必須自行編譯。
將220mdel.v與altera_mf.v複製到目錄下
將C:\altera\81\quartus\eda\sim_lib\目錄下的220model.v與altera_mf.v複製到專案目錄下。
改變預設目錄
File -& Change Directory
建立work library
編譯Verilog
<img HEIGHT="411" ALT="modelsim_ae12" src="/blog7style/images/common/sg_trans.gif" real_src ="/cnblogs_com/oomusou/WindowsLiveWriter/ModelSimMegafunctionLPMSOCModelSim_A71B/modelsim_ae12_6d6a50a1--ac4b-e64c9afd93df.gif" WIDTH="612" BORDER="0"
TITLE="(转载)&如何使用ModelSim對Megafunction或LPM作仿真?&(SOC)&(MegaCore)&(ModelSim)" />
編譯220model.v與altera_mf.v需要一些時間。
Simulate -& Start Simulation
在Design tab指定testbench,與ModelSim-Altera不一樣的是不能勾選Enable
optimization,因為選了之後,所有在Objects window的信號會被優化掉,而無法選取。
<img HEIGHT="510" ALT="modelsim_ae13" src="/blog7style/images/common/sg_trans.gif" real_src ="/cnblogs_com/oomusou/WindowsLiveWriter/ModelSimMegafunctionLPMSOCModelSim_A71B/modelsim_ae13_ba646ea0--afc9-1cdb3e88e932.gif" WIDTH="765" BORDER="0"
TITLE="(转载)&如何使用ModelSim對Megafunction或LPM作仿真?&(SOC)&(MegaCore)&(ModelSim)" />&
加入觀察信號
在Objects window按滑鼠右鍵,Add to Wave -& Signals in
設定300 ns,run。
<img HEIGHT="555" ALT="modelsim_ae10" src="/blog7style/images/common/sg_trans.gif" real_src ="/cnblogs_com/oomusou/WindowsLiveWriter/ModelSimMegafunctionLPMSOCModelSim_A71B/modelsim_ae10_9d06db66-9e93-4dd3-9d6b-8d.gif" WIDTH="985" BORDER="0"
TITLE="(转载)&如何使用ModelSim對Megafunction或LPM作仿真?&(SOC)&(MegaCore)&(ModelSim)" />
使用TCL script
Step 2到Step 7的GUI,可使用以下TCL script取代。
<span STYLE="CoLor: #&#create
work library<span STYLE="CoLor: #&vlib work<span STYLE="CoLor: #&<span STYLE="CoLor: #&#compile<span STYLE="CoLor: #&vlog my_dcfifo.v<span STYLE="CoLor: #&vlog my_dcfifo_tb.v<span STYLE="CoLor: #&vlog 220model.v<span STYLE="CoLor: #&vlog altera_mf.v<span STYLE="CoLor: #&<span STYLE="CoLor: #&#simulate<span STYLE="CoLor: #&vsim -novopt work.my_dcfifo_tb<span STYLE="CoLor: #&<span STYLE="CoLor: #&#probe
signals<span STYLE="CoLor: #&add wave sim:/my_dcfifo_tb/aclr<span STYLE="CoLor: #&add wave sim:/my_dcfifo_tb/wrclk<span STYLE="CoLor: #&add wave sim:/my_dcfifo_tb/wrreq<span STYLE="CoLor: #&add wave -literal -radix decimal
sim:/my_dcfifo_tb/data<span STYLE="CoLor: #&add wave sim:/my_dcfifo_tb/wrfull<span STYLE="CoLor: #&add wave sim:/my_dcfifo_tb/rdclk<span STYLE="CoLor: #&add wave sim:/my_dcfifo_tb/rdreq<span STYLE="CoLor: #&add wave -literal -radix decimal
sim:/my_dcfifo_tb/q<span STYLE="CoLor: #&add wave sim:/my_dcfifo_tb/rdempty<span STYLE="CoLor: #&add wave -literal -radix decimal
sim:/my_dcfifo_tb/rdusedw<span STYLE="CoLor: #&<span STYLE="CoLor: #&#<span STYLE="CoLor: #0
ns<span STYLE="CoLor: #&run&<span STYLE="CoLor: #0 ns
使用ModelSim
SE,將Megafunction與LPM編譯成library,日後不必重新編譯以上的方法雖可行,不過必須每次重新編譯Megafunction與LPM,較花時間,可將Megafunction與LPM先獨立編譯成library,以後就不用重新編譯。
1:建立獨立altera_lib目錄,將220model.v與altera_mf.v複製到此目錄。
改變預設目錄到altera_lib
File -& Change Directory
建立LPM library
<img HEIGHT="355" ALT="modelsim_ae14" src="/blog7style/images/common/sg_trans.gif" real_src ="/cnblogs_com/oomusou/WindowsLiveWriter/ModelSimMegafunctionLPMSOCModelSim_A71B/modelsim_ae14_eb2555f2-ed3a--ffde.gif" WIDTH="465" BORDER="0"
TITLE="(转载)&如何使用ModelSim對Megafunction或LPM作仿真?&(SOC)&(MegaCore)&(ModelSim)" />
編譯Verilog
<img HEIGHT="411" ALT="modelsim_ae15" src="/blog7style/images/common/sg_trans.gif" real_src ="/cnblogs_com/oomusou/WindowsLiveWriter/ModelSimMegafunctionLPMSOCModelSim_A71B/modelsim_ae15_923de39b-e867-407d-8c0c-b9d70ef7b727.gif" WIDTH="612" BORDER="0"
TITLE="(转载)&如何使用ModelSim對Megafunction或LPM作仿真?&(SOC)&(MegaCore)&(ModelSim)" />
需要一些時間編譯。
建立Megafunction library
<img HEIGHT="355" ALT="modelsim_ae16" src="/blog7style/images/common/sg_trans.gif" real_src ="/cnblogs_com/oomusou/WindowsLiveWriter/ModelSimMegafunctionLPMSOCModelSim_A71B/modelsim_ae16_0ed16-4b02-bb21-4b5b6c844083.gif" WIDTH="465" BORDER="0"
TITLE="(转载)&如何使用ModelSim對Megafunction或LPM作仿真?&(SOC)&(MegaCore)&(ModelSim)" />
編譯Verilog
<img HEIGHT="411" ALT="modelsim_ae17" src="/blog7style/images/common/sg_trans.gif" real_src ="/cnblogs_com/oomusou/WindowsLiveWriter/ModelSimMegafunctionLPMSOCModelSim_A71B/modelsim_ae17_3a-41d7-a83a-bc5723abd93a.gif" WIDTH="612" BORDER="0"
TITLE="(转载)&如何使用ModelSim對Megafunction或LPM作仿真?&(SOC)&(MegaCore)&(ModelSim)" />
需要一些時間編譯,如此已經建立好2個library。
改變預設目錄到含my_dcfifo.v與my_dcfifo_tb.v的目錄
File -& Change Directory
建立work library
編譯Verilog
Simulate -& Start Simulation
在Design tab指定testbench,與ModelSim-Altera不一樣的是不能勾選Enable
optimization,因為選了之後,所有在Objects window的信號會被優化掉,而無法選取。
<img HEIGHT="510" ALT="modelsim_ae18" src="/blog7style/images/common/sg_trans.gif" real_src ="/cnblogs_com/oomusou/WindowsLiveWriter/ModelSimMegafunctionLPMSOCModelSim_A71B/modelsim_ae18_43bf888b--e2cf1d25.gif" WIDTH="765" BORDER="0"
TITLE="(转载)&如何使用ModelSim對Megafunction或LPM作仿真?&(SOC)&(MegaCore)&(ModelSim)" />
在Libraries tab加入剛剛編譯的lib。
<img HEIGHT="510" ALT="modelsim_ae19" src="/blog7style/images/common/sg_trans.gif" real_src ="/cnblogs_com/oomusou/WindowsLiveWriter/ModelSimMegafunctionLPMSOCModelSim_A71B/modelsim_ae19_3b91dbef-5bce-4310-b6af-.gif" WIDTH="765" BORDER="0"
TITLE="(转载)&如何使用ModelSim對Megafunction或LPM作仿真?&(SOC)&(MegaCore)&(ModelSim)" />
此時速度就很快,因為LPM與Megafunction兩個lib已經編譯過了。
加入觀察信號
在Objects window按滑鼠右鍵,Add to Wave -& Signals in
設定300 ns,run。
<img HEIGHT="555" ALT="modelsim_ae10" src="/blog7style/images/common/sg_trans.gif" real_src ="/cnblogs_com/oomusou/WindowsLiveWriter/ModelSimMegafunctionLPMSOCModelSim_A71B/modelsim_ae10_9d06db66-9e93-4dd3-9d6b-8d.gif" WIDTH="985" BORDER="0"
TITLE="(转载)&如何使用ModelSim對Megafunction或LPM作仿真?&(SOC)&(MegaCore)&(ModelSim)" />
使用TCL scriptStep 3到Step 6的GUI,可使用以下TCL
script取代。
<span STYLE="CoLor: #&#create
LPM library<span STYLE="CoLor: #&vlib LPM<span STYLE="CoLor: #&<span STYLE="CoLor: #&#compile
220model.v<span STYLE="CoLor: #&vlog -work LPM 220model.v<span STYLE="CoLor: #&<span STYLE="CoLor: #&#create
Megafunction<span STYLE="CoLor: #&vlib Megafunction<span STYLE="CoLor: #&<span STYLE="CoLor: #&#compile
altera_mf.v<span STYLE="CoLor: #&vlog -work Megafunction
altera_mf.v
Step 8到Step 12的GUI,可使用以下TCL script取代。
<span STYLE="CoLor: #&#create
work library<span STYLE="CoLor: #&vlib work<span STYLE="CoLor: #&<span STYLE="CoLor: #&#compile<span STYLE="CoLor: #&vlog my_dcfifo.v<span STYLE="CoLor: #&vlog my_dcfifo_tb.v<span STYLE="CoLor: #&<span STYLE="CoLor: #&#simulate<span STYLE="CoLor: #&vsim -novopt -L D:/<span STYLE="CoLor: #Clare/VerilogLab/ModelSim/altera_lib_tcl/LPM -L
D:/<span STYLE="CoLor: #Clare/VerilogLab/ModelSim/altera_lib_tcl/Megafunction
work.my_dcfifo_tb<span STYLE="CoLor: #&<span STYLE="CoLor: #&#probe
signals<span STYLE="CoLor: #&add wave sim:/my_dcfifo_tb/aclr<span STYLE="CoLor: #&add wave sim:/my_dcfifo_tb/wrclk<span STYLE="CoLor: #&add wave sim:/my_dcfifo_tb/wrreq<span STYLE="CoLor: #&add wave -literal -radix decimal
sim:/my_dcfifo_tb/data<span STYLE="CoLor: #&add wave sim:/my_dcfifo_tb/wrfull<span STYLE="CoLor: #&add wave sim:/my_dcfifo_tb/rdclk<span STYLE="CoLor: #&add wave sim:/my_dcfifo_tb/rdreq<span STYLE="CoLor: #&add wave -literal -radix decimal
sim:/my_dcfifo_tb/q<span STYLE="CoLor: #&add wave sim:/my_dcfifo_tb/rdempty<span STYLE="CoLor: #&add wave -literal -radix decimal
sim:/my_dcfifo_tb/rdusedw<span STYLE="CoLor: #&<span STYLE="CoLor: #&#<span STYLE="CoLor: #0
ns<span STYLE="CoLor: #&run&<span STYLE="CoLor: #0 ns
使用ModelSim SE,將Megafunction與LPM所編譯的library建立永久的library
mapping既然已經為LPM與Megafunction建立了library,可以透過的技巧,建立永久的library
mapping。將C:\Modeltech_6.3e\modelsim.ini修改成如下所示:
<span STYLE="CoLor: #&;
Copyright <span STYLE="CoLor: #91-<span STYLE="CoLor: #08
Mentor Graphics
Corporation<span STYLE="CoLor: #&;<span STYLE="CoLor: #&; All Rights
Reserved.<span STYLE="CoLor: #&;<span STYLE="CoLor: #&; THIS WORK
CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION WHICH IS THE
PROPERTY OF <span STYLE="CoLor: #&; MENTOR
GRAPHICS CORPORATION OR ITS LICENSORS AND IS SUBJECT TO LICENSE
TERMS.<span STYLE="CoLor: #&;&&
<span STYLE="CoLor: #&<span STYLE="CoLor: #&[Library]<span STYLE="CoLor: #&LPM =
D:/<span STYLE="CoLor: #Clare/VerilogLab/ModelSim/altera_lib/LPM<span STYLE="CoLor: #&Megafunction = D:/<span STYLE="CoLor: #Clare/VerilogLab/ModelSim/altera_lib/Megafunction<span STYLE="CoLor: #&std =&$MODEL_TECH/../std<span STYLE="CoLor: #&ieee =&$MODEL_TECH/../ieee<span STYLE="CoLor: #&verilog =&$MODEL_TECH/../verilog<span STYLE="CoLor: #&vital2000 =&$MODEL_TECH/../vital2000<span STYLE="CoLor: #&std_developerskit =&$MODEL_TECH/../std_developerskit<span STYLE="CoLor: #&synopsys =&$MODEL_TECH/../synopsys<span STYLE="CoLor: #&modelsim_lib =&$MODEL_TECH/../modelsim_lib<span STYLE="CoLor: #&sv_std =&$MODEL_TECH/../sv_std<span STYLE="CoLor: #&mtiAvm =&$MODEL_TECH/../avm<span STYLE="CoLor: #&mtiUPF =&$MODEL_TECH/../upf_lib<span STYLE="CoLor: #&;vhdl_psl_checkers =&$MODEL_TECH/../vhdl_psl_checkers&&&&&&
// Source files only for this
release<span STYLE="CoLor: #&;verilog_psl_checkers =&$MODEL_TECH/../verilog_psl_checkers // Source files only for this
第10行與第11行就是所加入的library mapping。如此只要一執行ModelSim
SE,就可以看到LPM與Megafunction都已經mapping上了。
<img HEIGHT="768" ALT="modelsim_ae20" src="/blog7style/images/common/sg_trans.gif" real_src ="/cnblogs_com/oomusou/WindowsLiveWriter/ModelSimMegafunctionLPMSOCModelSim_A71B/modelsim_ae20_88-4616-bcbb-51e3e75f08e0.gif" WIDTH="1024" BORDER="0"
TITLE="(转载)&如何使用ModelSim對Megafunction或LPM作仿真?&(SOC)&(MegaCore)&(ModelSim)" />
之後的模擬與之前的介紹一樣,唯library選擇比較方便。
<img HEIGHT="510" ALT="modelsim_ae21" src="/blog7style/images/common/sg_trans.gif" real_src ="/cnblogs_com/oomusou/WindowsLiveWriter/ModelSimMegafunctionLPMSOCModelSim_A71B/modelsim_ae21_c7f0a4d2-ac36-4f10-cc59c18e.gif" WIDTH="765" BORDER="0"
TITLE="(转载)&如何使用ModelSim對Megafunction或LPM作仿真?&(SOC)&(MegaCore)&(ModelSim)" />
完整程式下載
(ModelSim-Altera使用GUI版本)
(ModelSim-Altera使用TCL
script版本)
SE使用GUI版本)
(ModelSim SE使用TCL
script版本)
(ModelSim SE使用GUI建立library版本)
SE使用GUI使用library版本)
(ModelSim SE使用TCL script建立library版本)
(ModelSim SE使用TCL
script使用library版本)
Conclusion
對Megafunction與LPM作仿真,有3種方法:
1.使用ModelSim-Altera與其自帶的precompiled library作仿真。
2.使用ModelSim SE,每次仿真自行編譯Megafunction與LPM。
3.使用ModelSim
SE,將Megafunction與LPM編譯成library,日後不必重新編譯,並可自行修改modelsim.ini,以便日後使用。
另外ModelSim-Altera與ModelSim SE的TCL script,在參數上稍有不同。
EDA先鋒工作室,王誠,吳繼華,范麗珍、薛寧,薛小剛 著,2005,Altera FPGA/CPLD設計
(基礎篇),人民郵電出版社
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 modelsim添加altera库 的文章

 

随机推荐