Agent skill

Vivado Timing Closure

by Shinei-Nouzen-Arch in Shinei-Nouzen-Arch/FPGA-Agent

Vivado FPGA timing closure and optimization assistant. An agent skill from Shinei-Nouzen-Arch/FPGA-Agent.

GPL-2.0Auto-check passedDevelopment

Install Vivado Timing Closure

skills CLI
$ npx skills add Shinei-Nouzen-Arch/FPGA-Agent --skill vivado-timing-closure -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Shinei-Nouzen-Arch/FPGA-Agent vivado-timing-closure --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
vivado-timing-closure
GitHub stars
180
Token cost
~6.3k tokens
SKILL.md length
2,632 words
Files
6 (incl. references)
Skills in repo
10
Repo updated
First seen
Licence
GPL-2.0

At a glance

Vivado FPGA timing closure and optimization assistant. An agent skill from Shinei-Nouzen-Arch/FPGA-Agent.

  • Works in 4 steps: Use report_design_analysis,… → Use report_utilization for that logic… → If available, the environment-specific… → …
  • Users mention timing closure
  • SKILL.md covers Quick Decision Flow, Timing Acceptance Criteria, Layer 1: Constraint Validation… and Layer 2: Tool-Managed…, plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

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.

When your agent uses it

  • Users mention timing closure
  • WNS/TNS violations
  • Fmax improvement
  • FPGA timing optimization

Example prompts

  • “/vivado-timing-closure”

Requirements

  • Python 3

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Use report_design_analysis, get_timing_paths, and cell placement properties to inspect critical-path spread and select the affected logic.
  2. Use report_utilization for that logic and inspect device sites/clock regions to size a region with resource headroom.
  3. If available, the environment-specific helpers analyze_critical_path_spread, report_utilization_for_pblock, analyze_fabric_for_pblock, and…
  4. Without those helpers or RapidWright, use the native reports, object queries, and manual sizing guidance below. An unavailable optional…

What it can do on your machine

Read from SKILL.md and the folder at commit b60a52e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    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.

  • Network

    Links to these hosts (documentation or services it may open):

    • docs.amd.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~167
When it runs · the whole SKILL.md, loaded when a task matches
~6.3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~14k

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.

Safety

Auto-check passed

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.

SKILL.md

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.

Download SKILL.mdSave it as .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.
name
vivado-timing-closure
description
Vivado FPGA timing closure and optimization assistant. Covers systematic timing analysis, constraint validation, implementation strategy selection (place_design/phys_opt_design/route_design 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 check_timing, report_qor_assessment/suggestions, methodology DRC, clock interaction analysis, fanout optimization, LUT merging, or critical path analysis.

Vivado Timing Closure & Optimization

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.

Quick Decision Flow

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

Timing Acceptance Criteria

MetricRequirementCheck Command
Setup WNS/TNSWNS > 0 ns, TNS = 0 nsreport_timing_summary
Hold WHS/THSWHS > 0 ns, THS = 0 nsreport_timing_summary -delay_type min_max
Pulse Width WPWS/TPWSWPWS > 0 ns, TPWS = 0 nsreport_timing_summary
Route StatusDesign fully routed; 0 routing errorsreport_route_status
Fmax1000 / (clock_period - WNS) MHzWNS 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).

Layer 1: Constraint Validation (ALWAYS START HERE)

Before any optimization, verify the design is properly constrained. Skipping this wastes hours optimizing paths that aren't the real problem.

Essential checks (in priority order):
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)
Interpreting QoR Assessment:
  • Score 1-2: Major constraint or methodology issues — fix these first
  • Score 3: Design has timing challenges but constraints are reasonable
  • Score 4-5: Good design quality, remaining issues are fine-grained

Read references/methodology-checklist.md for specific DRC checks mapped from XTP301.

Layer 2: Tool-Managed Implementation Optimization (May Change the Netlist)

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.

The Golden Sequence (proven 20-45% Fmax improvement):
tcl
# 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 Reference:
DirectiveToolUse WhenExpected Impact
Exploreplace_designAlways first choice20-45% Fmax
ExtraTimingOptplace_designStill failing after Explore+0-5% additional
Explorephys_opt_designAfter placement, before routing+2-10%
AggressiveExplorephys_opt_designClose to closure, last push+0.5-2%
NoTimingRelaxationroute_designFinal routing push±1% (prevents degrade)
AlternateReplicationphys_opt_designMultiple failing paths, high fanoutvariable
Iteration Pattern:

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.

  • If WNS >= 0, run the full Timing Acceptance Criteria above and investigate any remaining failures or missing checks.
  • End the current strategy's repeated loop after 3 consecutive rounds without material progress, or when WNS improvement per round is < 0.005 ns with no meaningful progress in the other relevant metrics.
  • At a plateau, re-examine the limiting paths and continue another evidence-backed strategy within the existing scope and overall attempt, runtime, and resource limits. Do not request confirmation merely to switch an already-authorized strategy.
  • If no feasible in-scope next step remains, or an overall limit is reached, report that closure is incomplete, retain the best result, and identify the remaining violations and concrete constraint or missing decision. Do not treat a plateau as success or restart the search indefinitely.

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.

Using ML Strategy Suggestions:
tcl
report_qor_suggestions

Outputs 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.

Layer 3: Pblock Area Constraints

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.

Pblock Flow:
  1. Use report_design_analysis, get_timing_paths, and cell placement properties to inspect critical-path spread and select the affected logic.
  2. Use report_utilization for that logic and inspect device sites/clock regions to size a region with resource headroom.
  3. If available, the environment-specific helpers 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.
  4. Without those helpers or RapidWright, use the native reports, object queries, and manual sizing guidance below. An unavailable optional tool does not block the rest of the task or authorize its installation. If a particular result cannot be verified, state that limitation and continue unaffected work.

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:

tcl
# 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_design

Rules of thumb for manual pblock sizing:

  • Compute centroid of critical path cells (average X/Y coordinates)
  • Size region to ~2x the needed SLICE count (aim for 50% utilization)
  • Expand to cover the critical cell bounding box + 20% margin
  • Clamp to device SLICE bounds (xcvu3p: X[0:168], Y[0:299])
  • Avoid expanding to entire chip — that negates the constraint effect

Layer 4: Netlist-Level Optimization (Use with Caution)

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.

Fanout Splitting:

When fanout > 100 on critical path nets:

python
# In RapidWright:
optimize_fanout(net_name="<net>", split_factor=<3-8>)
# split_factor: fanout/100, min 3, max 8

Warning: 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.

LUT Input Cone Merging:

When paths have chains of small LUTs (LUT2-LUT5 feeding each other):

python
# 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.

Cell Re-placement (ECO):

When report_qor_suggestions shows route delay > 60% on specific paths:

python
# 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 Analysis & Resolution

Congestion is the #1 cause of timing degradation between placement and routing. Use these tools systematically.

Identifying Congestion
tcl
# 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
Congestion Severity Levels (from router log):
LevelArea SizeImpact on QoR
0-3< 32x32 tilesUsually manageable
4AnyMay affect routability
5> 32x32 tilesLikely to degrade QoR and routability
Congestion Types and Their Meanings:
  • Global Congestion: All interconnect types combined — overall picture
  • Long Congestion: Long-distance interconnect only — high values cause longer routing delays as router falls back to short wires
  • Short Congestion: All other interconnect — high values (>5% tile%) cause longer runtime and potential QoR degradation
  • CLB Routing Congestion: Local hot-spots that can cause routing failure even when global/long/short levels are acceptable. Look for INFO: [Route 35-443] CLB routing congestion detected in the log
Router Behavior During Congestion:

When congestion prevents routing convergence during Global Iterations, the router:

  1. Stops timing optimization
  2. Prioritizes finding ANY valid routing solution (no overlaps)
  3. Once valid routing is found, re-enables timing optimization

This can cause intermediate WNS to spike. Don't panic if intermediate routing WNS looks bad — judge by the final result.

Congestion Warning Signs:
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.

Congestion Mitigation Strategies:
  1. Placement-level fixes:

    • place_design -directive ExtraNetDelay_low — reduces congestion by lowering net delay emphasis
    • CELL_BLOAT_FACTOR property on congested modules — spreads cells to reduce local density
  2. Logic-level fixes:

    • opt_design to reduce MUXF*/CARRY*/SRL* in congested regions
    • Remove LUT combining attributes (LUTNM, HLUTNM) before place_design
    • Reduce control set diversity (fewer unique reset/CE combinations)
  3. Physical constraints:

    • Pblock to isolate congested modules and give them dedicated area
    • Adjust floorplan to spread high-connectivity modules apart

Design Complexity Analysis (Pre-Implementation)

Before running implementation, assess whether the design itself is "difficult" using complexity metrics. This predicts routing challenges before spending implementation time.

Rent Exponent (report_design_analysis -complexity):
Rent ExponentMeaning
0.0 – 0.65Normal — design should route without major issues
0.65 – 0.85High — likely routing challenges, especially with >15K instances
> 0.85Very high — design may fail implementation, needs restructuring

High Rent exponent = tightly connected logic groups that connect densely to other groups → high global routing demand.

Show full SKILL.md (1,043 more words)Show less
Average Fanout:
Average FanoutMeaning
< 4Normal
4 – 5High — congestion likely; SSI designs with >100K instances may fail to fit in one SLR
> 5Very 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 Reduction

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.

Identifying Skew Problems:
  1. Review paths with unexpectedly high clock uncertainty in timing reports
  2. report_clock_interaction — check if async clocks are incorrectly being timed
  3. Paths crossing SLR or I/O columns often have elevated skew
Skew Reduction Techniques:

For all architectures:

  • Remove cascaded clock buffers — connect them in parallel instead
  • Merge parallel clock buffers into a single buffer; use CE pins for gating
  • Remove LUTs/combinational logic from clock paths (migrate gating to CE pins)
  • Never use CLOCK_DEDICATED_ROUTE=FALSE in production — it routes clocks on general interconnect, causing high skew and noise sensitivity

For UltraScale/UltraScale+:

  • Use BUFG_GT for simple clock division instead of MMCM/PLL — saves resources and balances clock trees
  • Apply CLOCK_DELAY_GROUP on critical synchronous clocks to enforce matched routing
  • Use ANY_CMT_COLUMN instead of FALSE for clock routing exceptions — keeps clocks on dedicated resources
  • Place MMCM/PLL near the center of clock loads to reduce network delay
  • Pblock source and target into the same SLR to avoid cross-SLR clock skew
  • Restrict BUFR/BUFIO/BUFH to a single clock region

Clock Interaction Report Deep-Dive

report_clock_interaction uses a color-coded matrix. Understanding it prevents over-constraining and under-constraining:

ColorLabelMeaningAction
BlackNo pathNo interaction between clock domainsReference only
GreenTimedPaths timed, clocks are synchronousReference — verify this is intended
CyanPartial False PathSome paths excluded by user exceptionsVerify exceptions are correct
RedTimed (unsafe)Paths timed but clocks appear asynchronousAdd set_clock_groups or set_false_path
OrangePartial False (unsafe)Async clocks but only partially excludedCheck for missed exception coverage
BlueUser IgnoredPaths excluded by clock_groups/false_pathVerify async circuit is correct (CDC)
Light blueMax Delay DatapathConstrained by set_max_delay -datapath_onlyVerify 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.

Clock Pair Requirement Analysis:

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.

Clock Domain Crossing (CDC) Validation:
tcl
report_cdc

Analyzes async clock crossing circuits for correctness. Run after each major block update. Waive violations only after confirming the CDC circuit is safe.

Detailed Baseline Setting Process (from UG949)

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 closure

Key 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.

Diagnosing Violation Root Causes

Read references/diagnosis-guide.md for detailed patterns. Quick reference:

SymptomLikely CauseStrategy
Route delay > 60% of path delayPoor cell placement (spread)Pblock or place_design Explore
Logic delay > 60% of path delayDeep logic levelsLUT merging or pipeline (requires RTL change)
High fanout nets on critical pathsDriver overloadFanout splitting (test carefully)
WNS degrades after routingCongestionreport_design_analysis -congestion
Place 46-14 warningPlacer detects high congestionAnalyze congestion BEFORE routing
Route 35-443 CLB congestionLocal hot-spots despite OK global levelsCheck generated txt file for congested CLBs
Many failing endpoints but small TNSIsolated pathsphys_opt_design targeted passes
Few failing endpoints but large TNSSystematic issueCheck constraints first
High Rent exponent (>0.65)Inherent design complexityFloorplan restructuring, SSI-aware partitioning
Clock skew > 500 ps on sync pathsUnbalanced clock treesCLOCK_DELAY_GROUP, remove cascade buffers

Advanced Optimization Topics

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:

  • For SSI devices, check report_utilization -slr and keep critical logic within one SLR when possible.
  • Register SLR boundary crossings; prefer USER_SLL_REG over manual Laguna placement unless exact control is required.
  • For multi-cycle paths, adjust hold after setup and constrain pins rather than whole cells.
  • Use Vivado/RapidWright version notes in the reference before comparing DCP optimization results.

Key Principles

  1. Start with constraints, not optimization. An incorrectly constrained design wastes all optimization effort.
  2. place_design -directive Explore is the single biggest lever. It consistently delivers 20-45% Fmax improvement.
  3. Separate a strategy plateau from task completion. Use the Iteration Pattern above to compare all relevant metrics, preserve the best candidate, and reassess within the existing limits. Only full acceptance establishes closure.
  4. Physical optimizations have a ceiling. Around 0.4 ns WNS residual typically means logic depth is the limit — physical changes alone won't help.
  5. Validate netlist changes on a copy first. Follow the Layer 4 validation guidance; use a documented test mode only when the actual tool supports it. Changes that add cells (fanout splitting) can easily backfire.
  6. Version matters. Vivado 2025.2 placement produces different results than 2025.1. Use what works best for each design.

References

  • references/diagnosis-guide.md — Detailed timing violation diagnosis patterns
  • references/methodology-checklist.md — XTP301 checklist mapped to optimization workflow
  • AMD UG949: UltraFast Design Methodology Guide for FPGA and SoC
  • AMD UG1292: UltraFast Design Methodology Timing Closure Quick Reference Guide
  • AMD XTP301: UltraFast Design Methodology Checklist
  • AMD UG835: phys_opt_design — post-place/post-route operation and tool-managed netlist changes

© 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

Files

SKILL.md and 5 other files (references) in vivado-timing-closure of Shinei-Nouzen-Arch/FPGA-Agent.

  • SKILL.md
  • agents/openai.yaml
  • evals/evals.json
  • references/advanced-optimization.md
  • references/diagnosis-guide.md
  • references/methodology-checklist.md

Open the folder on GitHubat commit b60a52e

Compare with similar skills

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.

Vivado Timing Closure compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Vivado Timing Closure this skillShinei-Nouzen-Arch/FPGA-Agent180—~6.3kAutomated safety check: PassGPL-2.0
Vercel Composition Patternssupabase/supabase111k58 repos~726Automated safety check: PassMIT
Finishing a Development Branchobra/superpowers297k5 repos~1.9kAutomated safety check: PassMIT
Typescript Advanced Typesrolling-scopes/rsschool-app10k25 repos~4.2kAutomated safety check: PassMPL-2.0
PR Babysitteropeninterpreter/openinterpreter69k3 repos~4.2kAutomated safety check: PassApache-2.0
Code Review ChecklistshareAI-lab/learn-claude-code78k4 repos~1.1kAutomated safety check: PassMIT

Similar skills

  • Official

    React composition patterns that scale. An agent skill from supabase/supabase.

    111k GitHub starsUsed in 58 repos~726 tokens
    DevelopmentAuto-check passed
  • 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.

    297k GitHub starsUsed in 5 repos~1.9k tokens
    DevelopmentAuto-check passed
  • Typescript Advanced Types

    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.

    10k GitHub starsUsed in 25 repos~4.2k tokens
    DevelopmentAuto-check passed
  • PR Babysitter

    openinterpreter/openinterpreter

    Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.

    69k GitHub starsUsed in 3 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Code Review Checklist

    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.

    78k GitHub starsUsed in 4 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Greploop

    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.

    32k GitHub starsUsed in 4 repos~3.3k tokens
    DevelopmentAuto-check passed

More from Shinei-Nouzen-Arch/FPGA-Agent

All 10 skills in this repo
  • Vivado Debug

    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.

    180 GitHub stars~4.8k tokensUpdated 1 mo ago
    Auto-check passed
  • Vivado Analysis

    Shinei-Nouzen-Arch/FPGA-Agent

    A skill your agent uses when the user needs Vivado design analysis, timing report interpretation, or timing-closure diagnosis.

    180 GitHub stars~3.3k tokensUpdated 1 mo ago
    Auto-check passed
  • Vivado Constraints

    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.

    180 GitHub stars~3.4k tokensUpdated 1 mo ago
    Auto-check passed
  • Vivado Impl

    Shinei-Nouzen-Arch/FPGA-Agent

    A skill your agent uses when the user needs Vivado implementation strategy selection or optimization.

    180 GitHub stars~3.7k tokensUpdated 1 mo ago
    Auto-check passed
  • Vivado Sim

    Shinei-Nouzen-Arch/FPGA-Agent

    A skill your agent uses when the user needs help with Vivado simulation strategy, flow selection, and debugging.

    180 GitHub stars~2.9k tokensUpdated 1 mo ago
    Auto-check passed
  • Vivado Synth

    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…

    180 GitHub stars~3.6k tokensUpdated 1 mo ago
    Auto-check passed

Categories

Questions about Vivado Timing Closure

What does Vivado Timing Closure do?

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.

When should I use Vivado Timing Closure?

Vivado Timing Closure fits situations like: users mention timing closure; WNS/TNS violations; fmax improvement; FPGA timing optimization.

How do I install Vivado Timing Closure in Claude Code?

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.

How do I install Vivado Timing Closure in Codex?

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.

Can I use Vivado Timing Closure in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Vivado Timing Closure need to run?

SKILL.md names no scripts, command-line tools or credentials: Vivado Timing Closure is instructions for the agent only. Our summary lists: Python 3.

Does Vivado Timing Closure access the network?

SKILL.md names 1 domain. As links in the text: docs.amd.com. This is read from the text; nothing was executed.

Is Vivado Timing Closure safe to install?

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.

What licence does Vivado Timing Closure use?

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.

How many tokens does Vivado Timing Closure use?

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.

What are the alternatives to Vivado Timing Closure?

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.

Who maintains Vivado Timing Closure?

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.