原创 Xilinx ISE6.3i 布局布线几个常见错误及解决办法

2010-10-15 18:22 2860 15 16 分类: 消费电子

Xilinx EPLD/FPGA设计工具ISE6.3i是目前国内用户用的最多的一个版本(尽管现在已出10.0、12.0版本,但这些高版本对一些常用的“老”器件已不支持,且其文本编辑器对汉字注释支持有点小问题),在我们使用过程中,发现布局布线(Place&Route)经常出现如下几个错误:

1、如果将一个时钟信号与一个非时钟信号用在同一个逻辑表达式中,布局布线通不过,会提示“全局变量分配出错”。
解决办法是定义一个中间信号变量,例如:
WE<=CCD_HS_CK or CCD_VS_CK or (not PA7);
改为: CK_Buf<=CCD_HS_CK or CCD_VS_CK;
       WE<=CK_Buf or (not PA7);
其中CK_Buf为中间信号。

2、ERROR Place:249 - Automatic Clock Placement Failed.....,即自动时钟布局失败,同时出现如下警告:
WARINNG:Place:413 - This design either uses more then 8 clock buffers or clock buffers locked into
primary/secondary sites.....,意即本工程使用8个以上时钟缓冲器。
原因分析: ISE的综合工具XST或Symplify都具有自动推断功能,在用户不进行任何约束的情况下,综合时当遇到扇出数目较大(驱动负载多-即VHDL代码引用次数多)的钟控信号(时钟信号)时,会自动地将该信号分配到全局时钟IOB上(尽管该信号可能不是从FPGA专用时钟引脚输入的)。当这种信号数量较多时,而FPGA的全局时钟资源有限(Virtex2有16个),就会导致在映射和布局布线1时出现上述错误,编译无法通过。
出现这种错误有两种情况:
(1)全局时钟资源不够,待分配的信息过多。
(2)因全局时钟要走遍FPGA内部每个地方,工程复杂时布线无法走通。
解决办法:
(1)如果是上述第(2)种情况,可以人工优化工程设计,删除不不必要的模块及资源定义(引脚与信号定义)。
(2)采用高版本的综合工具或ISE(含布局布线、XST)也有可能解决第(2)种情况。
(3)采用手工布局(Floorplanner)和布线(FPGA Editor)工具调整设计。由于FPGA逻辑密度高、内部结构复杂,用此方法必须对所用FPGA内部结构, Floorplanner与FPGA Editor工具等相当熟悉,难度较高。
(4)最有效的办法是约束设置:
方法1:在VHDL的"...Behavioral of ... is"与"begin"语句之间插入如下命令(自定义属性约束):
attribute clk_buf : string;
attribute clk_buf of xxx:signal is "ibuf";
其中"xxx"是扇出数较大的信号(变量或引脚)。上述命令会强制"xxx"不会被自动分配为全局时钟缓冲器(IBUFG)。
方法2:在用户约束文件(.ucf)中给扇出数较大的费关键时钟信号加上约束,例如:
NET "xxx" LOG="yyy"|USELOWSKEWLINES;
其中"xxx"是被约束信号,"yyy"是FPGA引脚,“USELOWSKEWLINES”意指强制分配到第二全局时钟资源。
值得注意的是,约束设置不是一次就能解决问题,可能要反复多次才能成功。

3、ERROR:1018错误
在ISE工程设计中,如果某个信号(如地址锁存AE)是从非专用时钟引脚输入的,但在设计时又是作为时钟使用的,ISE布局布线时也会自动将该信号作为全局时钟信号来布线,因其不是从全局时钟脚接入,故出现上述错误,无法布线成功。
由于这些信号频率不高、负载不重,故在实际应用中不一定非要使用全局网络,这时可在约束文件(.ucf)中加上如下约束:
NET "AE" CLOCK_DEDICATED_ROUTE=FLASE;
这样做是强制ISE不分配全局时钟网络给AE,布线就能成功了。

文章评论1条评论)

登录后参与讨论

用户1523359 2010-10-25 09:04

虽然已用到了11.5,但是还是挺有参考价值的
相关推荐阅读
用户1037795 2014-09-29 14:57
高速LVDS接口信号完整性处理实例
  一、系统介绍 EMCCD相机由图像传感器、驱动电路、FPGA(Spartan-3)、LVDS接口和电源等组成。LVDS输出接口使用2片DS92LV1021,每片实现10bit并行数据到...
用户1037795 2014-08-20 14:15
关于Xilinx FPGA JTAG下载时菊花链路中的芯片数量
  当一个系统中含有多片(2片以上)Xilinx FPGA、CPLD或PROM(FLASH)时,可采用单一JTAG口以菊花链(Daisy Chain)形式将所有芯片串联起来实现下载编程,如下图...
用户1037795 2014-08-12 07:50
NiosII程序编译时出现onchip_mem不够问题及解决方法
开发Altera Nios II软件可使用Nios II IDE或 Nios II Software Build Tools for Eclipse(即:Nios II SBT for Eclip...
用户1037795 2014-08-11 15:08
Altera QuartusII及Cyclone IV E使用经验
  1、仅C8L、IC8L、C9L使用1.0V核电压(VCCINT),其它速度的均使用1.2V核电压。 2、对于作为LVDS传输的Bank必须接2.5V的VCCIO,参考数据手册表1-20...
用户1037795 2014-08-07 14:39
Altera FPGA带NiosII内核程序的JTAG下载方法总结
  1、对于Altera FPGA,含Nios II时需要下载的文件有4种:.sof 文件,.pof 文件,.jic 文件,.elf 文件。 下载文件 ...
用户1037795 2014-08-06 10:18
Quratus II中 Nios II 硬件设计工具SOPC Builder与Qsys的区别
  1、 SOPC(System On a Programmable Chip.)即可编程片上系统,SOPC Builder是Quartus II中传统的Nios II 硬件设计工具,可以灵活...
我要评论
1
15
关闭 站长推荐上一条 /2 下一条