shinei-nouzen-arch/fpga-agent/vivado-impl

Claude Code and agent skill by shinei-nouzen-arch/fpga-agent

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Use this skill when the user needs Vivado implementation strategy selection or optimization. Covers opt_design, power_opt_design, place_design, phys_opt_design, route_design, implementation directives/options, congestion-driven placement, fanout/placement/routing/SLR/register physical optimization, hold fixing, incremental implementation, ECO flow, and implementation run strategies for performance, congestion, area, and power. This skill chooses implementation-phase tactics and tradeoffs. For TCL command generation/execution use vivado-tcl, for synthesis use vivado-synth, for constraints use vivado-constraints, for report interpretation use vivado-analysis, for end-to-end timing closure use vivado-timing-closure.

Install

npx vskill@latest install shinei-nouzen-arch/fpga-agent/vivado-impl

SKILL.md

Vivado Implementation Decision Guide

Based on UG904 (v2025.2). For command syntax and property tables see REFERENCE.md; for report_qor_suggestions RTL optimization examples (UG906 before/after) see examples/ug906/ directory.

Implementation Flow Overview

opt_design ← Logic optimization (REQUIRED)
↓
power_opt_design ← Clock gating power opt (OPTIONAL, not Versal)
↓
place_design ← Placement (REQUIRED)
↓
power_opt_design ← Post-place power opt (OPTIONAL)
↓
phys_opt_design ← Post-place physical opt (OPTIONAL, recommended)
↓
route_design ← Routing (REQUIRED)
↓
phys_opt_design ← Post-route physical opt (OPTIONAL)
↓
write_bitstream ← Bitstream (all except Versal)
write_device_image ← Device image (Versal only)

Key rule: All implementation commands are re-entrant — they can be run repeatedly on the same design. Each run optimizes the results of the previous run.


opt_design — Logic Optimization

Directive Decision Table
ScenarioDirectiveEffect
Default / first tryDefaultDefault optimization phases
Deep explorationExploreMultiple passes of optimization
Area reduction (comb)ExploreAreaMultiple passes, emphasis on reducing combinational logic
Area reduction (comb+seq)ExploreSequentialAreaReduces both combinational and sequential logic
Explore + LUT remapExploreWithRemapExplore + Remap optimization
Fast iterationRuntimeOptimizedMinimal optimization passes
QoR-suggestedRQSUses report_qor_suggestion strategy
Available Optimizations (18 phases)
PhaseOptionDefaultDescription
1-retargetONRetarget primitives across device families
2-propconstONConstant propagation
3-sweepONRemove loadless cells, tie-off, retarget dual-port→single-port RAM
4-muxf_remapoffRemap MUXF7/F8/F9 to LUT3 for routability
5-carry_remapoffRemap short CARRY chains to LUTs
6-control_set_mergeoffMerge equivalent control set drivers
7-merge_equivalent_driversoffMerge all equivalent drivers (not just control)
8-bufg_optONInsert BUFG on high-fanout clock/non-clock nets
9-shift_register_optONSRL fanout opt + SRL↔register transforms
10-mbufg_optoffReplace parallel BUFGCEs with MBUFG (Versal)
11-dsp_register_optoffOptimize DSP pipeline registers
12(auto)ONControl Set Reduction (CONTROL_SET_REMAP property)
13-hier_fanout_limit <N>offModule-based fanout replication
13-control_set_optoffControl Set Optimization (auto-selected candidates)
14-remapoffCombine cascaded LUTs to reduce logic levels
15-resynth_remapoffTiming-driven re-synthesis + remap
16-resynth_areaoffRe-synthesis for area (reduce LUTs)
17-resynth_seq_areaoffRe-synthesis for area (comb + sequential)
18-bram_power_optONBlock RAM power optimization (WRITE_MODE)

IMPORTANT: Specifying individual options disables ALL default options. To run defaults + extras: opt_design -retarget -propconst -sweep -bufg_opt -shift_register_opt -bram_power_opt -remap


place_design — Placement

Directive Decision Table
ScenarioDirectiveDesigns Benefited
DefaultDefaultAll
Deep explorationExploreAll (higher effort detail placement)
Aggressive explorationAggressiveExploreTiming-critical designs
RAM/DSP denseWLDrivenBlockPlacementMany BRAM/DSP blocks
RAM/DSP denseEarlyBlockPlacementRAM/DSP as placement anchors
Timing meets post-place but fails post-routeExtraNetDelay_highLong-distance nets, high fanout
Timing meets post-place but fails post-routeExtraNetDelay_lowSame, lower pessimism
CongestionAltSpreadLogic_highHigh connectivity → congestion
Congestion (moderate)AltSpreadLogic_medium/lowModerate congestion
SSI congestionSSI_SpreadLogic_high/lowSSI devices
SSI SLR balancingSSI_SpreadSLLsBalance SLL connections across SLRs
SSI SLR balancingSSI_BalanceSLLsBalance SLLs between SLRs
SSI SLR balancingSSI_BalanceSLRsBalance cell count between SLRs
SSI high utilizationSSI_HighUtilSLRsPack logic closer in each SLR
Extra post-place optExtraPostPlacementOptAll
Alternate timingExtraTimingOptAlternative timing-driven algorithms
ML-predicted bestAuto_1Highest confidence ML prediction
ML-predicted 2ndAuto_2Second best ML prediction
ML-predicted 3rdAuto_3Third best ML prediction
Fast iterationRuntimeOptimizedTrade QoR for speed
FastestQuickNon-timing-driven, minimum legal placement
QoR-suggestedRQSUses report_qor_suggestion
Key Options
OptionEffect
-post_place_optExtra timing optimization after placement
-timing_summaryForce STA-based timing summary (more accurate, slower)
-no_timing_drivenWirelength-only placement (fastest)
-no_psipDisable Physical Synthesis in Placer
-no_bufg_optDisable BUFG insertion during placement
-sll_align_optAlign SLL registers for SSI multi-die parts
-ultrathreadsParallel placement across SLRs (UltraScale+ SSI)
-unplaceRemove all non-fixed placements

phys_opt_design — Physical Optimization

Two Modes
  • Post-place: More aggressive, based on placement timing estimates
  • Post-route: More conservative, uses actual routed delays, auto-updates routing

TIP: Post-route phys_opt is most effective on designs with few failing paths (WNS > -0.200 ns). Designs with > 200 failing endpoints see little improvement.

Directive Decision Table
ScenarioDirectiveEffect
DefaultDefaultDefault optimizations
Deep explorationExploreMulti-pass + SLR crossing + critical path final phase
Explore + hold fixExploreWithHoldFixExplore + hold violation fixing
Explore + aggressive holdExploreWithAggressiveHoldFixExplore + aggressive hold fixing
Most aggressiveAggressiveExploreAllows WNS degradation in SLR crossing opt
Alternative replicationAlternateReplicationDifferent critical cell replication algorithm
Fanout-focusedAggressiveFanoutOptAggressive fanout optimization
Add retimingAddRetimeDefault flow + register retiming
Aggressive + retimingAlternateFlowWithRetimingAggressive replication + DSP/BRAM opt + retiming
FastRuntimeOptimizedFewest iterations
Key Individual Options

Setup optimization (post-place defaults):

OptionDescription
-fanout_optReplicate high-fanout net drivers (default post-place)
-critical_cell_optReplicate cells in failing paths (default post-place)
-placement_optRe-place critical path cells (default both modes)
-dsp_register_optMove registers in/out of DSP cells
-bram_register_optMove registers in/out of BRAM cells
-uram_register_optMove registers in/out of UltraRAM cells
-shift_register_optExtract SRL end stages to improve timing
-restruct_optSwap LUT connections to reduce logic levels
-lut_optSingle LUT movement/replication
-clock_optUseful clock skew optimization

Routing optimization (post-route defaults):

OptionDescription
-routing_optRe-route critical nets/pins (default post-route)
-slr_crossing_optOptimize inter-SLR paths (default both modes)
-critical_pin_optRemap LUT pins to faster physical pins

Hold fixing:

OptionDescription
-hold_fixFix hold violations above threshold
-aggressive_hold_fixFix more hold violations
-sll_reg_hold_fixSLL register hold fix (UltraScale+)
-insert_negative_edge_ffsInsert neg-edge FFs to split hold paths

Other:

OptionDescription
-retimeRegister retiming (Versal)
-interconnect_retimeInterconnect retiming by FF movement (Versal)
-force_replication_on_nets <nets>Force driver replication on specific nets
-equ_drivers_optRewire loads to equivalent drivers
-casc_optLUT cascade optimization (Versal)
-cell_group_optCritical fanin cone group opt (Versal)
-bram_enable_optReverse BRAM power opt on timing-critical enable paths
-path_groups <args>Limit optimization to specific path groups
-tns_cleanupAllow slack degradation if WNS maintained (with -slr_crossing_opt)

route_design — Routing

Directive Decision Table
ScenarioDirectiveEffect
DefaultDefaultDefault routing
Explore alternativesExploreExplore different critical path routes (signoff timing)
Aggressive explorationAggressiveExploreMore aggressive thresholds
No timing relaxationNoTimingRelaxationNever relax timing goals
More iterationsMoreGlobalIterationsDetailed timing analysis all stages
Emphasize delayHigherDelayCostTrade compile time for delay optimization
FastRuntimeOptimizedFewest iterations
CongestionAlternateCLBRoutingAlternate CLB routing algorithms
FastestQuickNon-timing-driven, minimum legal routing
QoR-suggestedRQSUses report_qor_suggestion
Key Options
OptionEffect
-tns_cleanupFocus on WNS, fix non-critical failing paths. Use before post-route phys_opt
-preservePreserve existing routes, route remaining. For pre-routing critical nets
-nets <net_objects>Route only specified nets
-pins <pin_objects>Route only specified pins
-delayRoute individual nets with smallest delay
-auto_delayRoute with timing-constraint-driven budgets (use with -nets/-pins)
-max_delay <ps> / -min_delay <ps>Target delay for pin routing (use with -pins)
-unrouteRemove routing (entire design or specific nets/pins)
-timing_summaryForce STA timing summary (more accurate)
-finalizeComplete partially routed connections (ECO flow)
-ecoIncremental ECO routing (faster after small changes)
-ultrathreadsParallel routing (faster, slight variation between runs)
-no_timing_drivenDisable timing-driven routing (feasibility test only)
Pre-routing Critical Nets Pattern
tcl
# Route top 10 critical nets first with minimum delay
set preRoutes [get_nets -of [get_timing_paths -max_paths 10]]
route_design -nets [get_nets $preRoutes] -delay
# Then route rest preserving critical routes
route_design -preserve

power_opt_design — Power Optimization

tcl
# Basic usage (optimize entire design)
power_opt_design
# Control scope
set_power_opt -include_cells [get_cells inst_A]
set_power_opt -exclude_cells [get_cells inst_B]
set_power_opt -cell_types {BRAM}
set_power_opt -clocks {clk1}

Note: Not supported for Versal. BRAM power opt is skipped if already done by opt_design.


Incremental Implementation

Setup
tcl
# Non-Project Mode
read_checkpoint -incremental <reference_routed.dcp>
# Automatic incremental (recommended)
read_checkpoint -incremental -auto_incremental <reference.dcp>
# Force incremental even if criteria not met
read_checkpoint -incremental -force_incr <reference.dcp>
# Fix specific objects
read_checkpoint -incremental <ref.dcp> -fix_objects [all_rams]

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

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 17 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
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/shinei-nouzen-arch/fpga-agent/vivado-impl/badge)](https://verified-skill.com/skills/shinei-nouzen-arch/fpga-agent/vivado-impl)

Something wrong with this skill or its page? Tell us.