Vercel Composition Patterns
supabase/supabase
React composition patterns that scale. An agent skill from supabase/supabase.
Vivado FPGA timing closure and optimization assistant. An agent skill from Shinei-Nouzen-Arch/FPGA-Agent.
$ npx skills add Shinei-Nouzen-Arch/FPGA-Agent --skill vivado-timing-closure -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Shinei-Nouzen-Arch/FPGA-Agent vivado-timing-closure --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Shinei-Nouzen-Arch/FPGA-Agent.git skills-src && mkdir -p .claude/skills && cp -r skills-src/vivado-timing-closure .claude/skills/vivado-timing-closure && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "vivado-timing-closure" agent skill from https://github.com/Shinei-Nouzen-Arch/FPGA-Agent/tree/main/vivado-timing-closure into .claude/skills/vivado-timing-closure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vivado-timing-closure", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Shinei-Nouzen-Arch/FPGA-Agent/tree/main/vivado-timing-closureType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Shinei-Nouzen-Arch/FPGA-Agent --skill vivado-timing-closure -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Shinei-Nouzen-Arch/FPGA-Agent vivado-timing-closure --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Shinei-Nouzen-Arch/FPGA-Agent.git skills-src && mkdir -p .agents/skills && cp -r skills-src/vivado-timing-closure .agents/skills/vivado-timing-closure && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "vivado-timing-closure" agent skill from https://github.com/Shinei-Nouzen-Arch/FPGA-Agent/tree/main/vivado-timing-closure into .agents/skills/vivado-timing-closure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vivado-timing-closure", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Shinei-Nouzen-Arch/FPGA-Agent --skill vivado-timing-closure -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Shinei-Nouzen-Arch/FPGA-Agent vivado-timing-closure --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Shinei-Nouzen-Arch/FPGA-Agent.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/vivado-timing-closure .cursor/skills/vivado-timing-closure && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "vivado-timing-closure" agent skill from https://github.com/Shinei-Nouzen-Arch/FPGA-Agent/tree/main/vivado-timing-closure into .cursor/skills/vivado-timing-closure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vivado-timing-closure", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Shinei-Nouzen-Arch/FPGA-Agent.git --path vivado-timing-closure--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Shinei-Nouzen-Arch/FPGA-Agent --skill vivado-timing-closure -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Shinei-Nouzen-Arch/FPGA-Agent vivado-timing-closure --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Shinei-Nouzen-Arch/FPGA-Agent.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/vivado-timing-closure .gemini/skills/vivado-timing-closure && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "vivado-timing-closure" agent skill from https://github.com/Shinei-Nouzen-Arch/FPGA-Agent/tree/main/vivado-timing-closure into .gemini/skills/vivado-timing-closure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vivado-timing-closure", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Shinei-Nouzen-Arch/FPGA-Agent vivado-timing-closureInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Shinei-Nouzen-Arch/FPGA-Agent --skill vivado-timing-closure -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Shinei-Nouzen-Arch/FPGA-Agent.git skills-src && mkdir -p .github/skills && cp -r skills-src/vivado-timing-closure .github/skills/vivado-timing-closure && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "vivado-timing-closure" agent skill from https://github.com/Shinei-Nouzen-Arch/FPGA-Agent/tree/main/vivado-timing-closure into .github/skills/vivado-timing-closure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vivado-timing-closure", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Shinei-Nouzen-Arch/FPGA-Agent --skill vivado-timing-closure -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Shinei-Nouzen-Arch/FPGA-Agent vivado-timing-closure --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Shinei-Nouzen-Arch/FPGA-Agent.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/vivado-timing-closure .opencode/skills/vivado-timing-closure && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "vivado-timing-closure" agent skill from https://github.com/Shinei-Nouzen-Arch/FPGA-Agent/tree/main/vivado-timing-closure into .opencode/skills/vivado-timing-closure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vivado-timing-closure", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
vivado-timing-closureVivado FPGA timing closure and optimization assistant. An agent skill from Shinei-Nouzen-Arch/FPGA-Agent.
Vivado Timing Closure is an agent skill from Shinei-Nouzen-Arch/FPGA-Agent. Vivado FPGA timing closure and optimization assistant. Covers systematic timing analysis, constraint validation, implementation strategy selection (placedesign/physoptdesign/routedesign directives), pblock-based area constraints, RapidWright-assisted netlist optimization, and iterative convergence workflows. Use when users mention timing closure, WNS/TNS violations, Fmax improvement, FPGA timing optimization, DCP optimization, or post-route ECO fixes. Also trigger for questions about checktiming…
Its SKILL.md is about 6.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including reference files (for example `agents/openai.yaml`, `evals/evals.json` and `references/advanced-optimization.md`).
It sits in Development. The licence is GPL-2.0.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit b60a52e. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are tcl and python).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
docs.amd.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Vivado Timing Closure loads about 6.3k tokens when it runs, and up to ~14k if it reads all its reference files. Until then it costs about 167 tokens; SKILL.md has 2,632 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Shinei-Nouzen-Arch/FPGA-Agent at commit b60a52e, republished under its GPL-2.0 licence (© Shinei-Nouzen-Arch). 2,632 words, ~6,280 tokens.
.claude/skills/vivado-timing-closure/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.Systematic FPGA timing convergence based on AMD UltraFast Design Methodology (UG949) and the XTP301 checklist, combined with practical optimization experience.
For explanation or report-only requests, analyze the available evidence and identify any missing verification without requiring a new build. Run optimization only when it is within the user's request, and reuse valid results for the current design. Existing authorization covers necessary in-scope follow-up; changing a strategy or consulting vivado-tcl does not require repeated confirmation. Preserve explicit limits on RTL, netlist, interfaces, constraints, target frequency, runtime, and hardware operations.
Inspect current reports / open the relevant checkpoint when execution is in scope
→ Validate the existing constraint baseline and record all timing metrics
→ WNS >= 0 or high QoR score? → Full final acceptance checks
→ All checks and requested deliverables complete? → DONE
→ Otherwise: investigate the remaining gaps
→ Timing still failing? → Diagnose constraints, paths, congestion, and QoR
→ Apply an evidence-backed, authorized strategy
→ Compare results; preserve the best candidate
→ Plateau? End this strategy's loop and reassess| Metric | Requirement | Check Command |
|---|---|---|
| Setup WNS/TNS | WNS > 0 ns, TNS = 0 ns | report_timing_summary |
| Hold WHS/THS | WHS > 0 ns, THS = 0 ns | report_timing_summary -delay_type min_max |
| Pulse Width WPWS/TPWS | WPWS > 0 ns, TPWS = 0 ns | report_timing_summary |
| Route Status | Design fully routed; 0 routing errors | report_route_status |
| Fmax | 1000 / (clock_period - WNS) MHz | WNS is negative for failing paths |
For a timing-closure task, apply these checks to the same final design with the full intended constraints, including I/O timing. Verify zero unconstrained internal endpoints, intended exception coverage, and applicable CDC, DRC, and methodology findings. Run report_bus_skew separately when bus-skew constraints exist. Resolve findings or use justified waivers only within the task's authorization; do not weaken constraints to produce a pass.
WNS >= 0 or a high QoR score starts final verification; neither is a completion condition. Keep the positive-margin requirements above unless the user has explicitly specified a different acceptance policy. Missing metrics or checks remain unverified, not passed. Timing closure is complete only after the applicable checks pass and the requested artifacts and validation results are delivered; bitstream generation or hardware programming is not an automatic next stage.
Important: Fmax is NOT explicitly shown in Vivado reports. Always calculate it: Fmax = 1000 / (period - WNS) where WNS is the value from the timing summary (negative means failing).
Before any optimization, verify the design is properly constrained. Skipping this wastes hours optimizing paths that aren't the real problem.
report_timing_summary → WNS/TNS/WHS/THS/WPWS baseline
check_timing → Unconstrained paths (internal endpoints MUST be 0)
report_clock_interaction → Clock relationships, identify unsynchronized crossings
report_methodology → TIMING + XDC rule violations
report_qor_assessment → Overall design health score (1-5)Read references/methodology-checklist.md for specific DRC checks mapped from XTP301.
This is where the biggest gains come from. The directives below are ordered by typical impact.
Built-in physical optimization can replicate cells, restructure logic, or move registers even when RTL source is unchanged. Honor explicit restrictions on netlist changes; this layer does not exempt tool-managed changes from those restrictions. Preserve a baseline checkpoint and compare the candidate's timing, resources, and applicable functional checks.
# Step 1: Re-place with exploration (the single biggest lever)
place_design -directive Explore
# Step 2: Physical optimization after placement
phys_opt_design -directive Explore
# Step 3: Route with timing effort
route_design
# Step 4: Check and iterate if needed
report_timing_summary
# Step 5: Aggressive follow-up (if still failing)
phys_opt_design -directive AggressiveExplore
route_design -directive NoTimingRelaxation -tns_cleanup| Directive | Tool | Use When | Expected Impact |
|---|---|---|---|
Explore | place_design | Always first choice | 20-45% Fmax |
ExtraTimingOpt | place_design | Still failing after Explore | +0-5% additional |
Explore | phys_opt_design | After placement, before routing | +2-10% |
AggressiveExplore | phys_opt_design | Close to closure, last push | +0.5-2% |
NoTimingRelaxation | route_design | Final routing push | ±1% (prevents degrade) |
AlternateReplication | phys_opt_design | Multiple failing paths, high fanout | variable |
After each applicable phys_opt/routing cycle, compare WNS, TNS, failing endpoints, hold, pulse width, route status, and any stated resource limits on a consistent constraint baseline. TNS or endpoint improvements can be meaningful progress even when WNS is unchanged. Preserve the best candidate, including candidates that would otherwise be lost to a later regression.
Stage rule: Post-place phys_opt_design can run after placement. Post-route optimization requires the appropriate routed design state. Check the actual design state and tool requirements; do not impose the post-route prerequisite on post-place optimization. See vivado-impl for stage-specific options.
report_qor_suggestionsOutputs RQS_STRAT strategies recommended by Vivado's ML analysis. The top 3 strategies are auto-generated for your specific design. Each includes specific directives for opt_design/place_design/phys_opt_design/route_design.
Use when critical-path analysis shows substantial physical spread; Manhattan distance > 70 tiles on 5+ critical paths is a heuristic, not a required output from a specific helper.
report_design_analysis, get_timing_paths, and cell placement properties to inspect critical-path spread and select the affected logic.report_utilization for that logic and inspect device sites/clock regions to size a region with resource headroom.analyze_critical_path_spread, report_utilization_for_pblock, analyze_fabric_for_pblock, and convert_fabric_region_to_pblock can assist. They are not built-in Vivado commands and their implementations are not included here; inspect the available tool or script interface before use. Check whether a helper already includes sizing headroom.Apply the chosen constraint to the selected logic in a candidate design and compare it with the baseline. Adapt the following Non-Project Mode example to the current flow:
# Use observed target cells and device ranges; evaluate on a candidate copy.
place_design -unplace
create_pblock pblock_opt
add_cells_to_pblock pblock_opt [get_cells <target_cell_patterns>]
resize_pblock pblock_opt -add <RANGES>
set_property IS_SOFT false [get_pblocks pblock_opt]
place_design
phys_opt_design -directive Explore
route_designRules of thumb for manual pblock sizing:
Only proceed when physical optimization (Layers 2-3) is exhausted. These modify the netlist and can degrade timing if misapplied.
Evaluate the applicable physical strategies; lack of an optional helper alone is not evidence that those strategies are exhausted. The RapidWright calls below are examples of optional helper interfaces, not guaranteed package APIs. Use them only when an installed tool exposes the operation. Prefer available Vivado capabilities for equivalent work when suitable, and preserve explicit limits on netlist editing.
Always test manual netlist changes on a copy first. Use a tool's documented dry-run or --test option only if that tool supports it. Otherwise perform appropriate structural/functional validation on the candidate and re-check routing, timing, and resources. Do not adopt an unverified candidate merely because a specific test option is unavailable; report that limitation while continuing other feasible work.
When fanout > 100 on critical path nets:
# In RapidWright:
optimize_fanout(net_name="<net>", split_factor=<3-8>)
# split_factor: fanout/100, min 3, max 8Warning: Fanout splitting replicates source drivers, adding cells. This can cause placement congestion. On designs with inherently high fanout architecture (e.g., neural network accelerators), it may degrade WNS by 0.5+ ns. Always compare before/after.
When paths have chains of small LUTs (LUT2-LUT5 feeding each other):
# Find candidate pins: iterate nets where source cell is a LUT
# and sink cell is also a LUT
optimize_lut_input_cone(hierarchical_pin_names=[
"cell_name/A1", # Format: hierarchical_cell_name/pin_name
...
])Pre-check: Count LUT types. If LUT6 dominates (>80%) with few LUT2-LUT5, merging has no targets and won't help.
When report_qor_suggestions shows route delay > 60% on specific paths:
# In RapidWright:
# 1. Read DCP
# 2. Identify cells on worst paths
# 3. Unplace target cells
# 4. Place at centroid of their connected cells
# 5. Write DCP
# 6. In Vivado: route_design only (keep placement)Congestion is the #1 cause of timing degradation between placement and routing. Use these tools systematically.
# Primary congestion analysis
report_design_analysis -congestion
# Complexity analysis (predictive — can run before implementation)
report_design_analysis -complexity
# Check router log for congestion levels during route_design| Level | Area Size | Impact on QoR |
|---|---|---|
| 0-3 | < 32x32 tiles | Usually manageable |
| 4 | Any | May affect routability |
| 5 | > 32x32 tiles | Likely to degrade QoR and routability |
INFO: [Route 35-443] CLB routing congestion detected in the logWhen congestion prevents routing convergence during Global Iterations, the router:
This can cause intermediate WNS to spike. Don't panic if intermediate routing WNS looks bad — judge by the final result.
WARNING: [Place 46-14] The placer has determined that this design is highly
congested and may have difficulty routing.→ Immediately run report_design_analysis -congestion before proceeding to routing.
CRITICAL WARNING: [Route 35-162] N signals failed to route due to routing congestion.→ Design is unroutable. Reduce congestion before retrying.
Placement-level fixes:
place_design -directive ExtraNetDelay_low — reduces congestion by lowering net delay emphasisCELL_BLOAT_FACTOR property on congested modules — spreads cells to reduce local densityLogic-level fixes:
opt_design to reduce MUXF*/CARRY*/SRL* in congested regionsPhysical constraints:
Before running implementation, assess whether the design itself is "difficult" using complexity metrics. This predicts routing challenges before spending implementation time.
report_design_analysis -complexity):| Rent Exponent | Meaning |
|---|---|
| 0.0 – 0.65 | Normal — design should route without major issues |
| 0.65 – 0.85 | High — likely routing challenges, especially with >15K instances |
| > 0.85 | Very high — design may fail implementation, needs restructuring |
High Rent exponent = tightly connected logic groups that connect densely to other groups → high global routing demand.
| Average Fanout | Meaning |
|---|---|
| < 4 | Normal |
| 4 – 5 | High — congestion likely; SSI designs with >100K instances may fail to fit in one SLR |
| > 5 | Very high — design may fail implementation |
Important: Always cross-reference Rent exponent and Average Fanout with Total Instances. Small modules (< 15K instances) can have high metrics but still implement easily. Use -hierarchical_depth to drill into problematic submodules.
Clock skew directly eats into timing budget. Intra-clock skew is typically < 300 ps; synchronous clock pairs < 500 ps. Unbalanced trees can have skew of several nanoseconds — making timing closure nearly impossible.
report_clock_interaction — check if async clocks are incorrectly being timedFor all architectures:
CLOCK_DEDICATED_ROUTE=FALSE in production — it routes clocks on general interconnect, causing high skew and noise sensitivityFor UltraScale/UltraScale+:
BUFG_GT for simple clock division instead of MMCM/PLL — saves resources and balances clock treesCLOCK_DELAY_GROUP on critical synchronous clocks to enforce matched routingANY_CMT_COLUMN instead of FALSE for clock routing exceptions — keeps clocks on dedicated resourcesreport_clock_interaction uses a color-coded matrix. Understanding it prevents over-constraining and under-constraining:
| Color | Label | Meaning | Action |
|---|---|---|---|
| Black | No path | No interaction between clock domains | Reference only |
| Green | Timed | Paths timed, clocks are synchronous | Reference — verify this is intended |
| Cyan | Partial False Path | Some paths excluded by user exceptions | Verify exceptions are correct |
| Red | Timed (unsafe) | Paths timed but clocks appear asynchronous | Add set_clock_groups or set_false_path |
| Orange | Partial False (unsafe) | Async clocks but only partially excluded | Check for missed exception coverage |
| Blue | User Ignored | Paths excluded by clock_groups/false_path | Verify async circuit is correct (CDC) |
| Light blue | Max Delay Datapath | Constrained by set_max_delay -datapath_only | Verify delay value is correct |
Workflow: Before adding exceptions, the matrix should only show Black, Red, and Green. The goal is to convert all Red (unsafe timed) → Blue (user ignored) for truly async clocks.
Sort report_clock_interaction by "Path Req (WNS)" column to find overly tight requirements. Vivado expands each clock to 1000 cycles to find the tightest alignment. If "Not Expanded" appears, the clocks MUST be treated as asynchronous.
report_cdcAnalyzes async clock crossing circuits for correctness. Run after each major block update. Waive violations only after confirming the CDC circuit is safe.
The default workflow preserves the existing constraints and reuses the appropriate checkpoint for the task:
1. Inspect or open the relevant checkpoint with its existing complete constraints
2. Record the design version, constraint sources/scopes, and baseline timing metrics
3. report_clock_networks + report_clocks → verify clock definitions and propagation
4. check_timing + report_methodology → identify specific coverage or constraint issues
5. Correct supported issues within scope, using Tcl or the Timing Constraints Wizard
6. report_clock_interaction + report_cdc → verify relationships and crossing circuits
7. Apply justified exceptions only to the intended paths, preserving IP constraints
8. If optimization is requested, run the applicable implementation stages
9. Compare candidates under the same full constraint set, including I/O timing
10. Run the full Timing Acceptance Criteria before declaring closureKey constraint for IP: All AMD IP XDC constraints must remain intact. Never remove or override IP timing constraints.
Optional baseline reconstruction: Use only when it is needed for an authorized constraint diagnosis. Work on an isolated copy, retain the original checkpoint and constraint sources, and ensure IP constraints are preserved or correctly reloaded with their original scope and ordering. reset_timing is not a default diagnostic step; any temporary reconstruction must restore the required IP constraints before measurements. If the necessary constraint sources are unavailable, keep the existing baseline and identify the specific gap instead of clearing it.
An experiment using config_timing_analysis -ignore_io_paths yes is a partial diagnostic result only. Before final verification, restore the full intended constraint set, set config_timing_analysis -ignore_io_paths no, and rerun the applicable reports. Do not adopt reduced constraints or a changed target clock as a timing-closure result.
Read references/diagnosis-guide.md for detailed patterns. Quick reference:
| Symptom | Likely Cause | Strategy |
|---|---|---|
| Route delay > 60% of path delay | Poor cell placement (spread) | Pblock or place_design Explore |
| Logic delay > 60% of path delay | Deep logic levels | LUT merging or pipeline (requires RTL change) |
| High fanout nets on critical paths | Driver overload | Fanout splitting (test carefully) |
| WNS degrades after routing | Congestion | report_design_analysis -congestion |
| Place 46-14 warning | Placer detects high congestion | Analyze congestion BEFORE routing |
| Route 35-443 CLB congestion | Local hot-spots despite OK global levels | Check generated txt file for congested CLBs |
| Many failing endpoints but small TNS | Isolated paths | phys_opt_design targeted passes |
| Few failing endpoints but large TNS | Systematic issue | Check constraints first |
| High Rent exponent (>0.65) | Inherent design complexity | Floorplan restructuring, SSI-aware partitioning |
| Clock skew > 500 ps on sync paths | Unbalanced clock trees | CLOCK_DELAY_GROUP, remove cascade buffers |
Read references/advanced-optimization.md when the task involves SSI/SLR-specific optimization, Laguna register placement, UG949 multi-cycle-path details, Vivado/RapidWright environment tuning, incremental implementation, or a complete TCL optimization script template.
Quick reminders:
report_utilization -slr and keep critical logic within one SLR when possible.USER_SLL_REG over manual Laguna placement unless exact control is required.place_design -directive Explore is the single biggest lever. It consistently delivers 20-45% Fmax improvement.references/diagnosis-guide.md — Detailed timing violation diagnosis patternsreferences/methodology-checklist.md — XTP301 checklist mapped to optimization workflow© Shinei-Nouzen-Arch, GPL-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (references) in vivado-timing-closure of Shinei-Nouzen-Arch/FPGA-Agent.
Open the folder on GitHubat commit b60a52e
Vivado Timing Closure next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Vivado Timing Closure this skillShinei-Nouzen-Arch/FPGA-Agent | 180 | — | ~6.3k | Automated safety check: Pass | GPL-2.0 | |
| Vercel Composition Patternssupabase/supabase | 111k | 58 repos | ~726 | Automated safety check: Pass | MIT | |
| Finishing a Development Branchobra/superpowers | 297k | 5 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Typescript Advanced Typesrolling-scopes/rsschool-app | 10k | 25 repos | ~4.2k | Automated safety check: Pass | MPL-2.0 | |
| PR Babysitteropeninterpreter/openinterpreter | 69k | 3 repos | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Code Review ChecklistshareAI-lab/learn-claude-code | 78k | 4 repos | ~1.1k | Automated safety check: Pass | MIT |
supabase/supabase
React composition patterns that scale. An agent skill from supabase/supabase.
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
rolling-scopes/rsschool-app
Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications.
openinterpreter/openinterpreter
Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.
shareAI-lab/learn-claude-code
Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.
onyx-dot-app/onyx
Iteratively improves a PR (GitHub), MR (GitLab), or shelved changelist (Perforce) until Greptile gives it a 5/5 confidence score with zero unresolved comments.
Shinei-Nouzen-Arch/FPGA-Agent
A skill your agent uses when the user needs help with Vivado in-system debugging, hardware programming, or debug core configuration.
Shinei-Nouzen-Arch/FPGA-Agent
A skill your agent uses when the user needs Vivado design analysis, timing report interpretation, or timing-closure diagnosis.
Shinei-Nouzen-Arch/FPGA-Agent
A skill your agent uses when the user needs help writing XDC/SDC timing or physical constraints for Vivado FPGA designs.
Shinei-Nouzen-Arch/FPGA-Agent
A skill your agent uses when the user needs Vivado implementation strategy selection or optimization.
Shinei-Nouzen-Arch/FPGA-Agent
A skill your agent uses when the user needs help with Vivado simulation strategy, flow selection, and debugging.
Shinei-Nouzen-Arch/FPGA-Agent
A skill your agent uses when the user needs help with Vivado synthesis strategy selection, synthesis attribute configuration, synthdesign option tuning, resource inference control…
Categories
Vivado FPGA timing closure and optimization assistant. An agent skill from Shinei-Nouzen-Arch/FPGA-Agent. Vivado Timing Closure is an agent skill from Shinei-Nouzen-Arch/FPGA-Agent. Vivado FPGA timing closure and optimization assistant.
Vivado Timing Closure fits situations like: users mention timing closure; WNS/TNS violations; fmax improvement; FPGA timing optimization.
Run `npx skills add Shinei-Nouzen-Arch/FPGA-Agent --skill vivado-timing-closure -a claude-code`. Or copy the skill folder (vivado-timing-closure in Shinei-Nouzen-Arch/FPGA-Agent) into .claude/skills/vivado-timing-closure in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Shinei-Nouzen-Arch/FPGA-Agent --skill vivado-timing-closure -a codex`. Or copy the skill folder (vivado-timing-closure in Shinei-Nouzen-Arch/FPGA-Agent) into .agents/skills/vivado-timing-closure in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Shinei-Nouzen-Arch/FPGA-Agent --skill vivado-timing-closure -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/vivado-timing-closure, .gemini/skills/vivado-timing-closure, .github/skills/vivado-timing-closure and .opencode/skills/vivado-timing-closure in your project.
SKILL.md names no scripts, command-line tools or credentials: Vivado Timing Closure is instructions for the agent only. Our summary lists: Python 3.
SKILL.md names 1 domain. As links in the text: docs.amd.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Vivado Timing Closure is published under the GPL-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6.3k tokens (SKILL.md is roughly 25k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 7.7k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Vivado Timing Closure: Vercel Composition Patterns (supabase/supabase, 111k stars), Finishing a Development Branch (obra/superpowers, 297k stars), Typescript Advanced Types (rolling-scopes/rsschool-app, 10k stars) and PR Babysitter (openinterpreter/openinterpreter, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Shinei-Nouzen-Arch (a GitHub user) maintains it in Shinei-Nouzen-Arch/FPGA-Agent, which has 180 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on September 5, 2026.
Source: Shinei-Nouzen-Arch/FPGA-Agent on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.