在我的VHDL语言设计中,有一个16位的std_logic_vector。位置15中的比特当前未使用,合成器(SynplifyPro)抛出警告,说明比特未使用并将被修剪:
@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库:
library synplify;在文件顶部,然后按如下方式定义该属性:
ATTRIBUTE SYN_PRESERVE : BOOLEAN;
ATTRIBUTE SYN_PRESERVE OF MYREG : SIGNAL IS TRUE;如果我尝试在后期合成上运行ModelSim,一切都是正常的。然而,当我尝试在预合成上运行ModelSim时,它给出了错误:
** Error: .../DATAGEN.vhd(20): (vcom-1598) Library "synplify" not found.我认为这个问题是因为预合成仿真不应该使用这个库。事实上,如果我移除它,一切都会正常工作。我想继续使用预合成模拟的原因是因为它比后合成快得多。然而,这个问题迫使我不断注释掉这个库,用于预合成,并将其放回后合成?
可以使用像条件包含这样的东西吗?
注意:我更喜欢保留未使用的部分,因此添加避免修剪的属性对我来说很好。
发布于 2019-07-24 16:00:20
可以使用像条件包含这样的东西吗?
即将发布的VHDL2019标准支持条件编译,一些模拟器,例如RivieraPro,已经开始支持条件编译。有了这样的支持,你可以做像这样的事情
`if INCLUDE_SYNPLIFY = "true" then
library synplify;
`end if我不认为ModelSim有这样的功能,但你能做的就是用vlib定义一个synplify库,并在调用vsim时包含它。如果您使用的是VUnit,则只需将以下内容添加到您的运行脚本中
prj.add_library("synplify")https://stackoverflow.com/questions/57103296
复制相似问题