首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在综合前/综合后用ModelSim模拟VHDL语言设计时有条件地使用库

在综合前/综合后用ModelSim模拟VHDL语言设计时有条件地使用库
EN

Stack Overflow用户
提问于 2019-07-19 06:19:20
回答 1查看 463关注 0票数 0

在我的VHDL语言设计中,有一个16位的std_logic_vector。位置15中的比特当前未使用,合成器(SynplifyPro)抛出警告,说明比特未使用并将被修剪:

代码语言:javascript
复制
@W:CL190 : DATAGEN.vhd(93) | Optimizing register bit MYREG(15) to a constant 0. To keep the instance, apply constraint syn_preserve=1 on the instance.
@W:CL260 : DATAGEN.vhd(93) | Pruning register bit 15 of MYREG(15 downto 0). If this is not the intended behavior, drive the input with valid values, or an input from the top level.

根据合成器的建议,我已经添加了必需的属性,并且我能够摆脱这些警告。要添加这些属性,我必须包括Synplify库:

代码语言:javascript
复制
library synplify;

在文件顶部,然后按如下方式定义该属性:

代码语言:javascript
复制
ATTRIBUTE SYN_PRESERVE : BOOLEAN;
ATTRIBUTE SYN_PRESERVE OF MYREG : SIGNAL IS TRUE;

如果我尝试在后期合成上运行ModelSim,一切都是正常的。然而,当我尝试在预合成上运行ModelSim时,它给出了错误:

代码语言:javascript
复制
** Error: .../DATAGEN.vhd(20): (vcom-1598) Library "synplify" not found.

我认为这个问题是因为预合成仿真不应该使用这个库。事实上,如果我移除它,一切都会正常工作。我想继续使用预合成模拟的原因是因为它比后合成快得多。然而,这个问题迫使我不断注释掉这个库,用于预合成,并将其放回后合成?

可以使用像条件包含这样的东西吗?

注意:我更喜欢保留未使用的部分,因此添加避免修剪的属性对我来说很好。

EN

回答 1

Stack Overflow用户

发布于 2019-07-24 16:00:20

可以使用像条件包含这样的东西吗?

即将发布的VHDL2019标准支持条件编译,一些模拟器,例如RivieraPro,已经开始支持条件编译。有了这样的支持,你可以做像这样的事情

代码语言:javascript
复制
`if INCLUDE_SYNPLIFY = "true" then
  library synplify;
`end if

我不认为ModelSim有这样的功能,但你能做的就是用vlib定义一个synplify库,并在调用vsim时包含它。如果您使用的是VUnit,则只需将以下内容添加到您的运行脚本中

代码语言:javascript
复制
prj.add_library("synplify")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57103296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档