描述
关键词:FPGA编译器,设计编译器,插件,DoutTouToul
紧迫性:标准
一般描述:如果HDL设计包含双折射IO,有时
FPGA编译器将无法推断正确的IO类型;
有时失败。如果IOBG4000留在网表中,就会发生这种情况。
插入程序/编译报告这样的错误:
错误:在编译前需要在端口“MyCeCH”上插入一个垫子。(OPT-1000)
此解决方案在插入插件失败时处理问题的提示。这个
解决方案记录适用于FPGA编译器和设计编译器。这个解决方案
适用于使用的FPGA编译器/设计编译器流程中的任何一个家族。
StuttPad/StIsPurthIsPad命令。
解决方案
FPGA编译器能够推断输入缓冲区、输出缓冲区,以及
非注册双向I/O与XC400 0X IOB结构,有
可用于输入、输出和双向的输入和输出寄存器
I/O某些类型的I/OS或编码风格需要在FPGA编译器中进行特殊处理,例如I/O端口使用IOB寄存器和/或HDL。
代码三态行为不在顶级HDL文件中。
一般来说,FPGA编译器可以推断简单的I/O。简单的I/O定义为
需要输入缓冲区、输出缓冲区、输出三态的顶级端口,
输入寄存器或输出寄存器。如果设计器想要使用输入或
用于顶级端口的输出寄存器,推断
寄存器不能描述异步设置或异步重置。这个
XC400 0X I/O FFS不具有异步设置或异步重置设计器
可以切换。此外,只使用输入缓冲器和三态可输出输出缓冲器的双向PIN也是一个简单的I/O.。
用FPGA编译器推断简单的双向I/O,描述的HDL
这种类型的I/O必须驻留在顶级HDL中。如果在顶级HDL中没有描述I/O,则通常会出现对插入Pad的异常终止。
报告,和/或FPGA编译器将编写一个IOBJ4000单元格到Xilinx
SXNF文件。在Xilinx的位置和布线环境中,存在
IOBJ4000单元格将从NGDBug和M1 WAR创建未扩展的块错误
不处理设计。
对于Verilog和VHDL,共享一个条件赋值语句
具有连续赋值语句的公共端口将推断一个简单的
双向I/O,由IGBF和OBUFT组成的双向PIN。
对于Verilog,一个简单的双向引脚将被描述为:
模块顶部(A,B,C…);
A;
输入B;
.
.
.
分配内部文件SIG= A;
分配a=(控制)?(OutPuthsig):1BZ;
.
.
终端模块
对于VHDL,一个简单的双向PIN将被描述为
实体顶部
端口(A:输入STDYLogic;B:在STDyLogic中,…);
端部顶部;
顶部建筑
.
.
开始
内部;
过程
开始
如果(Control=1)则
A& lt;= OutPuthsig;
其他的
A& lt;
如果结束;
结束过程;
.
.
内部结束;
对于Verilog和VHDL,描述输入路径、输出的HDL代码
路径和控制信号处于顶层。如果三个中的一个或多个
提到的HDL结构是在较低层次的层次,FPGA编译器。
如果不可能将简单双向I/O的整个行为移到顶层,则无法推断出简单的双向I/O。
HDL,可以尝试以下编译策略(有时使用一个或多个)
下面的建议可以一起产生一个可行的解决方案:
(a)在编译前不执行StIsPurthIsIpAd/EnputtPad;
编译后执行这些命令。
(b)编译后不执行SETXPORTIOSISPAD/EntUpT.PADS命令,
编译前执行这些命令。
(c)使用-TruuSealSead选项运行插入式PADS命令。
(d)使用编译-unGROMPPALALL使设计变平,然后进行后续编译。
使用StIsPurtIsIsPad和InStudioPad命令。
(e)在没有成功替换的双向端口上
IOBJ4000细胞与适当的iBF/OBUFT组合,实例化
iBF/OBUFT单元,并且不在端口上放置PotoSysIpad属性。
(f)尝试使用FPGA编译器/设计编译器的最新版本。
使用IOB寄存器、IOB寄存器的任何类型的双向I/O
具有IOB三态,和/或使用已注册和未注册版本
对于输入/输出信号,不能通过FPGA编译器来推断。
FPGAExpress没有这个限制。如果使用FPGAExpress是
不是一个选项,处理复杂I/O的最好方法是实例化。
细胞。对于I/O单元及其引脚的名称,请参阅
XSI用户指南附录A。
没有回复内容