ModelSim 2020是一款仿真设计软件,支持混合语言模拟,通过ModelSim,您可以仿真以VHDL,C,Velog和Velog编写的设计,尽管设计单元必须完全是一种语言类型,但是任何设计单元都可以从另一种语言实例化其他设计单元,设计层次结构中的任何实例都可以是来自另一种语言的设计单元,而不受限制,另外ModelSim支持C和Velog之间的过程接口,因此您可以在过程级别在这些语言之间进行调用,支持优化混合设计、模拟器分辨率限制、运行时建模语!
Mentor Graphics ModelSim 软件特色
1、统一的混合语言仿真引擎,易于使用和能
2、ñative支持的Velog,Velog的设计,VHDL和C对复杂的设计环境的有效核查
3、快速调试时间,易于使用的多语言调试环境
4、先进的代码覆盖率和分析工具,可快速缩短覆盖范围
5、提供了交互式调试和后期模拟调试,因此可使用相同的调试环境
6、强大的波形比较功能,可轻松分析差异和错误
7、统一的覆盖数据库,具有完整的交互式和HTML报告和处理功能,可了解和调试整个项目的覆盖范围
8、结合HDL Designer和HDL Author进行完整的设计创建,项目管理和可视化功能
Mentor Graphics ModelSim 安装方法
1、打开modelsim-win-2020.4-se.exe软件直接安装,点击下一步
2、提示软件的安装地址C:modeltech_2020.4
3、提示软件的安装协议内容,点击下一步
4、提示软件的安装进度条,等待主程序安装结束
5、弹出提示您想要将Modelsim可执行目录添加到您的路径吗? 这对于从DO框中运行批处理编译和模拟非常有用,可以点击是
6、弹出Key Dver安装,点击否
7、提示安装完毕,点击完成
Mentor Graphics ModelSim 破解方法
1、打开patch,解压里面的破解文件,将MentorKG.exe和patch_dll.bat复制到软件安装地址C:modeltech_2020.4win
2、双击patch_dll.bat等待一段时间会弹出许可文件LICENSE.TXT,将其保存
3、在C盘建立flexlm文件夹,将许可证LICENSE.TXT复制到该文件夹保存
4、点击此电脑-属-高级系统设置添加变量内容
5、新建一个系统变量
LM_LICENSE_FILE
C:flexlmLICENSE.TXT
6、打开crack1文件夹,将win文件夹下的mgcld.exe和mgls.dll复制到安装目录中替换
7、如图所示,替换目标文件就可以激活
8、启动软件就可以正常使用
Mentor Graphics ModelSim 使用说明
基本混合语言流
使用ModelSim模拟混合语言设计包括几个基本步骤。您对流程中的每个步骤所采取的作取决于您的设计单元使用哪种语言编写以及它们在设计层次结构中的位置。
使用vcom或vlog命令编译HDL源代码。按照编译顺序规则编译设计中的所有模块。
使用sccom命令编译C C ++源代码。
对于具有HDL实例的C设计-为所有Velog / Velog和VHDL实例创建C外部模块声明。有关此声明的更多,请参考C外部模块(Velog)声明或C外部模块(VHDL)声明。
对于具有C实例的Velog / Velog / VHDL设计-使用SC_MODULE_EXPORT宏导出将由其他语言直接实例化的所有C实例。与实例化任何Velog / Velog / VHDL模块或设计单元一样,实例化导出的C模块。
对于带有Velog实例的VHDL —在Velog模块的编译过程中,请勿使用vlog -nodebug = ports,因为VHDL无法访问端口。
有关将Velog设计单元绑定到VHDL或Velog设计单元的,请参见“混合语言设计中的Velog绑定构造”。在编译单元作用域中使用绑定时,请在vlog命令中使用-cuname参数(请参阅编译单元作用域中的单独绑定)。
有关将Velog设计单元绑定到VHDL或Velog设计单元或C模块的,请参见“混合语言设计中的Velog绑定构造”。在编译单元作用域中使用绑定时,请在vlog命令中使用-cuname参数(请参阅编译单元作用域中的单独绑定)。
对于包含C的设计—使用sccom -link链接设计中的所有对象。
使用vopt命令详细设计和优化您的设计。请参阅优化混合设计。
使用vsim命令模拟设计。
运行和调试设计。
具有通用设计库的不同编译器
根据设计单位的语言,在混合语言设计上运行仿真之前,需要使用适当的编译命令。
VHDL源代码是使用vcom命令编译的。 ModelSim将生成的编译设计单元(实体,体系结构,配置和包)存储在工作库中。
Velog / Velog源代码是使用vlog命令编译的。 ModelSim将结果设计单元(模块和UDP)存储在工作库中。
通过使用sccom命令编译C / C ++源代码。 ModelSim将生成的目标代码编译到工作库中。
如果设计单位名称不重叠(VHDL设计单位名称更改为小写),则设计库可以存储来自任何受支持语言的设计单位的任何组合。有关库管理的更多,请参考设计库。
区分大小写
请注意,VHDL和Velog遵守区分大小写的不同规则。
VHDL不区分大小写。例如,对于相同的信号或变量,clk和CLK被视为相同的名称。
Velog(和Velog)区分大小写。例如,clk和CLK被视为可以应用于不同信号或变量的不同名称。
警告:
VHDL不区分大小写,因此,当您运行vcom -mixedsvvh编译要在Velog或Velog中使用的VHDL程序包时,它会默默地将程序包中的所有名称转换为小写(例如,InteceStage成为intecestage)。因为Velog和Velog区分大小写,所以当您运行vlog编译器时,它将在已编译的VHDL包中查找InteceStage,但由于与intecestage不匹配而找不到它(这是vcom -mixedsvvh生成的)。
这意味着您必须在Velog源代码中以小写形式编写的内容都写在VHDL包中,而不管VHDL源代码中使用的是大写还是小写。
层次参考
ModelSim支持IEEE 1076-2008标准“外部名称”语法,该语法使您可以从VHDL到VHDL进行分层引用。当前,这些引用可以跨越Velog边界,但是它们必须以VHDL开始和结束。
注意:
外部名称的目标必须是VHDL对象。 VHDL外部名称声明的位置必须在VHDL中,但是实际路径可以在任何地方开始。这仅适用于绝对路径名,因为相对路径名始于出现外部名称的封闭并发作用域。
混合语言设计中的访问限制
您不能在混合语言设计中直接读取或更改具有层次结构引用的C对象。此外,如果有插入的C块,则不能直接在层次结构上或下访问Velog / Velog对象。
要访问受阻塞的C对象,请通过层次结构中所有设计单元的端口传播值,或使用控制/观察功能。您可以使用sc_signal的以下成员函数之一来控制和观察设计中的分层信号:
contl_foreign_signal
watch_foreign_signal
模拟器分辨率限制
在只有一个顶层设计单元的混合语言设计中,顶层设计单元的仿真时间分辨率适用于整个设计。
如果混合设计的根是VHDL,则使用VHDL仿真器分辨率规则(有关VHDL的详细,请参见VHDL的仿真器分辨率限制)。如果混合设计的根是Velog或Velog,则使用Velog规则(有关详细,请参阅模拟器分辨率限制(Velog))。
如果根是C,则使用C规则(有关详细,请参阅C时间单位和模拟器分辨率)。
在具有多个顶部的混合语言设计的情况下,使用以下算法:
如果存在VHDL或C模块,则将忽略Velog分辨率。如果Velog分辨率比所选分辨率更好,则会发出错误消息。
如果存在VHDL模块,则将忽略Velog分辨率。如果Velog分辨率比所选分辨率更好,则会发出错误消息。
如果同时存在VHDL和C,则根据首先设计的设计单位来选择分辨率。例如:
vsim sc_top vhdl_top -do vsim.do
在这种情况下,将选择C分辨率(默认为1 ns)。
vsim vhdl_top sc_top -do vsim.do
在这种情况下,将选择VHDL分辨率。
如果使用-t选项调用vsim,则将忽略源文件中指定的所有分辨率。设置后,它将覆盖所有其他分辨率。
运行时建模语义
ModelSim模拟器符合所有相关语言参考手册的要求,适用于多种语言设计的每种语言。
为了达到这一要求,一个模拟迭代(即增量周期)中的作顺序如下:
运行C进程
进行信号更新
运行HDL流程
需要上面的调度语义才能同时满足C和HDL LRM。即,由C原语通道中的事件触发的所有进程都应在下一个增量的开头唤醒。由HDL信号上的事件触发的所有过程都应在当前增量结束时唤醒。
需要上面的调度语义来满足HDL LRM。由HDL信号上的事件触发的所有过程都应在当前增量结束时唤醒。
对于跨越语言边界的信号链,这意味着C一侧的进程比HDL一侧的进程晚唤醒一个增量。因此,将在此类过程之间引入一个偏斜增量。但是,如果进程之间相互通信,则仍将导致正确的系统行为。
近期热门