2009年5月20日星期三

ISE:After add source (verilog) and set top module, no sub-modules appeared below the top module

在ISE中,我们添加了source file后,ISE软件会自动对这些source file进行分析,然后在Sources视图中显示其层次结构,即top下有哪些子模块,这些子模块下又分别有哪些更小的子模块。有时候ISE不能自动确定top module,需要我们手工设置一下。
现在遇到的问题是,在添加了source file后,在Sources视图中,top module下没有相应的子模块,即没有显示出design的相应层次结构。如果打算使用partition,也会因为无法找到相应的子模块而没法进行。
最开始怀疑是design的coding style有什么问题,但不知道具体是什么问题。在和Xilinx的AE联系后,发现ISE10.1版本在处理大的source file时有些问题,导致无法正常显示design的hierarchy。解决办法有两个:
1. 每个module放在一个文件中,然后把这些文件都添加到ISE中。在我的case里,所有module都放在一个文件里面了,导致这个文件很大(10M左右)。
2. 设置环境变量并改变其值
XILINX_DU_REDUCTION_SIZE 1000000
default值是1000000,表示1M的意思。如果文件很大,譬如10M,则可以将这个值设为15000000(至少要比文件的大小要大)。

2009年5月18日星期一

ISE: Map failed due to timing can not meet

在用ISE Implement Design的时候,在Map阶段就由于timing的问题fail了。Error信息如下:
Pack:1653 - At least one timing constraint is impossible to meet because component delays alone exceed the constraint. A physical timing constraint summary will appear in the map report. This summary will show a MINIMUM net delay for the paths. For more information about the Timing Analyzer, consult the Xilinx Timing Analyzer Reference manual. For more information on TRCE, consult the Xilinx Development System Reference Guide "TRACE" chapter.

由于在Map阶段,还没有考虑wire delay而只有cell delay,所以这个时候timing无法满足是必须要解决的。问题是fail以后,无法生成STA report,这样也就无法确定是哪条path出了问题。解决方法是:设置环境变量set XIL_TIMING_ALLOW_IMPOSSIBLE=1,让ISE在impossible的情况下仍然继续下去。这样可以生成STA report,我们就可以定位critical path并给出相应的解决方法了。