RapidWright
RapidWright copied to clipboard
Various RWRoute cleanup/optimizations/refactoring
New functionality:
- Partial router can now cope with partially-routed nets. Previously, only nets which are fully unrouted (i.e. with no PIPs present) were considered for partial routing. Now, nets with one or more unrouted sink pins can be considered for routing by adding it to the
pinsToRoute
constructor argument. All existing routing on such nets are preserved (even incomplete routing that forms an antennae) and placed into the routing graph with their correct costs for use in routing new connections from the same net, but not available for any other nets to use. - Soft preserve mode of the partial router has also been augmented to support this functionality. When a net is unpreserved, it is not automatically ripped up -- its routing resources are simply exposed for other nets to use should they need to do so. The end result is that only the previously-preserved-net's connections containing overused resources will be rerouted.
- The act of preserving a net's routed nodes is done in parallel using
ParallelismTools
.
Fixes:
- Slack is computed correctly for timing-driven flows based on timing requirement; previously, the timing requirement was always set to be the maximum arrival time meaning that minimum slack was always zero.
- Optimized SLR crossings -- costing estimates improved for SLR-crossing connections, bounding box also enlarged if necessary to ensure that SLL can be reached
Refactors:
-
Routable
(interface) andRoutableNode
(class) merged and refactored into theRouteNode
abstract class. - New class
RouteNodeGraph
to encapsulate all routing graph operations, refactored out ofRWRoute
- New class
RouteNodeGraphTimingDriven
extendsRouteNodeGraph
with timing driven capabilities -
RWRoute
refactored to move subclass (e.g.PartialRouter
,RapidStreamRoute
) functionality into the subclass - As a result of the above point,
RWConfig
has had subclass specific options removed, replaced by constructor parameters to those subclasses. -
RoutingNode
refactored intoLightweightRouteNode
.
Unit Test Results
45 files 45 suites 15m 1s :stopwatch: 631 tests 622 :heavy_check_mark: 9 :zzz: 0 :x: 650 runs 641 :heavy_check_mark: 9 :zzz: 0 :x:
Results for commit 471d3480.
:recycle: This comment has been updated with latest results.