你的位置:EETOP 赛灵思(Xilinx) 社区 >> >> 全部 >> 详细内容

Adam Taylor玩转MicroZed系列第76部分:关联布局宏的约束

发布者:jackzhang 时间:2015-05-17 22:45:12

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。

    这里你可以下载源码例程。

    原文链接:
    http://forums.xilinx.com/t5/Xcell-Daily-Blog/Adam-Taylor-s-MicroZed-Chro...

    ©Copyright 2014 Xilinx Inc
    如需转载,请注明出处

    最新课程

    • 深入浅出玩儿转FPGA

      本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念

    • 从零开始大战FPGA基础篇

      本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“

    • Verilog基础及典型数字

      课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了