我有一个具有以下结构的代码
-- synthesis translate_off
... some sort of memory implementation/coding
-- synthesis translate_on
如果删除此段代码会影响代码 FPGA implementation
的最终输出,请与我们联系。
谢谢, 最好的祝福, Faras
答案 0 :(得分:5)
元数据synthesis translate_off
和... _on
不是其中的一部分
VHDL综合标准(IEEE P1076.6),因此行为取决于工具。
例如,Altera Quartus II文档描述了translate_off and translate_on VHDL Synthesis Directives,说
...直接分析&合成以忽略部分设计代码......指令之间的文本被视为每行前面都有一行注释分隔符。 ...
因此删除指令之间的代码不会影响最终的合成输出。
有关普遍适用的元素的讨论,您可以阅读Sigasi的这个描述:List of known VHDL metacomment pragma's。
VHDL综合标准(IEEE P1076.6)规定使用rtl_synthesis off
和... on
,但据Sigasi说,这似乎不太好
支撑。
作为最后一句话,应谨慎使用ignore指令,因为它们可能(会)导致仿真设计和综合设计的行为不同,从而阻碍了设计的验证和调试。
答案 1 :(得分:0)
VHDL综合指令,指导分析&合成以忽略特定于仿真的设计代码部分,与逻辑综合无关。
要使用translate_off和translate_on综合指令,您可以在位于您想要的代码之前的注释中指定translate_off综合指令Analysis&要忽略的综合,并在您想要的代码后面的注释中指定translate_on综合指令Analysis&合成忽略。在注释中,在synthesis指令之前加上synthesis关键字。指令之间的文本被视为每行前面都有一行注释分隔符。不执行语法检查,并且不要求文本是有效的VHDL。
注意:分析& Synthesis还识别同义合成指令synthesis_off和synthesis_on。这些综合指令的行为与translate_off和translate_on综合指令相同。
例如,在以下代码中,Analysis& Synthesis忽略代码USE std.textio.all;,并在注释 - 合成translate_on之后对任何代码执行逻辑综合(除非用户再次使用translate_off和translate_on综合指令):
- 合成translate_off
USE std.textio.all;
- 合成translate_on
您可以使用Ignore translate_off和translate_on Synthesis Directives logic选项来禁用设计中的所有translate_off和translate_on综合指令,从而允许您使用以前在编译期间忽略的部分。