Description
ACE is reporting a routing error, how do I debug what is going wrong?
Answer
There are several reports that you can use to debug the issue yourself. These are listed below. If you need help from Achronix to find a solution, the following information is critical in debugging routing issues. Please collect as much of this information as possible and send it to Achronix to aid in your debug. The reports can be found in your <implementation>/reports/
directory or in some cases <implementation>/.debug/
directory.
- Make note of any other warnings or errors reported before the routing error.
- ACE Routing Report
- This report summarizes the routing, and lists the type of errors (if any). If there are overflows or unroutable segments, the nets are listed here. Additionally, there is clock routing information.
- The routing report can be found in
<implementation>/.debug/<project>_routing.html
or view it in ACE. - If ACE errors out before printing the Routing report, simply run '
report_routing
' in the TCL console. - After reading this report you should be able to determine what kind of routing error has occurred, and if the problematic nets are data routes, clock routes, or both.
- Any placement constraints in your PDC file. These should be studied to make sure the placement constraints are not causing problems.
- Especially make note of any unusual constraints like placing a data signal on a clock pin, or a clock signal on a data pin.
- Also make note of any constraints that request ACE to route a data signal on the clock network, as this can affect routing.
- If routing errors are occurring close to the I/O pins (you can look at overflow and missing segment locations in the floorplanner perspective of ACE), pin placement should be considered.
- SDC timing constraints
- Check any clock definitions, and make sure all clocks are defined properly. If using generated clocks, make sure these are defined using
create_generated_clock
in the SDC. - Check any other timing constraints, especially any timing exceptions.
- Check any clock definitions, and make sure all clocks are defined properly. If using generated clocks, make sure these are defined using
- Clock report
- This report lists all the clocks, their definitions as understood by ACE, their relationships, and shows a summary of all the clocks as routed in each clock region in the device.
- The clock report can be found in
<implementation>/reports/<project>_clocks_<flow_step>.txt
or you can view the .html version of the reports in ACE. - If a clock report is not generated, simply run '
report_clocks
' in the TCL console to print out information on the clocks in the design, or 'report_regions
' to print a summary of clock usage in each region. - You can use the report to make sure your design does not over subscribe the clock network.