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

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

3天内不再提示

基本的时序约束和STA操作流程

麻辣软硬件 来源:博客园 作者:没落骑士 2021-08-10 09:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、前言

无论是FPGA应用开发还是数字IC设计,时序约束和静态时序分析(STA)都是十分重要的设计环节。在FPGA设计中,可以在综合后和实现后进行STA来查看设计是否能满足时序上的要求。本文阐述基本的时序约束和STA操作流程。内容主要来源于《Vivado从此开始》这本书,我只是知识的搬运工。

二、时序约束与XDC脚本

时序约束的目的就是告诉工具当前的时序状态,以让工具尽量优化时序并给出详细的分析报告。一般在行为仿真后、综合前即创建基本的时序约束。Vivado使用SDC基础上的XDC脚本以文本形式约束。以下讨论如何进行最基本时序约束相关脚本。

1 时序约束首要任务是创建主时钟,主时钟即为时钟引脚进入时钟信号或高速收发器生成时钟。[create_clock]

create_clock -name clk_name -period N -waveform {pos_time neg_time} [get_ports port_name] (划线部分可选)

创建两个异步的主时钟:

create_clock -name clk_a -period 10 [get_ports clk_a]

create_clock -name clk_b -period 15 [get_ports clk_b]

set_clock_groups -asynchronous -group clk_a -group clk_b

当两个主时钟是异步关系,它们生成时钟同样是异步关系:

set_clock_groups -asynchronous -group [get_clocks clk_a -include_generated_clocks]

-group [get_clocks clk_b -include_generated_clocks]

差分时钟仅约束P端口

create_clock -name clk -period 10 [get_ports clk_p]

高速收发器生成时钟作为主时钟:

create_clock -name gt0_txclk -period 8 [get_pins GT0/。。。/TXOUTCLK]

有一种特殊情况无需与具体引脚绑定,即创建虚拟时钟。该约束用于设定输入/输出延迟。需要创建虚拟时钟的场景是输入FPGA的数据由FPGA内部产生时钟采样,如串口通信

create_clock -name clk_v -period 5

2 创建主时钟后,需要约束生成时钟:[create_generated_clock]

生成时钟分为两种。由PLL MMCM等专用时钟单元生成产生的时钟信号,Vivado会自动产生相关约束。还有一种是自定义生成时钟,一般为逻辑分频得到。

时钟源是时钟端口:

create_generated_clock -name clk_div -source [get_ports clk] -divide_by 2 [get_pins rega/Q] 意思是在rega单元的Q引脚上的时钟信号clk_div是由clk经过2分频得到的生成时钟。

时钟源是引脚:

create_generated_clock -name clk_div -source [get_pins rega/C] -divide_by 2 [get_pins rega/Q]

除了使用-divide_by -multiply_by表示主时钟和生成时钟的频率关系,也可以用 -edges实现更精确的表达:

create_generated_clock -name clk_div -source [get_pins rega/C] -edges {1 3 5} [get_pins rega/Q]

相移关系使用-edge_shift命令描述。

该约束命令还常用于重命名时钟信号:

create_generated_clock -name clk_rename [get_pins clk_gen/。。。/CLKOUT0]

3 创建时钟组:[set_clock_groups]

a. 异步时钟情况:

set_clock_groups -asynchronous -group clk_a -group clk_b clk_a和clk_b是异步时钟。

b. 物理互斥情况:

create_clock -name clk_a -period 10 [get_ports clk]

create_clock -name clk_b -period 8 [get_ports clk] -add

create_clock -name clk_c -period 5 [get_ports clk] -add

set_clock_groups -physically_exclusive -group clk_a -group clk_b -group clk_c

该种情况仅是为了观察clk引脚时钟信号周期依次为10ns 8ns和5ns时,时序是否收敛。因此这三个时钟物理上不同时存在。

c. 逻辑互斥情况:

set_clock_groups -logically_exclusive

-group [get_clocks -of [get_pins clk_core/。。。/CLKOUT0]] -group [get_clocks -of [get_pins clk_core/。。。/CLKOUT1]]

clkout0和clkout1送入到BUFGMUX中,后续根据sel信号确定选择哪一个作为工作时钟。此时clkout0和clkout1同时存在电路中,但仅有一个会作为后续电路工作时钟,因此逻辑上互斥。

特殊用法:当asynchronous 的group只有一个,说明改组内时钟是同步的,但与其他所以时钟异步。

4 设置伪路径:[set_false_path]

设置伪路径后,不再对特殊路径进行时序分析。特殊路径如测试逻辑、添加同步电路后的跨时钟域路径等。在两个时钟域之间应该相互设置为set_false:

set_false_path -from [get_clocks clk_a] -to [get_clocks clk_b]

set_false_path -from [get_clocks clk_b] -to [get_clocks clk_a]

5 常用时钟相关命令:

report_clocks:查看创建的所有时钟

report_property [get_clocks 《clk_name》]:查看时钟clk_name的属性

report_clock_network:查看时钟的生成关系网络

report_clock_interaction:查看时钟交互关系

其中最后一项非常重要,经常被用于查看异步时钟域之间的路径是否安全。若存在不安全路径,需要添加同步、握手或FIFO后,设置为异步时钟组或false_path。

键入该命令后,会生成时钟交互矩阵。对角线是每个时钟内部路径,其他非黑色部分即为存在对应两个时钟的跨时钟域路径。红色部分是非安全路径,若不处理会产生亚稳态。

三、查看时序报告(STA)

本节以一个有很多时序问题的工程为例进行讲解。在综合后即可打开时序概要查看时序报告。

打开后有如下界面:

博客园

其中Design Timing Summary是时序概况,包括最大延迟分析、最小延迟分析以及脉冲宽度三个部分。其中WNS或WHS为负数,说明当前设计无法满足建立时间或保持时间要求,也就是说数据无法被稳定采样。

Clock Summary内的信息与使用report_clocks TCL脚本调出来的信息相似,包含了全部已创建的时钟信号。Check Timing部分则包含了未被约束的部分,我们可以根据该部分信息进一步添加必要的约束。Intra-Clock Paths和Inter-Clock Paths则分别描述了同步和异步电路时序路径的裕量参数。

点击WNS或WHS后的数值可以直接找到时序裕量最差的路径:

博客园

双击路径信息所在行任意位置,界面会跳转到该路径的详细信息界面:

博客园

四类时序路径中,除了FPGA输入端口到输出端口这一特殊情况外,其他时序路径均由源时钟路径、数据路径和目的时钟路径三部分构成。上表中各项的具体解释见官方文档UG908.

本文说明了时序约束和STA的关系,基本时序约束情形及相应的XDC脚本。之后简单介绍了如何在VIVADO中查看时序报告来分析时序问题。后续会以网络通信中常见的RGMII接口设计实例阐述I/O延迟约束部分。

编辑:jq

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

    关注

    1655

    文章

    22283

    浏览量

    630122
  • STA
    STA
    +关注

    关注

    0

    文章

    52

    浏览量

    19526
  • Vivado
    +关注

    关注

    19

    文章

    846

    浏览量

    70459

原文标题:VIVADO时序约束及STA基础

文章出处:【微信号:VOSDeveloper,微信公众号:麻辣软硬件】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    电能质量在线监测装置历史波形回放的操作流程是怎样的

    电能质量在线监测装置的历史波形回放操作需结合设备类型、存储方式及访问权限,通常分为本地操作和远程访问两类流程。以下是基于主流设备特性的详细步骤说明,涵盖数据检索、波形查看、分析及导出全流程
    的头像 发表于 11-05 11:32 482次阅读

    移植E203到Genesys2开发板时遇到时序问题的常见原因

    -clk_out2 to clk_out1的setup违例,看block design发现违例太大和时序约束无关,其实是axi_interconnect一侧的端口时钟需要保持一致。这里e203核时钟16M,而
    发表于 10-29 07:04

    时序约束问题的解决办法

    Time 是否满足约束。 我们要留意的是 WNS 和 WHS 两个数值,如果这两个数值为红色,就说明时序不满足约束。下面将解释怎么解决这个问题。 1. Setup Time 违例 Setup
    发表于 10-24 09:55

    关于综合保持时间约束不满足的问题

    1、将 nuclei-config.xdc 和 nuclei-master.xdc 加入到项目工程中,综合得到时序约束报告如下: 保持时间约束不满足,分析原因,发现所有不满足均出现在
    发表于 10-24 07:42

    技术资讯 I Allegro 设计中的走线约束设计

    本文要点在进行时序等长布线操作的时候,在布线操作的时候不管你是走蛇形线还是走折线,约束管理器会自动帮你计算长度、标偏差,通过精确控制走线长度,来实现信号的
    的头像 发表于 09-05 15:19 890次阅读
    技术资讯 I Allegro 设计中的走线<b class='flag-5'>约束</b>设计

    PDL电台设置更改操作流程

    电子发烧友网站提供《PDL电台设置更改操作流程.pdf》资料免费下载
    发表于 06-04 16:46 0次下载

    西门子再收购EDA公司 西门子宣布收购Excellicon公司 时序约束工具开发商

    开发、验证及管理时序约束的软件纳入西门子EDA的产品组合。此次收购将帮助西门子提供实施和验证流程领域的创新方法, 使系统级芯片  (SoC) 设计人员能够优化功耗、性能和面积 (PPA),加快设计速度,增强功能
    的头像 发表于 05-20 19:04 1269次阅读
    西门子再收购EDA公司  西门子宣布收购Excellicon公司  <b class='flag-5'>时序</b><b class='flag-5'>约束</b>工具开发商

    PCB Layout 约束管理,助力优化设计

    本文重点PCBlayout约束管理在设计中的重要性Layout约束有助避免一些设计问题设计中可以使用的不同约束在PCB设计规则和约束管理方面,许多设计师试图采用“一刀切”的方法,认为同
    的头像 发表于 05-16 13:02 812次阅读
    PCB Layout <b class='flag-5'>约束</b>管理,助力优化设计

    DZ-STA401升降同步热分析仪:一键自动升降,一机多用

    的测试需求。一、一键升降,操作简化传统的同步热分析仪因为炉体较高,操作比较费劲,而且容易操作操作误差。DZ-STA401炉体可自动升降,能够轻松完成样品放置和测试,大
    的头像 发表于 05-12 10:20 370次阅读
    DZ-<b class='flag-5'>STA</b>401升降同步热分析仪:一键自动升降,一机多用

    DP主站转485操作流程

     DP主站转485操作流程
    的头像 发表于 04-27 09:11 747次阅读
    DP主站转485<b class='flag-5'>操作</b><b class='flag-5'>流程</b>

    FPGA时序约束之设置时钟组

    Vivado中时序分析工具默认会分析设计中所有时钟相关的时序路径,除非时序约束中设置了时钟组或false路径。使用set_clock_groups命令可以使
    的头像 发表于 04-23 09:50 963次阅读
    FPGA<b class='flag-5'>时序</b><b class='flag-5'>约束</b>之设置时钟组

    WiFi模块工作模式讲解:AP、STA、AP+STA模式

    WiFi模块作为现代无线通信的核心组件,其工作模式直接决定了设备的联网能力和应用场景。AP(AccessPoint)、STA(Station)和AP+STA(混合模式)是三种最常见的工作模式,它们
    的头像 发表于 03-27 19:33 4057次阅读
    WiFi模块工作模式讲解:AP、<b class='flag-5'>STA</b>、AP+<b class='flag-5'>STA</b>模式

    一文详解Vivado时序约束

    Vivado的时序约束是保存在xdc文件中,添加或创建设计的工程源文件后,需要创建xdc文件设置时序约束时序
    的头像 发表于 03-24 09:44 4381次阅读
    一文详解Vivado<b class='flag-5'>时序</b><b class='flag-5'>约束</b>

    集成电路设计中静态时序分析介绍

    本文介绍了集成电路设计中静态时序分析(Static Timing Analysis,STA)的基本原理、概念和作用,并分析了其优势和局限性。   静态时序分析(Static Timing
    的头像 发表于 02-19 09:46 1298次阅读

    xilinx FPGA IOB约束使用以及注意事项

    采用了IOB约束,那么就可以保证从IO到达寄存器或者从寄存器到达IO之间的走线延迟最短,同时由于IO的位置是固定的,即存在于IO附近,所以每一次编译都不会造成输入或者输出的时序发生改变。 二、为什么要使用IOB约束 考虑一个场景
    的头像 发表于 01-16 11:02 1485次阅读
    xilinx FPGA IOB<b class='flag-5'>约束</b>使用以及注意事项