|
|
|
|
@ -652,11 +652,11 @@ class Circuit:
@@ -652,11 +652,11 @@ class Circuit:
|
|
|
|
|
region.append(n) |
|
|
|
|
yield stem, region |
|
|
|
|
|
|
|
|
|
def dot(self, format='svg', graph_attr={}, line_labels={}): |
|
|
|
|
def dot(self, tlib: 'TechLib', format='svg', graph_attr={}, line_labels={}): |
|
|
|
|
from graphviz import Digraph |
|
|
|
|
dot = Digraph(format=format, graph_attr={'rankdir': 'LR', 'splines': 'true', 'size': '10', 'ranksep': '0.1'} | graph_attr) |
|
|
|
|
|
|
|
|
|
s_dict = dict((n, i) for i, n in enumerate(self.s_nodes)) |
|
|
|
|
s_dict = dict((n, i) for i, n in enumerate(self.s_nodes(tlib))) |
|
|
|
|
node_level = np.zeros(len(self.nodes), dtype=np.uint32) |
|
|
|
|
level_nodes = defaultdict(list) |
|
|
|
|
for n, lv in self.topological_order_with_level(): |
|
|
|
|
@ -679,7 +679,7 @@ class Circuit:
@@ -679,7 +679,7 @@ class Circuit:
|
|
|
|
|
reader = f'{l.reader.index}:i{l.reader_pin}' if len(l.reader.ins)>1 else f'{l.reader.index}' |
|
|
|
|
label = str(line_labels.get(l, l.index)) |
|
|
|
|
if node_level[l.driver] == node_level[l.reader]: |
|
|
|
|
s.node(f'_{l.index}_') |
|
|
|
|
dot.node(f'_{l.index}_') |
|
|
|
|
dot.edge(driver, f'_{l.index}_', style='dotted', label=label) |
|
|
|
|
dot.edge(f'_{l.index}_', reader, style='dotted', label=label) |
|
|
|
|
elif node_level[l.driver] > node_level[l.reader]: |
|
|
|
|
|