问题描述
我正在使用Virtex-6 / Spartan-6重定向我的设计,并且它在Synthesis中出错,出现以下错误。当我针对旧器件时,此设计通过了XST综合。为什么?
错误:HDLC编译器:940 – “ex_0005.vhd”第16行:找到无与伦比的编译指示翻译/ synthesis_off编译指示。需要一对匹配的具有相同关键字的translate_off和translate_on指令。
VHDL示例代码
库;
使用ieee.std_logic_1164.all;
实体ex_0005是
port(clk:in std_logic;
d:在std_logic中;
q:out std_logic);
结束ex_0005;
ex_0005的架构是
开始
过程(clk)
开始
if(clk’event和clk =’1’)然后
q <= d;
– pragma translate_off
q <=不(d);
– translate_on
万一;
结束过程;
结束;
Verilog示例代码
文件:ex_0005_v.v
编译库:工作
模块ex_0005_v(clk,d,q);
输入clk,d;
输出q;
reg q;
永远@(posedge clk)
开始
q <= d;
// pragma translate_off – 注意:此处有错误点
q <=不(d);
// translate_on
结束
endmodule
解决/修复方法
11.2 XST为Virtex-6和Spartan-6系列引入了新的VHDL / Verilog解析器。有关此更改的更多信息,请参阅(Xilinx答复32927)
使用XST为Virtex-6和Spartan-6系列编译设计时,translate_off和translate_on指令必须具有相同的关键字。支持以下关键字:综合,synopsys,pragma,范例,verific。您可以使用没有关键字的translate_off / _on指令。
要解决此问题,请对translate_off / _on指令使用相同的关键字。
例如,在上面的代码中,您可以将源编辑为:
库;
使用ieee.std_logic_1164.all;
实体ex_0005是
port(clk:in std_logic;
d:在std_logic中;
q:out std_logic);
结束ex_0005;
ex_0005的架构是
开始
过程(clk)
开始
if(clk’event和clk =’1’)然后
q <= d;
– pragma translate_off – 注意:错误点在这里
q <=不(d);
– pragma translate_on
万一;
结束过程;
结束;
文件:ex_0005_v.v
编译库:工作
模块ex_0005_v(clk,d,q);
输入clk,d;
输出q;
reg q;
永远@(posedge clk)
开始
q <= d;
// pragma translate_off – 注意:此处有错误点
q <=不(d);
// pragma translate_on
结束
endmodule
没有回复内容