合成translate_off如何工作?

时间:2014-12-27 04:36:00

标签: vhdl implementation fpga synthesis

我有一个具有以下结构的代码

-- synthesis translate_off
... some sort of memory implementation/coding
-- synthesis translate_on

如果删除此段代码会影响代码 FPGA implementation 的最终输出,请与我们联系。

谢谢, 最好的祝福, Faras

2 个答案:

答案 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综合指令,从而允许您使用以前在编译期间忽略的部分。