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.pswp.cn/news/897636.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897636.shtml
英文地址,請注明出處:http://en.pswp.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速率! 支持畫面剪切、片…