Skip to content

Set impl_1 strategy before sourcing pre-synth Tcl#133

Open
merkelmarrow wants to merge 1 commit into
Xilinx:devfrom
merkelmarrow:fix/rm-impl-strategy-override-order
Open

Set impl_1 strategy before sourcing pre-synth Tcl#133
merkelmarrow wants to merge 1 commit into
Xilinx:devfrom
merkelmarrow:fix/rm-impl-strategy-override-order

Conversation

@merkelmarrow

Copy link
Copy Markdown

In slash_project_build.tcl, the default implementation strategy was applied to impl_1 after the user's pre-synth Tcl scripts were sourced. Because set_property strategy ... resets every STEPS.* option on the run to the strategy's defaults, any per-step directive a pre-synth script set was silently removed before launch_runs impl_1.

This moves the strategy assignment ahead of the pre-synth sourcing loop so the strategy is the baseline and pre-synth scripts can override individual step options on top of it.

Testing pending.

Setting the run strategy resets all STEPS.* options to the strategy
defaults, so applying it after the pre-synth scripts silently removes
any per-step directive overrides (STEPS.*.ARGS.DIRECTIVE) a user set on
impl_1. Apply the default strategy first so pre-synth scripts can
override individual step options on top of it.

Signed-off-by: Marco Blackwell <mblackwe@amd.com>
@merkelmarrow merkelmarrow changed the title fix: set impl_1 strategy before sourcing pre-synth Tcl Set impl_1 strategy before sourcing pre-synth Tcl Jun 16, 2026
@merkelmarrow

Copy link
Copy Markdown
Author

Testing

Ran a full slashkit link -p hw build of a single-master RTL kernel with the fix, passing a pre-synth Tcl that overrides the phys_opt and route directives on impl_1:

set_property STEPS.PHYS_OPT_DESIGN.ARGS.DIRECTIVE Explore [get_runs impl_1]
set_property STEPS.ROUTE_DESIGN.ARGS.DIRECTIVE  Explore [get_runs impl_1]

The build log shows the strategy is now applied before the pre-synth Tcl runs, and the override sits on top of the defaults.

PRESYNTH: strategy            = Congestion_SSI_SpreadLogic_high
PRESYNTH: phys_opt directive before = AggressiveExplore   (strategy default)
PRESYNTH: route   directive before = AlternateCLBRouting  (strategy default)
PRESYNTH: phys_opt directive after  = Explore             (override applied)
PRESYNTH: route   directive after  = Explore             (override applied)

The real impl_1 then executed with the overridden directives and the build completed and produced a vbin. In comparison, an earlier build without the fix ran phys_opt_design -directive AggressiveExplore and route_design -directive AlternateCLBRouting, the strategy defaults, with the override discarded.

@merkelmarrow merkelmarrow marked this pull request as ready for review June 22, 2026 07:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant