在进行布局约束前,通常会对现有设计进行设计实现(implementation)编译。在完成第一次设计实现编译后,工程设计通常会不断更新迭代,此时对于设计中一些固定不变的逻辑,设计者希望它们的编译结果能够保持稳定不变,使用增量式编译是一种选择,而使用布局约束是另一种更灵活的选择。此时的布局约束,通常不会针对用户逻辑部分,而是针对一些相对固定的片内存储器或乘法器,基于第一次编译的结果进行固定布局约束的设计重用,保证后续每次新的编译不再改变其布局位置,从而达到获得相对稳定的编译结果的目的。
这类基于设计重用的布局约束,简单易用,可以减少一定的编译时间,也无需设计者对底层器件结构非常了解。但也有其局限性,不适用于较大的设计变更,也不适合于固定太多的设计逻辑。因为这类设计重用,相当于为前期设计锁定了资源,使其占据了先发优势,而对于随后的设计变更,则因为无法分配到较优的资源,可能引起时序违规。因此,在实际工程应用中,此类固定布局约束需要谨慎使用。
点击openimplemented design,进入implemented页面。
implemented页面下,如图1所示,点击菜单layout->floorplanning。
图1 floorplanning菜单
接着,如图2所示,点击菜单edit->find。
图2 find菜单
如图3所示,在弹出的find对话框中,设置find为cells,properties为primitive_typeis bmem。即查找设计中已经布局的所有block memory(fpga片内块ram)。
图3 find对话框
此时,如图4所示,在findresults列表中,出现了所有搜索到的设计中使用了bmem的cell。
图4 findresults列表
如图5所示,选中所有搜索到的ramb36e1,右键单击,弹出菜单中点击fixcells,将所有已布局的bmem的位置固定,使其在下一次编译时不被移动。
图5 fixcells菜单
如图6所示,可以选择findresults中的任意一个cell,查看其cell properties,其status项都已被修改为了fixed。
图6 查看bmem属性
如图7所示,可以直接点击保存按钮,覆盖到当前的xdc文件中。
图7 saveconstraints按钮
如图8所示,也可以点击菜单file->constraints->saveas创建新方案存储约束脚本。
图8 saveconstraints as菜单
如图9所示,新的约束设置将会另存到新创建的约束方案constrs_2中。
图9 saveconstraints as对话框
最后,如图10所示,在source面板中可以看到,新创建的约束方案constrs_2被高亮为active状态,同时打开其下的约束文件at7.xdc,set_property bel或set_property loc脚本即刚添加的布局约束。重新编译后,约束将会生效。
图10 约束脚本文件
realme X50 5G手机可在30分钟内充满电至70%
星际客机飞船将完成向国际空间站的再次无人试飞
浅析中国联通固网宽带的经营策略
瑞德丰完成了新一轮大规模专项产业基金导入
GTX显卡的光追游戏体验怎么样
FPGA物理约束之布局约束
M3352核心板及评估底板及产品设计框图
如何为您的超级电容器快速充电
aigo爱国者最新推出新国标2A1C PD魔方插座
旋进旋涡气体流量计的原理及技术特点
470亿美金!高通收购NXP尘埃落定
阿里菜鸟发布无人物流车G Plus
OpenAI发布“显微镜”,可视化神经网络内部结构
为物联网系统建立更好的基准
什么是物联网卡,和大家说说物联网卡的几类套路
区块链发展过程中的两个典型一个基础
浅谈集驰电子军队战备物资装备管理系统
探访三亚FE现场,揭秘文图瑞车队精彩逆变
Imagination、Microchip和Digilent携手为全球大专院校提供先进的IoT课程
魅族首次出征MWC 携36W快充黑科技大招来袭!