Communitygithub.com

xp4t/synopsys-skill

用於操作 Design Compiler 或診斷其版本專用指令、輸入、結果或啟動需求。

synopsys-skill 是什麼?

此技能旨在協助 AI Agent 操作 Synopsys Design Compiler (DC),涵蓋從 RTL 綜合到輸出網表(netlist)的完整流程。它能自動發現用戶環境中的 `dc_shell` 可執行文件、版本、選項與授權,無需預設安裝路徑或啟動腳本。技能提供標準化流程,包括 RTL 分析、約束設定、映射(mapping)、檢查與導出,並能根據版本文件驗證指令可用性。支援 Tcl 腳本和原生驅動介面,並包含錯誤恢復與驗證機制,確保綜合結果的邏輯正確性。此技能適用於 Claude Code、Cursor 等支援工具呼叫的 AI 平台,透過本地環境配置與腳本範本(如 `dc-synthesis.tcl`)實現自動化綜合任務。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/xp4t/synopsys-skill/tree/HEAD/synopsys-skills/skills/synopsys-design-compiler

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Design Compiler

目的與配置

將 RTL 進行詳細化、映射邏輯至已表徵的標準單元、最佳化時序/面積/功耗,並匯出實現網表。DC 輸出是邏輯實現結果,並非實體或簽核結果。

從用戶配置的環境或工具設定檔中解析 dc_shell。 發現實際的版本、支援的選項、授權與本地文件。 使用環境發現;不要假設特定的安裝目錄、帳戶、授權端點或啟動 shell。 將安裝庫存、日誌與文件索引保留在私有本地狀態中。

調用與指令慣例

直接從準備好的環境中使用配置的可執行檔。保留其包裝器檔名;更改調度器的調用名稱可能會選擇不同的產品。確認該版本文件中的互動式與批次慣例。本參考提供指令候選項,但不證明它們在每個版本中都存在。

dc_shell -f design.tcl

對於支援的階段腳本,flow.py 會捕獲指令、狀態、日誌、工件與檢查點,無需 shell 包裝器。 工具可能提供原生介面,其語義與類似旗標不同。

輸入與輸出

有序的 Verilog/SystemVerilog/VHDL 源碼、頂層模組、參數/定義/包含路徑、目標/連結 .db 函式庫、批准的 SDC;必要時包含 UPF 與實體參考。記錄重置語義與 DesignWare 依賴項。.lib 轉換需要可用的 Library Compiler;驗證其在本地是否可用。

映射後的 .v、.ddc、匯出的 .sdc、綜合 .svf;設計、約束、面積、時序、功耗與 QoR 報告。保留未映射/詳細化的證據以及原始 RTL/SDC 的雜湊值。教學用函式庫面積以函式庫單位為單位,而非斷言的平方微米值。

階段操作

在建構新指令前,檢索已安裝的指令語法、參數類型、預設值、限制、範例、功能需求與設計狀態前置條件。識別每個操作是查詢狀態、更新衍生狀態、修改設計還是匯出工件。

階段指令或原生程序前置條件與檢查
RTLanalyze elaborate link check_design邏輯函式庫與有序源碼必須解析每個必要參考。
約束read_sdc check_timing report_clock檢查時鐘定義、所有介面延遲、恢復/移除、例外與未約束端點。
映射compile compile_ultra使用 compile -map_effort medium/high;compile_ultra 需要其功能授權與模式前置條件。
檢查report_area report_timing report_power report_qor讀取單位、活動假設與路徑覆蓋率;在沒有適當活動的情況下,功耗僅為估計值。
匯出set_svf write_file write_sdc在轉換前啟用 SVF;同時輸出映射網表與檢查點。

Tcl、檢查與文件

current_design;get_designs *;get_cells -hierarchical;get_clocks *;report_hierarchy;check_design;check_timing。對於 Synopsys 集合,請使用 sizeof_collection,而不是 Tcl 的 llength。

對於 Tcl 介面,請以 Tcl 列表形式建構路徑/參數,使用支援的集合 API 處理集合,捕獲錯誤並檢查明確的指令返回值。語法正確的 Tcl 檔案並不保證指令的可用性。對於原生驅動,請改用其記錄的輸入格式。

python3 scripts/docs.py search '' --tool design-compiler --limit 20
# 當有多個匹配項時,選擇已安裝的版本/安裝。
# 使用以下命令檢索回傳的條目:python3 scripts/docs.py show DOCUMENT_ID

這些範例從套件目錄執行。閱讀指令發現以了解私有索引建立、有界檢索、執行階段可用性與生命週期檢查。手冊條目可能描述變數或診斷訊息,而非可呼叫的指令。缺少文件仍然是選擇不支援指令的障礙。

受控參數與依賴項

映射努力程度(中等/高)、增量編譯、PDK 允許的緩衝/單元選擇、面積與時序的權重。compile_ultra -timing_high_effort_script 與 -area_high_effort_script 是不同的策略;在合併開關前請檢索限制。重新計時、層次結構更改與時鐘閘控會改變驗證義務,並需要新的等價性證據。

較小的面積可能會增加延遲與扇出。物理感知/拓撲設定需要實體函式庫與 RC 技術;切勿僅因旗標存在就啟用它們。時鐘週期與介面預算保持固定。更改後的網表會使 Formality 與所有下游檢查點失效。

記錄原始/建議值、報告支援的假設、手冊參考、有效階段與預期指標。使用最佳化進行有界比較,並保持功能不變與硬性約束。

失敗恢復與驗證

在調整之前,診斷源碼順序、定義、未解析參考、函式庫選擇與約束。檢查推斷出的鎖存器與多重驅動器是否符合功能意圖。不支援的指令需要已安裝版本的文件。許可證或載入器故障需要環境修復。

捕獲指令/狀態、內部日誌、報告與狀態/檢查點標識。分類原因,查閱相關的已安裝文件,並套用最小干擾且合理的修正。恢復最後有效傳入檢查點的可寫副本,並重新執行受影響的階段。在保留更改前比較已驗證的指標;保留被拒絕的嘗試。使用故障排除進行恢復決策。

功能更改需要明確授權。不要為了報告成功而放寬時序要求、移除必要約束或繞過驗證。當沒有合理的修正可用或配置的預算已耗盡時,停止操作,並報告需要什麼輸入或環境修復。

範本與驗收

針對要求的範圍檢查實際輸出與產品特定報告。對於綜合/實現,需要映射/連結的工件與保留的約束;在轉換後重新驗證功能。對於驗證,需要完整的覆蓋率與乾淨的必要檢查。對於模擬/除錯,需要預期的任務/測試完成並審查診斷結果。

將文件驗證、Tcl 語法檢查、工具執行、階段驗收與端到端簽核證據分開。產生的串流並非經過驗證的實現。請參閱執行合約與驗證範圍以了解所需的證據邊界。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能