import json with open('output/error_nodes.json') as f: flat_error_nodes = json.load(f) error_nodes = {} for node, raw_node, generated_nodes in flat_error_nodes: if node not in error_nodes: error_nodes[node] = { 'raw_node': set(raw_node), 'generated_nodes': set(), } assert error_nodes[node]['raw_node'] == set(raw_node) error_nodes[node]['generated_nodes'].add(tuple(sorted(generated_nodes))) for node, error in error_nodes.items(): combined_generated_nodes = set() for generated_node in error['generated_nodes']: combined_generated_nodes |= set(generated_node) assert error['raw_node'] == combined_generated_nodes, (node, error) good_node = max(error['generated_nodes'], key=lambda x: len(x)) bad_nodes = error['generated_nodes'] - set((good_node, )) if max(len(generated_node) for generated_node in bad_nodes) > 1: assert False, node else: not_pcie = False for generated_node in bad_nodes: for wire in generated_node: if not wire.startswith('PCIE'): not_pcie = True if not_pcie: #print(node, good_node, map(tuple, bad_nodes)) print(repr((node, tuple(map(tuple, bad_nodes))))) pass else: #print(repr((node, map(tuple, bad_nodes)))) pass