MicroZed开发板笔记,第72部分:多周期约束

by adam taylor
在最近的几篇博客中,我们研究了基本的时序约束。那么在设计中我们现在应该能定义时钟了,并且可以创建和声明它们的关系,还应该能在时钟和系统中声明任何缺陷。作为系统设计工程师,我们也必须将注意力集中于,当异常发生的时候,定义了的时钟组会有怎样的变化。在我们声明这些异常之前,首先我们必须理解什么是异常。在赛灵思用户指南 903, “vivado 设计套件用户指南:使用约束 ”中,时序异常的定义如下:
“当逻辑没有按照正确的时序进行时,默认会出现一个时序异常。”
仅隔一个时钟周期所捕获的的结果是常见时序异常的例子。再举个例子,将慢时钟逻辑块的数据传送到快时钟逻辑块去,(反之亦然),这里的两个时钟都是同步的,此时也会有时序异常的出现。事实上,这两个例子都是通常被称之为“多周期路径”的时序异常。
multi-cycle paths发生在从输入到输出的路径所耗费的时间超过一个时钟周期时,因而得名“多周期路径”。声明了一个多周期路径会带来更合适和限制更少的时序分析,从而允许时序引擎专注于产生更严格的路径,继而提高结果质量。
在xdc文件中,我们可以使用这样的xdc命令来声明一个多周期路径:
set_multicycle_path path_multiplier [-setup|-hold] [-start|-end] [-from ] [-to ] [-through
]
当声明了一个多周期路径时,事实上我们正通过path_mutiplier这个因数来倍乘建立和保持(或者同时两者)分析所需要的条件,比如,在上面我们列出的第一个例子中,输出每隔两个时钟周期出现,此时建立时间的path_multiplier将会是2。
多周期路径既可以应用在建立时间上,又可以应用在保持时间上,因此你可以选择在什么地方运用多周期路径。
当我们把path_multiplier用在建立时间上的时候,目的时钟被用作时序分析。同理,当我们把path_multiplier用在保持时间上时,源时钟被用作时序分析。如果想分别把源时钟和目的时钟用在时序分析上,你可以利用-start和-end这两个参数。它们不可以,尽管你可能会觉得,定义多周期路径的开始和结束。想达到上述的效果,你可以用到-from和-to这两个参数。同时,你可以使用-through这个参数去描述多周期路径所进行的路径。当我们同时给源和目的使用相同的时钟时,-end和-start这两个参数的设置将不会起到作用。
当我们声明了一个建立乘数时,通常最好用下面的等式同时去声明一个保持时间乘数:
hold cycles = set-up multiplier – 1 – hold multiplier
下面等式所定义的保持乘数是我们可以看到上述等式含义的最简单例子,其实我们一直在遵循这个等式:
保持乘数= 建立乘数 – 1 此时使用的是普通时钟
为了展示多周期路径的重要性,我已经写了一个小例程,点击这里下载。

华为openEuler商用版本操作系统发布,加速鲲鹏相关技术的应用
芯明天压电扫描台应用于红外热成像扫描
电信网络系统的雷电防护和屏蔽处理措施
手机旺季降临需求回暖,摄像头产能利用率或逐季提升
马尾物联网产业孵化中心工期缩短,春节前验收
MicroZed开发板笔记,第72部分:多周期约束
何谓电源分配网络?电源分配网络是由哪些部分组成的?
英国对重量超过250克的无人机纳入管理范围内
电池管理系统的绝缘性能检测的重要性及方法
动力电池性能对比
瑞能股份从单机设备厂商向后段自动化系统集成服务商角色的转变“奇袭”
十四五规划建议:新能源规划要点
陈德霖即将退休 接任余伟文会为香港金融科技发展带来什么呢?
iPhone 12系列多彩外观渲染图曝光,六种配色提供不同的选择
【节能学院】嘉定区南翔镇槎溪路小学新建工程电力监控系统的设计与应用
WT2605-24SS MP3蓝牙语音芯片在跑步机上的应用
润和软件HiHopeOS面向智慧城市领域的软件发行版通过OpenHarmony兼容性测评
AM4模块原理图
升降机PLC数据采集远程监控系统解决方案
智能镜子显示屏有多智能,它的优势是什么