def main(): parser = argparse.ArgumentParser() parser.add_argument("-ckt", type=str, help="name of the ircuit, e.g. c17, no extension") args = parser.parse_args() circuit = Circuit(args.ckt) circuit.read_circuit() circuit.lev() #observability() need to follow controllability() # circuit.controllability() circuit.SCOAP_CC() # circuit.observability() circuit.SCOAP_CO() circuit.STAFAN_CS(100) circuit.STAFAN_B() # circuit.STAFAN(1, num_proc=1) circuit.co_ob_info() graph = circuit.gen_graph()
# -*- coding: utf-8 -*- from circuit import Circuit from atpg_v0 import ATPG import pdb ckt = "c17" circuit = Circuit(ckt) circuit.read_circuit() circuit.lev() #observability() need to follow controllability() circuit.controllability() circuit.observability() # circuit.STAFAN_CS(7000) # circuit.STAFAN_B() circuit.STAFAN(10000, num_proc=2) circuit.co_ob_info() graph = circuit.gen_graph()
def load_data_with_model(): """ This function loads the circuit graph, then returns the features, labels, model, split train/test sets """ # Load the circuit circuit = Circuit(options.circuit) circuit.read_circuit() circuit.lev() circuit.STAFAN(10000, num_proc=8) circuit.co_ob_info() graph = circuit.gen_graph() g = DGLGraph(graph) # Extract the unique gate types present in the circuit for creating the labels if options.objective == "level": all_types = [] for n in circuit.nodes_lev: n_num_trans = circuit.node_ids.index(n.num) if n.gtype not in all_types: all_types.append(n.gtype) features = np.zeros((len(circuit.nodes_lev), len(all_types))) else: raise ValueError('The objective ' + options.objective + ' is not available') labels = np.zeros(len(circuit.nodes_lev), dtype=np.float32) for n in circuit.nodes_lev: n_num_trans = circuit.node_ids.index(n.num) if options.objective == "level": # features[n_num_trans, all_types.index(n.gtype)] = 1.0 labels[n_num_trans] = circuit.nodes_lev[n_num_trans].lev if options.objective == "C1": labels[n_num_trans] = circuit.nodes_lev[n_num_trans].C1 random_bools = np.random.choice(a=[False, True], size=(len(circuit.nodes_lev)), p=[0.2, 0.8]) train_mask = th.BoolTensor(random_bools).cuda() test_mask = th.BoolTensor(np.invert(random_bools)).cuda() features = th.FloatTensor(features).cuda() if options.problem == "regression": labels = th.FloatTensor(labels).cuda() if options.model == "VanillaGCN": net = VanillaGCN(feature_dim=features.shape[1], output_dim=1, weight_dim=options.weight_dim, depth=options.depth).cuda() if options.model == "LSTMGCN": net = LSTMGCN(feature_dim=features.shape[1], output_dim=1, weight_dim=options.weight_dim, depth=options.depth).cuda() if options.problem == "classification": labels = th.LongTensor(labels).cuda() if options.model == "VanillaGCN": net = VanillaGCN(feature_dim=features.shape[1], output_dim=len(np.unique(labels.cpu().numpy())), weight_dim=options.weight_dim, depth=options.depth).cuda() if options.model == "LSTMGCN": net = LSTMGCN(feature_dim=features.shape[1], output_dim=len(np.unique(labels.cpu().numpy())), weight_dim=options.weight_dim, depth=options.depth).cuda() print(np.unique(labels.cpu().numpy())) return g, features, labels, train_mask, test_mask, net