shinei-nouzen-arch/fpga-agent/vivado-constraints
Claude Code and agent skill by shinei-nouzen-arch/fpga-agent
- community
Checking that the SKILL.md file is still in the repository.
Use this skill when the user needs help writing XDC/SDC timing or physical constraints for Vivado FPGA designs. This includes clock definitions (create_clock, create_generated_clock, virtual clocks), I/O delay constraints (set_input_delay, set_output_delay, DDR timing), timing exceptions (set_false_path, set_multicycle_path, set_max_delay, set_min_delay), clock domain crossing (CDC) constraints (set_clock_groups, set_bus_skew), clock uncertainty/jitter/latency, physical constraints (IOSTANDARD, PACKAGE_PIN, LOC, Pblock, placement, routing), XDC precedence rules, constraint scoping (SCOPED_TO_REF), constraint ordering optimization, or constraint debugging (check_timing, report_exceptions, report_clock_interaction). Trigger when the user mentions XDC, SDC, timing constraints, clock constraints, IO delay, false path, multicycle path, clock groups, or physical pin assignment. For timing report interpretation and analysis use vivado-analysis.
Install
npx vskill@latest install shinei-nouzen-arch/fpga-agent/vivado-constraintsSKILL.md
Vivado XDC Constraints Decision Guide
Based on UG903 (v2025.2). For complete syntax examples, see REFERENCE.md.
XDC File Management
Synthesis vs Implementation Constraints
Constraint Scoping (for IP / sub-modules)
Object Naming Rules
- Single-bit register
myReg→ instance name:myReg_reg - Multi-bit register
myBus[2:0]→myBus_reg[0],myBus_reg[1],myBus_reg[2] - Query multi-bit:
get_cells myBus_reg[*](NOTmyBus_reg[2:0]) - Hierarchical names: use explicit
/separator, NOT wildcards with-hierarchical - Recommended: Use
get_cells inst_A/inst_B/*_regwithout-hierarchical
Clock Definition Guide
Primary Clocks
Rules:
- Define primary clocks on input ports, NOT on BUFG outputs
- Primary clocks must be defined first — other constraints reference them
- Virtual clocks must be defined before set_input_delay/set_output_delay that use them
Generated Clocks
Rules:
-sourceaccepts pin/port ONLY, not clock objects- MMCM/PLL outputs are auto-derived — only define manually if you need custom settings
- Auto-derived clocks can only be renamed at CMB output pins
- Use
get_clocks -of_objects [get_pins <pin>]to query auto-derived clock names
Clock Groups
Rules:
set_clock_groupshas HIGHEST priority among timing exceptions- Cannot be overridden by
-reset_path - Prefer
set_clock_groupsover twoset_false_pathfor async CDC -logically_exclusiveand-physically_exclusiveare equivalent for AMD FPGAs
Clock Latency, Jitter, Uncertainty
I/O Delay Templates
SDR Input
DDR Input
SDR Output
DDR Output
Combinational Path (in-to-out)
Key rules:
-clockis REQUIRED in Vivado (optional in SDC standard)-clock_fallrefers to the CLOCK edge, not data edge-add_delayneeded for second constraint on same port (DDR)- Use virtual clock to model different jitter/source latency scenarios
Timing Exceptions
Multicycle Path — Decision Table
| Scenario | Constraints | |
|---|---|---|
| Same clock / same-freq same-phase | set_multicycle_path N -setup -from CLK1 -to CLK2 | |
set_multicycle_path N-1 -hold -from CLK1 -to CLK2 | ||
| SLOW → FAST | set_multicycle_path N -setup -from CLK1 -to CLK2 | |
set_multicycle_path N-1 -hold -end -from CLK1 -to CLK2 | ||
| FAST → SLOW | set_multicycle_path N -setup -start -from CLK1 -to CLK2 | |
set_multicycle_path N-1 -hold -from CLK1 -to CLK2 |
Key rules:
-setupdefault: moves destination (capture) clock edge → use-startto move source instead-holddefault: moves source (launch) clock edge → use-endto move destination instead-startand-endhave no effect within same clock domain- Always pair setup + hold multicycle constraints
False Path
CAUTION: -through without -from or -to removes ALL paths through that pin/net.
Max/Min Delay
-datapath_only differences:
| set_max_delay | set_max_delay -datapath_only | ||
|---|---|---|---|
| Clock skew | Included | Never included | |
| Hold requirement | Untouched | Auto false-pathed | |
| -from | Optional | Mandatory |
Case Analysis
Disable Timing
XDC Precedence Rules
Exception Priority (highest → lowest)
- set_clock_groups — cannot be overridden
- set_false_path
- set_max_delay / set_min_delay
- set_multicycle_path
Object Specificity (highest → lowest)
- Ports, pins, cells (cells resolved to pins)
- Clocks
Filter Specificity (highest → lowest)
-from -through -to-from -to-from -through-from-through -to-to-through
`-reset_path` can override false_path/max_delay/multicycle priority, but NOT clock_groups.
Last constraint wins for equivalent constraints (same type, same specificity).
CDC Constraints
Asynchronous CDC
CDC with max delay constraint
Multi-bit CDC with bus skew
Constraint Ordering for Performance
Write XDC sections in this order for minimum runtime impact:
| Order | Commands | Reason | |
|---|---|---|---|
| 1 | set_disable_timing, set_case_analysis | Prune timing graph first | |
| 2 | create_clock, create_generated_clock, set_clock_sense | Define clocks before referencing | |
| 3 | set_clock_latency, set_propagated_clock, set_clock_uncertainty, set_input_jitter, set_system_jitter | Clock properties | |
| 4 | set_input_delay, set_output_delay | I/O timing | |
| 5 | set_clock_groups, set_false_path, set_min_delay, set_max_delay, set_multicycle_path, set_bus_skew | Timing exceptions | |
| 6 | set_max_time_borrow, set_external_delay | Rarely used |
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingvivado-constraints/SKILL.md
Popularity
- Repository stars
- 132
- Repository forks
- 16
- 7-day trend score
- 24
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 18 May 2026, 5 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/shinei-nouzen-arch/fpga-agent/vivado-constraints)