-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Fix timing issues on FMCOMMS2 and AD9081/VCU118 #1909
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
…script Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
…Logic_high Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
ba373d6
to
2cc0018
Compare
Split into more atomic commits as requested by @acostina |
RetriggerCI |
# Additional configuration flags are: | ||
# - ADI_EXTRACT_PORTS - If set, extracts port properties from a predefined list | ||
# of IPs into 'ports_properties.txt'. | ||
# - ADI_GENERATE_BIN - If set, generates a binary bitstream file (.bin) | ||
# in addition to the .xsa hardware platform. | ||
# - ADI_GENERATE_UTILIZATION - If set, generates CSV and log files detailing | ||
# resource utilization for the design and specific IPs. | ||
# - ADI_GENERATE_XPA - If set, runs a Xilinx Power Analysis (XPA) and generates | ||
# a summary report. | ||
# - ADI_MAX_OOC_JOBS - Specifies the number of parallel jobs to use for | ||
# Out-of-Context (OOC) synthesis. | ||
# - ADI_MAX_THREADS - Specifies the maximum number of threads for Vivado | ||
# operations. Default value is 8. | ||
# - ADI_NO_BITSTREAM_COMPRESSION - If set, disables compression of the final | ||
# bitstream file. | ||
# - ADI_POST_ROUTE_SCRIPT - Specifies the path to a Tcl script to be executed | ||
# after the routing design step. | ||
# - ADI_POWER_OPTIMIZATION - If set to 1, enables power optimization during the | ||
# implementation run. | ||
# - ADI_PROJECT_DIR - Specifies a base directory for output files such as logs | ||
# and reports. | ||
# - ADI_SKIP_SYNTHESIS - If set, the entire procedure will exit before starting | ||
# synthesis. | ||
# - ADI_USE_OOC_SYNTHESIS - If set to 1, launches synthesis for OOC IP modules | ||
# in parallel. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be nice to have all of those described on the rst doc (build_hdl.rst
), not all of them are there
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good and everything builds fine, it would be nice to test it on hardware before merging.
scripts/auto_timing_fix.tcl
Outdated
if {$final_wns >= 0} { | ||
puts "INFO: ATF: auto timing fix SUCCESS after ${attempt} attempts - final WNS is ${final_wns} ns." | ||
} elseif {$final_wns <= $ADI_AUTOFIX_WNS_THRESHOLD} { | ||
puts "WARNING: ATF: WNS (${wns} ns) excedes threshold (${ADI_AUTOFIX_WNS_THRESHOLD} ns). Automatic fix aborted." |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
typo: exceeds.
puts "WARNING: ATF: WNS (${wns} ns) exceeds threshold (${ADI_AUTOFIX_WNS_THRESHOLD} ns). Automatic fix aborted."
Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Typo line 321: existing.
Add source files to an existing project.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I know it is not related to this commit, but maybe it could be added as well. It is not necessary the elseif in line 332, just an else satisfies the filter for constrs_1 and sources_1.
if {[string range $pfile [expr 1 + [string last . $pfile]] end] == "xdc"} {
add_files -norecurse -fileset constrs_1 $pfile
} else {
add_files -norecurse -fileset sources_1 $pfile
}
system_bd.tcl scripts are not using your BOARD_NAME variable. |
RetriggerCI |
Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
- use less space in jenkins due to checkpoints being large in size - status of ATF execution is visible by checkpoint file name Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
Signed-off-by: Pedro Mendonca <Pedro.Mendonca@analog.com>
RetriggerCI |
PR Description
This PR addresses timing violations observed across multiple projects following the upgrade to Vivado 2025.1, without requiring any HDL modifications.
After the upgrade, most designs exhibited hold violations, likely due to Vivado's aggressive optimization for setup timing. This behavior appears to shorten certain paths excessively, inadvertently introducing hold issues. While invoking phys_opt_design post-route helped resolve some violations automatically, it was not consistently effective, particularly in congested regions where rerouting options were limited.
To mitigate this, the Congestion_SpreadLogic_high strategy was adopted (alternatively _medium or _low depending on design needs). This approach encourages a more distributed placement of logic, which not only alleviates congestion but can also accelerate implementation due to the relatively low resource utilization. Although this spreading may introduce setup timing challenges, a subsequent phys_opt_design pass (or two) has proven highly effective at resolving them.
By spreading the logic and reducing congestion, Vivado gains greater flexibility during post-route optimization, improving its ability to correct HOLD violations without manual intervention.
Change log
PR Type
PR Checklist