by adam taylor
在约束系列的最后,我们讲讲关联布局宏(rpm)的约束。rpm允许你在fpga的布局中将dsp、ff、lut和rams等资源组合在一起。与pblocks不同,rpm并不把设计元素的位置限制到特定区域去(除非你想那样做)。相反,当这些设计元素被放置后,rpm将它们组合到一起。近距离放置这些资源允许你改进资源利用率,并且能微调互连长度来保证更好的时序。
为了使用rpm,我们需要使用三种不同的约束类型,可以在hdl文件中来定义他们:
u_set——允许定义元件rpm集,忽略层次结构
hu_set——允许定义元件rpm集,包含层次结构
rloc——允许u_set和hu_set相对位置的约束
rloc约束的定义使用到了表达式 rloc=xmym,此处x和y指的是fpga阵列中的坐标。定义一个rloc时,我们既可以使用相对坐标,也可以使用绝对坐标,取决于rpm_grid属性值,这个值决定了该定义是绝对的还是相对的。
由于这些约束是用hdl定义的,为了正确地定义布线,在约束被添加到hdl文件中之前,很有必要对布局走线迭代进行初始化。
和很多东西一样,这些概念最好能用例子来阐述。下面这个例子中包含两个切换的寄存器。其中一个寄存器长度为2位,用来同步输入。第二个切换寄存器长16位。它使输出信号延时16个时钟。为了展示上面的约束,我将把一个绝对rpm应用到长为2位的同步器中,然后把相对rpm应用到16位寄存器中。
第一件要做的事情就是利用rtl声明u_set或者hu_set约束组。由于这是个推断的信号,因此我们需要定义x_set而不是signal和lable参数。
当我们打开implementation并实现了上面这些的时候,我们可以在物理约束窗口下看到rpm。
在u_set和hu_set约束定义好了后,下一步就是定义rpm的位置了。然而,在干这件事情之前,最好知道rpm中元件的数量。通过点击目标rmp,选择rpm属性,我们可以获取rmp中元件的数量。
接下来,我们将要在规划好的地方不相干地放置输入寄存器。利用下面显示的rpm_grid属性,我们完成这一步:
这个操作将会在由一个片分开的片上放置两个ip_sync信号寄存器。尽管对于日常设计来说这并不是一个好的尝试,但是它展示了此处我们所讨论的rpm原则。
约束将会导致切换寄存器中的寄存器彼此相关地放置。为了做到这一点,我们不使用网格约束,取而代之,我们按照下面这种方式使它们彼此靠近地放置。
对于每个寄存器的16位元素,当我们在设备视图中查看布局的时候,我们将得到上述约束增量与原点的距离图作为结果。
中间列的垂直触发器代表切换寄存器,而旁边两列上的两个寄存器是ip_sync寄存器,被定义跳过一个slice。
从这里你可以下载源码例程。
电瓶修复技术——免费公开课开讲啦(铅酸电池不平衡连载1)
变压器有载自动调压控制系统详解
价格几乎一样!荣耀9、vivo x9s、努比亚Z17哪个比较好?荣耀9、vivo x9s、努比亚Z17区别对比评测
交流固态继电器的特点
嵌入式C语言经典的代码实例
Adam Taylor玩转MicroZed系列第76部分:关联布局宏的约束
ThinkPad BIOS设置手册
多家医院引入微信人脸识别技术 助力轻松挂号
中国联通与亨通集团宣布正式开通了京雄量子加密通信干线
2019年中国联通将进行10G PON设备的采集和规模部署
X5045看门狗电路及其应用 (含源代码程序)
智慧停车的巨大潜力,它可能蕴含着一个千亿市场
机遇号:太阳系上最努力的探测工作者去世了
行业 | 欧航局发布无人机通用准则,明年6月起在正式启用
汽车的噪音源分析,以及如何抑制主噪音源
泛华贷款服务累计总额超500亿元,15万小微企业受益
非 CMOS 兼容的 SiC 功率器件在体硅晶圆厂中的制造
来自西安交大课件!《光电式传感器》
物联网设备面临的风险要比表面上看起来大得多
基于MC68HC90JL8单片机和TC35i模块实现剩余电流动作保护器监测设计