首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» 《Xilinx可编程逻辑器件设计与开发(基础篇)》连载44:PlanAhead进行布局规划
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
《Xilinx可编程逻辑器件设计与开发(基础篇)》连载44:PlanAhead进行布局规划
发短消息
加为好友
pengpengpang
(pengpengpang)
当前离线
UID
1023229
帖子
6106
精华
0
积分
3055
阅读权限
90
来自
中国
在线时间
156 小时
注册时间
2013-12-20
最后登录
2016-7-3
论坛元老
UID
1023229
来自
中国
1
#
打印
字体大小:
t
T
pengpengpang
发表于 2014-10-23 21:40
|
只看该作者
《Xilinx可编程逻辑器件设计与开发(基础篇)》连载44:PlanAhead进行布局规划
连载
,
开发
10.6 应用PlanAhead 进行布局规划
FloorPlanning 工具是PlanAhead 的一个组成部分,用它可以对FPGA 设计进行分析,首先找到设计中的时序问题或者拥塞的问题,然后再通过使用PloorPlanning 约束,以指导实现工具产生更优的结果。例如,使用LOC 约束可以将Pblock(Phisical Block Region)中的逻辑对象锁定在一个位置或者锁定在一个区域。
为了有效地使用FloorPlanning,必须对Xilinx 的器件结构有较深入的了解,如果不熟悉器件结构,那么通过FloorPlanning 工具生成的布局约束,非但不会提高设计性能,很多情况下还会使系统性能下降。用FloorPlanning 进行布局规划,没有一种现成的、“正确”的规划方案,而是需要经过设计者多次尝试,从而找到合理的规划方案。
1. 指定关键逻辑到Pblock 中。
此处我们继续使用10.5 节所用实例,从图10-68 时序分析结果可以看到,此设计有多处时序违例,主要是usbEngine0 和usbEngine1 模块。其实,可以用多种方式使此处时序收敛,我们这里只是介绍一种用FloorPlanning 进行时序收敛的方法。在【Netlist】窗口选择usbEngine0 模块,在其右键菜单中选择【Draw Pblock】,用鼠标左键在【Device】窗口画一个矩形框,并可以通过鼠标拖拉调整矩形框大小,使其可以容纳所有usbEngine0 所需资源。如图10-75 所示。用同样的方法创建usbEngine1 的Pblock。
图10-75 创建Pblock
2. 手动添加LOC 位置约束。
运行Ctrl+F,打开图10-76 查找对话框,按图中所示设置查找条件,单击【OK】开始查找。图10-77 为查找结果。
在图10-78 所示的【Device】窗口,单击工具栏的
(Create Site Constraint Mode)图标,进入创建位置约束模式。在图10-77 的查找结果窗口选择一个BRAM16,用鼠标拖放到【Device】窗口,找到一个BRAM 资源并释放,这样就为设计中的BRAM16 指定了一个物理位置。
图10-76 查找条件设置
图10-77 查找结果
图10-78 BRAM 位置约束
用这种方法可以指定设计中BUFG、DCM、Port、PPC、MGT 等元素的位置。这里创建的位置约束,是一个固定的约束,会被写入UCF 文件中,它与从ISE 导出的约束有所不同,ISE 导出的约束是不固定的,在【Device】用不同的颜色标识。
建立LOC 约束,除了这里介绍的方法,还可以单击
(Create BEL Constraint Mode)按钮,创建基于Slice 的位置约束。
单击
(Assign Instance Mode)按钮,创建例化元件的位置约束。
单击【Edit】→【Undo】或者
按钮,可以取消位置约束的操作。
3. 查看FloorPlan 的实现结果。
在PlanAhead 主界面,切换到【Floorplan – fp_usb_timing】视图,如图10-79 所示,单击【Design Runs】标签,可以看到impl_2 的实现结果中Timing Score 为0,说明此实现已满足到时序要求。
图10-79 【Floorplan – fp_usb_timing】视图
4. 锁定关键逻辑。
FPGA 设计中,逻辑模块的性能经常是不确定的,多次实现结果可能出现较大的差别,为了保证实现的一致性,一个方法就是锁定关键逻辑的位置,例如BRAM 和DSP 资源,这些资源的布局经常会对设计性能产生比较大的影响。我们可以先运行布局布线产生一个满足时序的实现结果,再将这个结果中的BRAM 和DSP 的位置锁定,作为约束指导下次布局布线的参考。
下面介绍锁定BRAM 和DSP 位置。
在PlanAhead 主界面,切换到【Floorplan – fp_usb_timing】视图,单击【Design Runs】标签,可以看到impl_2实现结果中Timing Score 为0,说明此实现已满足到时序要求,如图10-79 所示,双击打开此实现结果。运行【Edit】→【Find】,按照图10-80 所示设置查找条件,找到设计中所有的BRAM和DSP 资源。
查找结束后,在【Find Results】视图中任意选择一个元素,按Ctrl+A 键,选择所有BRAM 和DSP 元素,在右键菜单中选择【Fix Instances】,这样就锁定了布局布线后的BRAM 和DSP 位置。这个位置约束会被写入UCF 文件,作为下次实现的指导。
5. 保留与usbEngine 相关的位置约束,删除其余位置约束。
在【Physical Hierarchy】视图中选择usbEngine Pblocks,在右键菜单中单击【SelectPrimitives】,如图10-81 所示。
图10-80 查找
图10-81 选择usbEngine关键逻辑原语
运行【Tools】→【Clear Placement Constraints】,弹出图10-82对话框,选择将要清除的布局类型为【Instance placement】。
单击【Next】按钮,弹出图10-83所示对话框,选择将要清除的布局对象,这里选择【Unplace all except for 8923 selected instance】。
图10-82 选择布局类型
图10-83 【Clear Placement Constraints】对话框
单击【Next】按钮,弹出图10-84所示对话框,选择布局对象中哪些逻辑元素可以被清除,这里保留默认值。
图10-84 清除布局约束的实例类型
图10-85 仅保留usbEngine关键逻辑布局结果
单击【Next】按钮,在后续出现的对话框中,保留默认选项,在最后一个对话框中单击【Finish】,就会清除关键逻辑usbEngine部分的所有布局布线。
新的布局约束结果如图10-85所示。在【Device】窗口的右键菜单中选择【Fix instances】,usbEngine关键逻辑的布局约束被写入UCF文件,指导ISE布局布线。
需要注意的是,布局约束仅锁定了逻辑资源的位置,不会锁定布线,在实现结果中,布线结果仍会有差异。
收藏
分享
评分
记录学习中的点点滴滴,让每一天过的更加有意义!
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议