set_clock_groups

一、命令参数与工具处理逻辑

核心参数定义

参数定义工具行为工具兼容性
-asynchronous完全异步时钟组,无任何相位或频率关系(如独立晶振、不同时钟树)工具完全禁用组间路径的时序分析,但需用户自行处理跨时钟域(CDC)问题 Xilinx Vivado、Intel Quartus、Gowin(等效参数-Exclusive
-logically_exclusive逻辑互斥时钟组,同一时刻仅一个有效(如MUX选择时钟)工具认为组间路径逻辑上无法同时激活,直接跳过时序分析,但保留物理路径检查 Vivado、PrimeTime、Synplify Pro
-physically_exclusive物理互斥时钟组,硬件上无法共存(如不同配置模式、电源域隔离)工具认为组间路径物理不存在,彻底忽略路径分析,包括时序和串扰 Vivado(需配合-add生成多源时钟)、PolarFire

工具差异说明

  • Gowin:仅支持 -Exclusive 参数,同时覆盖逻辑与物理互斥场景 。
  • Intel Quartus-exclusive 是 -logically_exclusive 的别名,与 -asynchronous 效果相同 。
  • PrimeTime-physically_exclusive 禁用串扰分析,-logically_exclusive 仅禁用时序分析 。

二、全场景应用与命令详解

基础异步时钟组

场景:FPGA外部输入的两个独立晶振时钟(50MHz和100MHz)。
约束

create_clock -period 20 -name clk_50m [get_ports clk_ext1]
create_clock -period 10 -name clk_100m [get_ports clk_ext2]
set_clock_groups -asynchronous  -group clk_50m  -group clk_100m

解释

  • 命令作用:禁用clk_50mclk_100m之间的所有路径分析,包括跨时钟域路径。

  • 替代方案:若使用set_false_path,需双向约束:

set_false_path -from [get_clocks clk_50m]   -to [get_clocks clk_100m]
set_false_path -from [get_clocks clk_100m] -to [get_clocks clk_50m ]
优劣对比set_clock_groups更高效,避免遗漏路径;set_false_path适合局部例外路径

多级MUX生成时钟

场景:两级MUX串联选择时钟,第一级选clk0/clk1,第二级选clk2/clk3
约束

# 第一级MUX生成时钟
create_generated_clock -name mux1_clk0  [get_pins mux1/Y]  -source clk0 -add
create_generated_clock -name mux1_clk1  [get_pins mux1/Y]  -source clk1 -add
# 第二级MUX生成时钟
create_generated_clock -name mux2_clk2  [get_pins mux2/Y]  -source clk2 -add
create_generated_clock -name mux2_clk3  [get_pins mux2/Y]  -source clk3 -add
# 设置互斥组
set_clock_groups -logically_exclusive -group {mux1_clk0 mux1_clk1} -group {mux2_clk2 mux2_clk3}
 

解释

  • 关键点:必须为每个MUX输出定义生成时钟,否则工具无法识别互斥关系 。
  • 工具行为:仅分析同一级MUX的输出时钟路径,跨级路径(如mux1_clk0mux2_clk2)自动忽略 

 动态部分重配置(Partial Reconfiguration)

场景:模块A使用clk_fast运行,模块B重配置时使用clk_slow
约束

create_clock -name clk_fast -period 5 [get_ports clk_fast]  -add
create_clock -name clk_slow -period 20 [get_ports clk_slow]  -add
set_clock_groups -physically_exclusive -group clk_fast -group clk_slow
 

解释

  • 物理互斥必要性:重配置模式下两个模块的时钟物理隔离,路径不存在 。
  • 工具行为:彻底跳过路径分析,时序报告中不显示相关路径,减少报告噪声

测试模式与功能模式时钟

场景:测试时钟TestClk与系统时钟SysClk分时复用同一端口。
约束

create_clock -name TestClk -period 50 [get_ports clk]  -add
create_clock -name SysClk -period 10 [get_ports clk]  -add
set_clock_groups -physically_exclusive -group TestClk -group SysClk
 

解释

  • 替代方案:使用set_case_analysis强制选择模式,但需额外约束且无法动态切换 。
  • 优势:简化约束流程,无需依赖外部条件配置 

生成时钟依赖关系

场景:主时钟clk_main分频生成clk_div,需约束两者为异步。
错误示范

create_clock -name clk_main -period 10 [get_ports clk_in]
create_generated_clock -name clk_div [get_pins div/Q] -source clk_main -divide_by 2
set_clock_groups -asynchronous -group clk_main  # 未包含clk_div,约束不生效!


正确约束

set_clock_groups -asynchronous -group {clk_main clk_div}  -group clk_ext

解释

  • 生成时钟需显式包含:主时钟的set_clock_groups不会自动继承到生成时钟 。
  • 工具行为:若未包含clk_div,工具仍会分析clk_mainclk_div的同步路径。

三、时钟列表设计规范与限制

 时钟列表完整性规则

  • 单组覆盖性:同一时钟不可分属多个互斥组,否则工具报错。

  • 示例错误

set_clock_groups -asynchronous -group clkA -group clkB
set_clock_groups -logically_exclusive -group clkA -group clkC  # clkA重复约束!
 

  • 解决方法:通过多组约束覆盖复杂关系:

set_clock_groups -asynchronous -group {clkA clkB} -group clkC
set_clock_groups -logically_exclusive -group clkD -group clkE
 

 组内时钟关系限制

  • 异步组内时钟同步性:同一异步组内的时钟默认同步,需避免混用不同源时钟。

# 错误:clk1与clk2异步,但被置于同一组
set_clock_groups -asynchronous -group {clk1 clk2} -group clk3
 

  • 正确设计:异步组间时钟必须跨组,组内时钟需同步:

set_clock_groups -asynchronous -group clk1 -group {clk2 clk3}  # clk2与clk3需同步
 

四、工具处理机制深度解析

1. 参数优先级与覆盖性

约束类型优先级覆盖范围典型应用
set_clock_groups全局禁用组间所有路径多时钟域交互、复杂时钟拓扑
set_false_path特定起点/终点的路径局部路径例外(如复位信号)
set_case_analysis基于逻辑条件的路径使能模式选择、测试信号固定

工具行为示例
若同时存在以下约束:

set_clock_groups -asynchronous -group clkA -group clkB
set_false_path -from clkA -to clkC

工具会优先执行set_clock_groups,忽略clkAclkB间路径,但clkAclkC的路径仍受set_false_path约束 。

2. 物理互斥与串扰分析

  • PrimeTime特殊处理
    使用-physically_exclusive时,工具跳过串扰(crosstalk)分析,而-logically_exclusive仅跳过时序分析 。
  • 示例
    set_clock_groups -physically_exclusive -group clk1 -group clk2  # 禁用时序和串扰分析
    set_clock_groups -logically_exclusive -group clk3 -group clk4  # 仅禁用时序分析

五、替代约束策略与选择建议

1. set_clock_groups vs set_false_path

维度set_clock_groupsset_false_path
约束效率一次性约束所有组间路径需手动指定起点/终点
维护成本时钟拓扑变化时仅需修改组定义路径增减需重新约束
适用场景多时钟交互、全局时钟域隔离局部路径例外(如跨模块信号)

选择建议

  • 当超过3个时钟需要两两互斥时,优先使用set_clock_groups
  • 若需保留部分跨时钟域路径(如异步FIFO),配合set_false_path局部禁用 。

2. 物理互斥与set_case_analysis对比

方法优势劣势
-physically_exclusive无需外部条件,自动全局禁用路径无法动态切换时钟组
set_case_analysis支持动态模式切换(如Test vs Normal)需额外约束信号状态,增加复杂度

典型选择

  • 静态配置场景(如烧录模式)用-physically_exclusive
  • 动态切换场景(如运行时模式选择)用set_case_analysis 。

六、总结与最佳实践

  1. 参数选择铁律

    • 异步时钟 → -asynchronous
    • MUX生成时钟 → -logically_exclusive
    • 物理隔离时钟 → -physically_exclusive
  2. 时钟列表设计

    • 确保组内时钟同步,组间时钟异步/互斥。
    • 显式包含所有生成时钟,避免遗漏。
  3. 工具兼容性

    • Gowin统一使用-Exclusive,Vivado区分逻辑/物理互斥 。
    • Intel Quartus中-exclusive等价于逻辑互斥 。
  4. 验证与调试

    • 使用report_clock_interaction检查组间路径是否禁用。
    • 配合report_cdc验证跨时钟域约束完整性 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/897636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工作记录 2017-01-06

工作记录 2017-01-06 序号 工作 相关人员 1 协助BPO进行Billing的工作。 修改CSV、EDI837的导入。 修改邮件上的问题。 更新RD服务器。 郝 修改的问题: 1、 In “Full Job Summary” (patient info.), sometime, the Visit->Facility is missed, then …

Adaptive AUTOSAR UCM模块——快速入门

Adaptive AUTOSAR中的UCM模块介绍 概述 Adaptive AUTOSAR(AUTomotive Open System ARchitecture)是一个开放的行业标准,旨在为现代汽车电子系统提供一个灵活且可扩展的软件框架。在这个框架中,更新与配置管理(Update and Configuration Management, UCM)模块扮演着至关…

解决跨域问题的6种方案

解决跨域问题(Cross-Origin Resource Sharing, CORS)是 Web 开发中常见的需求,以下是 6 种主流解决方案,涵盖前端、后端和服务器配置等不同层面: 一、CORS(跨域资源共享) 原理 通过服务器设置…

Python Selenium库入门使用,图文详细。附网页爬虫、web自动化操作等实战操作。

文章目录 前言1 创建conda环境安装Selenium库2 浏览器驱动下载(以Chrome和Edge为例)3 基础使用(以Chrome为例演示)3.1 与浏览器相关的操作3.1.1 打开/关闭浏览器3.1.2 访问指定域名的网页3.1.3 控制浏览器的窗口大小3.1.4 前进/后…

50个经典的python库

本文整理了50个可以迅速掌握的经典Python库,了解它们的用途,无论你是刚踏上编程之路,还是希望在Python的世界里更加深入,这50个库都能帮助你快速起飞。 1. Taipy Taipy是一个开源Python库,用于轻松的端到端应用程序开…

【视频】V4L2、ffmpeg、OpenCV中对YUV的定义

1、常见的YUV格式 1.1 YUV420 每像素16位 IMC1:YYYYYYYY VV-- UU– IMC3:YYYYYYYY UU-- VV– 每像素12位 I420: YYYYYYYY UU VV =>YUV420P YV12: YYYYYYYY VV UU =>YUV420P NV12: YYYYYYYY UV UV =>YUV420SP(最受欢迎格式) NV21: YYYYYYYY VU VU =>YUV420SP…

freeswitch(多台服务器级联)

亲测版本centos 7.9系统–》 freeswitch1.10.9本人freeswitch安装路径(根据自己的路径进入)/usr/local/freeswitch/etc/freeswitch使用场景: 使用服务器级联需要双方网络可以ping通,也就是类似局域网内,比如A服务器IP 192.168.1.100 B服务器 192.168.1.101,通过C设备注册…

SpringMVC 基本概念与代码示例

1. SpringMVC 简介 SpringMVC 是 Spring 框架中的一个 Web 层框架,基于 MVC(Model-View-Controller) 设计模式,提供了清晰的分层结构,适用于 Web 应用开发 SpringMVC 主要组件 DispatcherServlet(前端控…

LuaJIT 学习(1)—— LuaJIT介绍

文章目录 介绍Extensions Modulesbit.* — Bitwise operationsffi.* — FFI libraryjit.* — JIT compiler controlC API extensionsProfiler Enhanced Standard Library Functionsxpcall(f, err [,args...]) passes arguments例子: xpcall 的使用 load*() handle U…

std::ranges::views::common, std::ranges::common_view

std::ranges::views::common, std::ranges::common_view C20 引入的用于将范围适配为“通用范围”的工具,主要解决某些算法需要传统迭代器对(如 begin 和 end 类型相同)的问题。 基本概念 1. 功能 适配传统算法:将范围&#x…

4.3 数组和集合的初始及赋值

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的 版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商…

分布式光伏发电的发展现状与前景

分布式光伏发电的发展现状与前景 1、分布式光伏发电的背景2、分布式光伏发电的分类2.1、集中式光伏发电2.1.1、特点、原则2.1.2、优点2.1.3、缺点 2.2、分布式光伏发电2.2.1、特点、原则2.2.2、优点2.2.3、缺点 2.3、对比 3、分布式光伏发电的现状4、分布式光伏发电的应用场景4…

13 | 实现统一的错误返回

提示: 所有体系课见专栏:Go 项目开发极速入门实战课;欢迎加入 云原生 AI 实战 星球,12 高质量体系课、20 高质量实战项目助你在 AI 时代建立技术竞争力(聚焦于 Go、云原生、AI Infra);本节课最终…

DeepSeek结合Mermaid绘图(流程图、时序图、类图、状态图、甘特图、饼图)转载

思维速览: 本文将详细介绍如何利用DeepSeek结合Mermaid语法绘制各类专业图表,帮助你提高工作效率和文档质量。 ▍DeepSeek入门使用请看:deepseek保姆级入门教程(网页端使用 本地客户端部署 使用技巧) DeepSeek官网…

Java静态变量与PHP静态变量的对比

Java的静态变量在多线程并发的情况下是线程共有的。以下是关键点总结: 存储位置:静态变量属于类,存储在方法区(或元空间),这是所有线程共享的内存区域。因此,所有线程访问的都是同一个静态变量实…

c++20 Concepts的简写形式与requires 从句形式

c20 Concepts的简写形式与requires 从句形式 原始写法(简写形式)等效写法(requires 从句形式)关键区别说明:组合多个约束的示例:两种形式的编译结果:更复杂的约束示例:标准库风格的约…

上下分层、左右分离的驱动设计思想

之前了解了最简单的驱动程序、但是不易扩展、现在继续学习、上下分层、左右分离的驱动设计思想。 1、led_dev.c函数 上层函数,①定义一个结构体,存储函数用来接应app的函数。②定义一个入口函数,将我们接应的函数告诉内核,给这个…

人工智能在医疗领域的应用:技术革新与未来展望

人工智能(AI)技术正在重塑医疗行业的面貌。从辅助诊断到药物研发,从健康管理到手术机器人,AI的广泛应用不仅提升了医疗效率,还为精准医疗和个性化治疗提供了新可能。根据2025年多份研究报告及政策文件,全球…

《历史代码分析》5、动态控制列表的列

​​ 本系列《历史代码分析》为工作中遇到具有代表性的代码。今天我们讲一下,动态展示列表的列,因为找不到代码了,所有本篇用图展示。 举个栗子 ​​ 我们希望能够动态的控制列表的列,例如,英语老师只想知道自己学…

Windows HD Video Converter Factory PRO-v27.9.0-

Windows HD Video Converter Factory PRO 链接:https://pan.xunlei.com/s/VOL9TaiuS7rXbu-1kEDndoceA1?pwd7qch# 支持300多种视频格式转换,在保留视频质量的同时,压缩率可达80%,转换速度可达50X速率! 支持画面剪切、片…