diff --git a/src/lclayout/graphrouter/inspect.py b/src/lclayout/graphrouter/inspect.py index 6e760df604edb9e712a4db5bc3001f21cd423f5f..1f8aee19c29b99b27ed853e1ded3ebf2e2831ca2 100644 --- a/src/lclayout/graphrouter/inspect.py +++ b/src/lclayout/graphrouter/inspect.py @@ -8,6 +8,7 @@ Wrap a graph router and add visual inspection capabilities. import os import math import networkx as nx +from ..layout.layers import layermap from typing import * import logging @@ -41,7 +42,8 @@ class InspectRouter(GraphRouter): solutions = self.sub_graphrouter.route(routing_problem) for routes in solutions: - self._inspect(routes) + if routes: + self._inspect(routes) yield routes self.iteration_count += 1 @@ -53,11 +55,17 @@ class InspectRouter(GraphRouter): def _plot_to_file(self, routes: Dict[Any, nx.Graph]): path = os.path.join(self.output_dir, f"routing_iter_{self.iteration_count:04}.png") + # Compute offsets for pseudo 3D plotting. + layer_names = sorted(layermap.keys(), key=lambda n: layermap[n][0]) + layer_offset = {n: i for i, n in enumerate(layer_names)} + + # Find positions of graph nodes. pos = dict() for n in self._graph.nodes(): if not self._is_virtual_node_fn(n): layer, (x, y) = n - pos[n] = (x, y) + offset = 16*layer_offset[layer] + pos[n] = (x-offset, y+offset) def hue2rgb(hue: float) -> str: # Create a HTML color code from a hue value. diff --git a/src/lclayout/standalone.py b/src/lclayout/standalone.py index edd50c8874f1d5055cd16051b2a0ce345907a34b..4af7acacb97959c4992bd09f6eb9c650476cb8f8 100644 --- a/src/lclayout/standalone.py +++ b/src/lclayout/standalone.py @@ -924,6 +924,9 @@ def main(): level=log_level, filename=args.log) + # Silence very verbose matplotlib. + logging.getLogger("matplotlib").setLevel(logging.WARNING) + # Load netlist of cell cell_name = args.cell netlist_path = args.netlist