前言
对常见的WARNING进行整理汇总。
缓更。
WARNINGs: | |||||||||
Xst:647 | Xst:2677 | Xst:1336 | Xst:1898 | Xst:2211 | Xst:1710 | Xst:1780 | Xst:646 | Xst:XXXX | Xst:XXXX |
Infos: | |||||||||
Xst:2261 | |||||||||
ERRORS: | |||||||||
Xst:872 | |||||||||
在功能仿真之前,建议消除Warrning;
Infos,可以看一看是报的哪些信息,也会有助于代码逻辑检查。
Warrning,Infos能够在功能仿真之前协助检查逻辑问题,如位宽不对、状态跳转等问题。
一、Warrnings
1、WARNING:Xst:647 - Input <xx> is never used.
这个问题是说该输入管脚未被使用。造成该问题的原因:
原因一:该输入管脚未被使用。
原因二:或者,由于相关信号的“位宽不对”等原因,导致该管脚未被使用。仔细检查相关信号,如相关信号的位宽等。
2、WARNING:Xst:2211 - "../../../rtl/XX.v" line 123: Instantiating black box module <ARAM_XX_D4K>.
如果是因为添加RAM,导致综合产生一些WARNING,可以在RAM IP最后添下面几行注释,如下图所示
// synthesis translate_on
// XST black box declaration
// box_type "black_box"
// synthesis attribute box_type of ARAM_I32O32_D1K is "black_box"
注:上面红色字体 “ARAM_I32O32_D1K” 需要替换为例化的RAM IP名。
3、WARNING:Xst:2677 - Node<XX> of sequential type is unconnected in block <*>.
警告说明:因为某些条件使得这些节点与模块的连接无效(即未连接)
举例说明:比如XX信号虽然使用always语句块定义了,但使用该XX信号的地方,由于条件没有满足、导致该XX信号没有被使用,即没有满足XX信号的使用条件,从而导致该警告提示。可以检查使用该信号的地方,检查XX信号的使用条件的使用条件是否存在错误或遗漏的地方。
4、WARNING:Xst:1336 - (*) More than 100% of Device resources are used
警告说明:该芯片资源用超了。
举例说明:比如,仅对一个小模块进行综合,该模块并非一个完整工程的顶层,仅是工程中的一个小的子模块。该子模块逻辑并不复杂,但该子模块的输入输出信号比较多。而在综合的时候,仅在工程中添加了该子模块,没有添加其他模块。综合报这个问题的话,可能就是综合器将该子模块的输入输出与芯片的管脚进行比较,超过了芯片的管脚数量,从而引起该警告提示。
5、WARNING:Xst:1898 - Due to constant pushing, FF/Latch <XX/xx/signal> is unconnected in block <module TOP>.
警告说明:signal信号,在module TOP未连接
举例说明:XX/xx模块的signal信号输出到顶层TOP,在TOP层与XX[6]信号做“与”操作、之后在TOP层输出;但由于失误,XX信号位宽仅有3位,不存在XX[6],从而导致XX/xx模块的signal信号输出到顶层TOP,综合器综合时未进行连接,导致综合警告Xst:1898。
6、WARNING:Xst:1710 - FF/Latch <XX> (without init value) has a constant value of 0 in block <TOP>. This FF/Latch will be trimmed during the optimization process.
警告说明:XX 信号值恒为0。
举例说明:检查XX信号及相关信号,相关信号值出现恒0情况。可能的原因是,该信号或相关信号的赋值条件没有得到满足,从而使该XX值出现恒0现象。建议,检查该XX信号及相关信号的赋值条件,比如定义的状态机state的位宽与p_IDLE/p_NEXT等状态位宽是否一致,导致状态机不能跳转下一状态(下一状态有对XX信号的赋值语句)。
比如下面的代码,如果state的位宽是1,但p_IDLE/p_NEXT的位宽是4,状态机由于位宽不对、不能跳转到p_NEXT状态,则XX就会出现恒0现象,导致出现该警告WARNING:Xst:1710。
always @ (posedge clk)begin
if(rst)begin
XX <= 1'b0 ;
end else begin
case(state)
p_IDLE:begin
.............
end
p_NEXT:begin
XX <= 1'b1 ;
end
....................
endcase
end
end
7、WARNING:Xst:1780 - Signal <XX> is never used or assigned. This unconnected signal will be trimmed during the optimization process.
8、WARNING:Xst:646 - Signal <XXX<9>> is assigned but never used. This unconnected signal will be trimmed during the optimization process.
二、Infos
2.1 Xst:2261 - The FF/Latch <XX_xx_0> in unit <XX> is equivalent to the following FF/Latch,which will be removed :<X_x>
说明:
(1)模块XX里的信号XX_xx数据位宽与相关信号X_x位宽不一致,导致该消息提示。检查该信号以及相关信号的数据位宽,修改一致后,即可消除该INFOS。
(2)如果定义了一个信号XX_xx[9:0],又定义了信号X_x[31:0],而信号XX_xx[9:0]==X_x[9:0],在这种情况下,ISE综合会提示INFOS Xst:2261
三、ERROR
3.1、 ERROR:Xst:872 - "XX" line 99 : Unsupported target
错误分析:
引发该错误的地方是在工程顶层模块例化里,相关代码如下:
正确代码如下: