0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA时序约束之设置时钟组

FPGA设计论坛 来源:FPGA设计论坛 2025-04-23 09:50 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、背景

Vivado中时序分析工具默认会分析设计中所有时钟相关的时序路径,除非时序约束中设置了时钟组或false路径。使用set_clock_groups命令可以使时序分析工具不分析时钟组中时钟的时序路径,使用set_false_path约束则会双向忽略时钟间的时序路径

使用-group参数可以将一个时钟设置到多个时钟组中,如果时钟组中没有时钟,则时钟组为空组。只有至少两个组都是非空组,为有效组时set_clock_groups约束才有效。如果只有一个组有效,其他组是空的,流程将会报错。

二、时钟间关系

2.1 时钟关系分类

两个时钟的关系可以是同步时钟,异步时钟,非扩展时钟。

同步时钟: 两个时钟的相位关系是可预知的,常见的是两个时钟来源于相同的根时钟或者共同的周期,如生成时钟和主时钟。

异步时钟:当两个是时钟的相位关系不可预知时,则为异步时钟,例如来源两个晶振的时钟,通过不同的输入端口进入到FPGA内部,无法知道两者的相位关系。

非扩展时钟:当两个时钟在1000个周期内仍无无法找到共同的边沿,在这种情况下,最差的setup关系在超过1000个周期上,但是时序分析工具将无法确认这是最差的情况。典型的例子是两个奇数倍分频的时钟,如clk0和clk1都是由MMCMs产生的生成时钟,周期分别为5.125ns和6.666ns。它们的上升沿在1000个周期内不存在重合。时序分析工具有一个0.01ns的setup路径裕量,尽管两个时钟有已知的相位关系,但它们的波形使得无法进行正确的时序分析。

异步时钟中,slack值可以按常规方法计算,但计算出的值不一定正确。因此,非扩展时钟通常作为异步时钟。

2.2 时钟关系查看

时钟Vivado中Report Clock Interaction可以查看时钟间的关系

497cf410-1e66-11f0-9310-92fbcf53809c.png

下图颜色方块中,横坐标表示目的时钟,纵坐标表示源时钟,黑色No path表示不存在时序路径,蓝色User ignored Paths为用户设置了不分析的约束,红色Timed(Unsafe)表示异步时钟或非扩展的时钟,颜色块下方的列表也显示了时序的详细信息。

49a4fc3a-1e66-11f0-9310-92fbcf53809c.png

三、异步时钟组

3.1 优先级

异步时钟和非扩展时钟是没法正确地进行时序分析, 在它们之间的时序路径在分析时应该使用set_clock_groups进行忽略。相比于其他时序例外的命令,set_clock_groups的优先级最高,如果需要对异步时钟进行分析,则不能对该时钟使用set_clock_groups命令。

3.2 使用格式

在Timing Constraints窗口中,Clocks列下选择Set Clock Groups

49d40412-1e66-11f0-9310-92fbcf53809c.png

进入Set Clock Groups界面

49f7c640-1e66-11f0-9310-92fbcf53809c.png

Group name:设置时钟组的名称

Group 1: 添加属于Group 1中的时钟,点击最右侧的“+”可以设置多个组

The specified clocks are: 设置时钟组里的时钟与其他时钟的关系,可为asynchronous,logically exclusive,physically exclusive。

-asynchronous:约束为异步时钟组

-logically_exclusive:约束为逻辑互斥的时钟组

-physically_exclusive:约束为物理线路互斥的时钟组,设计中不能同时存在,最终表现的效果和-logically_exclusive是相同的。

约束命令示例:

set_clock_groups -name clk_group -asynchronous -group[get_clocks{create_clk1 gen_clk_2}]

3.3 asynchronous和exclusive

参数asynchronous表示创建异步时钟组,使用场景如数据在不同速率的时钟间通过FIFO进行传输时,使用异步时钟组隔离时序关系。

参数exclusive表示时钟组里的时钟为互斥关系,例如,同一个节点中存在多个时钟,当同一时间内只能一个时钟生效,常用在时钟多路复用上。

3.4 结果示例

以设计中存在4个时钟clk1,clk2,clk3,clk4为例,时钟之间均存在可分析的时序路径。对时钟进行不同的时钟组约束,约束后的分析结果如下,Y表示进行时序分析,N表示不进行时序分析,参数使用asynchronous。

a)场景1:

set_clock_groups -name clk_group -asynchronous -group[get_clocksclk1]

4a2f3b66-1e66-11f0-9310-92fbcf53809c.png

b)场景2

set_clock_groups -name clk_group -asynchronous -group[get_clocks{clk1 clk2}]

时钟组内部的时钟间进行时序分析,和外部的时钟不会进行时序分析

4a699356-1e66-11f0-9310-92fbcf53809c.png

c)场景3

set_clock_groups -name clk_group -asynchronous -group[get_clocksclk1] -group[get_clocksclk2]

设置多个groups时,groups之间的clk不会进行时序分析

4b259af6-1e66-11f0-9310-92fbcf53809c.png

d)场景4

set_clock_groups -name clk_group -asynchronous -group[get_clocks{clk1 clk2}] -group[get_clocks{clk3 clk4}]

设置多个group时,group内部的时钟间会进行时序分析,group间不会进行时序分析

4b44534c-1e66-11f0-9310-92fbcf53809c.png

总结:set_clock_group中group内部的时钟只能组内间进行分析,不能跨组或与非约束中的时钟进行时序分析

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 命令
    +关注

    关注

    5

    文章

    746

    浏览量

    23447
  • 时序约束
    +关注

    关注

    1

    文章

    118

    浏览量

    13894
  • Vivado
    +关注

    关注

    19

    文章

    846

    浏览量

    70475

原文标题:FPGA时序约束之设置时钟组set_clock_groups

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FPGA的IO口时序约束分析

      在高速系统中FPGA时序约束不止包括内部时钟约束,还应包括完整的IO时序
    发表于 09-27 09:56 2326次阅读

    FPGA时序约束的基础知识

    FPGA开发过程中,离不开时序约束,那么时序约束是什么?简单点说,FPGA芯片中的逻辑电路,从输
    发表于 06-06 17:53 1892次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>时序</b><b class='flag-5'>约束</b>的基础知识

    FPGA时钟约束详解 Vivado添加时序约束方法

    FPGA设计中,时序约束设置对于电路性能和可靠性都至关重要。在上一篇的文章中,已经详细介绍了FPGA
    发表于 06-06 18:27 1.3w次阅读
    <b class='flag-5'>FPGA</b>主<b class='flag-5'>时钟</b><b class='flag-5'>约束</b>详解 Vivado添加<b class='flag-5'>时序</b><b class='flag-5'>约束</b>方法

    FPGA时序约束衍生时钟约束时钟分组约束

    FPGA设计中,时序约束对于电路性能和可靠性非常重要。在上一篇的文章中,已经详细介绍了FPGA时序约束
    发表于 06-12 17:29 4132次阅读

    FPGA时序约束伪路径和多周期路径

    前面几篇FPGA时序约束进阶篇,介绍了常用主时钟约束、衍生时钟
    发表于 06-12 17:33 3000次阅读

    FPGA时序约束建立时间和保持时间

    FPGA时序约束是设计的关键点之一,准确的时钟约束有利于代码功能的完整呈现。进行时序
    发表于 08-14 17:49 2173次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>时序</b><b class='flag-5'>约束</b><b class='flag-5'>之</b>建立时间和保持时间

    Xilinx FPGA编程技巧常用时序约束详解

    今天给大侠带来Xilinx FPGA编程技巧常用时序约束详解,话不多说,上货。 基本的约束方法为了保证成功的设计,所有路径的
    发表于 04-12 17:39

    Xilinx FPGA编程技巧常用时序约束详解

    今天给大侠带来Xilinx FPGA编程技巧常用时序约束详解,话不多说,上货。 基本的约束方法 为了保证成功的设计,所有路径的
    发表于 05-06 15:51

    FPGA实战演练逻辑篇56:VGA驱动接口时序设计3时钟约束

    VGA驱动接口时序设计3时钟约束本文节选自特权同学的图书《FPGA设计实战演练(逻辑篇)》配套例程下载链接:http://pan.baid
    发表于 07-30 22:07

    时序约束时钟约束

    vivado默认计算所有时钟之间的路径,通过set_clock_groups命令可禁止在所标识的时钟之间以及一个时钟内的
    发表于 09-21 12:40

    FPGA时序约束方法

    FPGA时序约束方法很好地资料,两大主流的时序约束都讲了!
    发表于 12-14 14:21 19次下载

    FPGA中的时序约束设计

    一个好的FPGA设计一定是包含两个层面:良好的代码风格和合理的约束时序约束作为FPGA设计中不可或缺的一部分,已发挥着越来越重要的作用。毋
    发表于 11-17 07:54 2934次阅读
    <b class='flag-5'>FPGA</b>中的<b class='flag-5'>时序</b><b class='flag-5'>约束</b>设计

    FPGA设计之时序约束

    上一篇《FPGA时序约束分享01_约束四大步骤》一文中,介绍了时序约束的四大步骤。
    发表于 03-18 10:29 2114次阅读
    <b class='flag-5'>FPGA</b>设计之<b class='flag-5'>时序</b><b class='flag-5'>约束</b>

    FPGA时序约束的原理是什么?

    FPGA开发过程中,离不开时序约束,那么时序约束是什么?简单点说,FPGA芯片中的逻辑电路,从输
    发表于 06-26 14:42 1152次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>时序</b><b class='flag-5'>约束</b>的原理是什么?

    FPGA设计衍生时钟约束时钟分组约束设置

    FPGA设计中,时序约束对于电路性能和可靠性非常重要。
    发表于 06-26 14:53 6704次阅读
    <b class='flag-5'>FPGA</b>设计衍生<b class='flag-5'>时钟</b><b class='flag-5'>约束</b>和<b class='flag-5'>时钟</b>分组<b class='flag-5'>约束</b><b class='flag-5'>设置</b>