手动约束

一、约束PLL的位置:

可以发现我们现在的PLL是设置在左下角,我们要将它调整到右上角去。在这里插入图片描述
首先,打开Assignment Editor,在To列中new一个节点在这里插入图片描述
添加后,Assignment Name选择 Location在这里插入图片描述点进Value列中,Element选择 OLL,Location选择 PLL_2。
在这里插入图片描述
Ctrl+ s保存,重新布局布线后,右上角才变成了绿色(综合分析后,尽管会自动弹出Chip Planner,但图中并未任何显示)。在这里插入图片描述
且已经将线布到PLL_2上来了。在这里插入图片描述此时,时序也必定会发生变化!PLL的变化会对时序造成冲击。在这里插入图片描述
对比前文的结果(最开始运行成功无违逆的那次,0,0.025ns),可以发现时序还变好了!

二、寄存器的约束:

将某个寄存器(例如:cnt_base)约束到某个LAB里面去。
在这里插入图片描述
在这里插入图片描述
前两步和之前的PLL约束差不多。但在Value列中,其不同就体现出来了!
Location可以选择LAB,也可以选择Register cell。在这里插入图片描述
查找为空,所以我们以上有步骤出错了!在这里插入图片描述
我们暂时不用Register Cell,改为LAB。在这里插入图片描述
看到左下角的颜色出来,成功了,已经约束进去了!在这里插入图片描述
但经仔细观察发现,它周围并没有布线!而且搜索 cnt_base[0]时,依旧为空。我们猜想那个寄存器很可能是作为复用的被优化掉了!在这里插入图片描述
我们再试着将cnt_base[0] 改为 cnt_base1[0]。在这里插入图片描述
发现红点!在这里插入图片描述
在Resource Property Editor中,可以看出:寄存器已经被用上了!
在这里插入图片描述
我们可以再来看看cnt_base1的Timing,看它与谁有关联。在这里插入图片描述
出现一例违逆。在这里插入图片描述
可以发现,从左下角处出去又回来,太远了!在这里插入图片描述

做个小探究实验: 如果我们把次差的路径(0.418ns)中的两个寄存器全都约束到一个LAB里边,我们会发现Slack会变得很大!???(保持疑问)
但请注意:我们在工程中是绝对不可能这样去调试的,因为万一换了一个芯片,这些约束又该怎么加?就算是一样的约束,综合器会给你同样的布线吗?在这里插入图片描述在这里插入图片描述
就整体性能而言,是变差的!在这里插入图片描述
结果,显示出的路径部分违逆了,很有可能两级寄存器间的组合逻辑,在外边(即:在其他的LAB中)。在这里插入图片描述
果不其然。。在这里插入图片描述在这里插入图片描述

补充:这种约束到同一个LAB的方法适用于:不加任何逻辑的“打拍操作”的寄存器。

三、取消约束:

直接在Assignment Editor中,右击想要删除的行,选中delete即可。

四、LogicLock Region(时序分析、约束里最不常用的)

先点击选中Create LogicLock Region,再划出一块区域(可以自命名)
在这里插入图片描述然后返回到工程面板Hierachy,将某个模块约束在里边在这里插入图片描述在这里插入图片描述
重新综合分析、布局布线,可以得到如下结果在这里插入图片描述
结果的时序约束效果也还可以在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值