def main(): parser = argparse.ArgumentParser() parser.add_argument("-ckt", type=str, required=True, help="name of the ircuit, e.g. c17, no extension") parser.add_argument("-tp", type=int, required=True, help="name of the ircuit, e.g. c17, no extension") parser.add_argument("-cpu", type=int, required=True, help="name of the ircuit, e.g. c17, no extension") args = parser.parse_args() print("\n======================================================") print("Run | circuit: {} | Test Count: {} | CPUs: {}".format( args.ckt, args.tp, args.cpu)) start_time = time.time() circuit = Circuit(args.ckt) circuit.read_circuit() circuit.lev() # inputnum = len(circuit.input_num_list) # limit = [0, pow(2, inputnum)-1] # for i in range(100): # b = ('{:0%db}'%inputnum).format(randint(limit[0], limit[1])) # list_to_logicsim = [] # for j in range(inputnum): # list_to_logicsim.append(int(b[j])) # circuit.logic_sim(list_to_logicsim) # print(b) # # print_nodes(circuit) # observability() need to follow controllability() circuit.SCOAP_CC() circuit.SCOAP_CO() # circuit.STAFAN_CS(100) # circuit.STAFAN_B() circuit.STAFAN(args.tp, num_proc=args.cpu) # circuit.co_ob_info() graph = circuit.gen_graph() suffix = round(math.log10(args.tp)) fname = ("10e" + str(suffix)) if (suffix % 1 == 0) else str(args.tp) fname = "./../data/graph/" + args.ckt + "_" + fname + ".graphml" print("Saving graph in ", fname) nx.write_graphml(graph, fname) print("Saved!") print("Total simulation ime: {:.2f} seconds".format(time.time() - start_time)) print()
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
def main(): parser = argparse.ArgumentParser() parser.add_argument("-ckt", type=str, required=True, help="name of the circuit, e.g. c17, no extension") parser.add_argument("-tp", type=int, required=False, help="name of the ircuit, e.g. c17, no extension") parser.add_argument("-cpu", type=int, required=False, help="name of the ircuit, e.g. c17, no extension") args = parser.parse_args() print("\n======================================================") print("Run | circuit: {} | Test Count: {} | CPUs: {}".format( args.ckt, args.tp, args.cpu)) print("======================================================\n") # start_time = time.time() circuit = Circuit(args.ckt) circuit.read_ckt() circuit.lev() """ Testing PFS """ circuit.get_full_fault_list() circuit.pfs_multiple(fname="c17_full_tp_b.txt", mode="b") """ Testing DFS for single pattern """ # test1 = circuit.gen_tp() # print(test1) # temp = circuit.dfs_single(test1) # print("------------------------") # print(temp) circuit.dfs_multiple_separate(fname="c17_full_tp_b.txt", mode='b') exit() # sim = Modelsim() # sim.project(circuit) # tp_fname = sim.gen_rand_tp(tp_count=200, tp_fname="sample-200.txt") # sim.gen_tb(tp_fname) # sim.simulation() # circuit.logic_sim_file(in_fname=tp_fname, out_fname="temp-output.log") # Test Circuit LogicSim # circuit.golden_test("../data/golden_IO/c499_golden_IO.txt") # check_gate_netlist(circuit, 3000) # c432 """ observation point insertion # circuit.SCOAP_CC() # circuit.SCOAP_CO() # circuit.STAFAN_CS(args.tp) # circuit.STAFAN_B() # circuit.TPI_stat(HTO_th=config.HTO_TH, HTC_th=config.HTC_TH) nodes_HTO = [] for node in circuit.nodes_lev: if (node.stat["SS@1"]=="HTO") or (node.stat["SS@1"]=="HTO"): nodes_HTO.append(node) for target in nodes_HTO: print("Target: {}\tB1={:.2f} B2={:.2f} \tdelta={}".format( target.num, target.B1, target.B0, circuit.NVIDIA_count(target, 0.05, 0.05)) ) """ """ for num, node in circuit.nodes.items(): print("========================") print("Node {} became OP".format(node)) circuit.NVIDIA_count(node, HTO_th=0.05, HTC_th=0.05) """ # print(circuit) exit() circuit.STAFAN(args.tp, num_proc=args.cpu) graph = circuit.gen_graph() suffix = round(math.log10(args.tp)) fname = ("10e" + str(suffix)) if (suffix % 1 == 0) else str(args.tp) fname = "./../data/graph/" + args.ckt + "_" + fname + ".graphml" print("Saving graph in ", fname) nx.write_graphml(graph, fname) print("Saved!") print("Total simulation ime: {:.2f} seconds".format(time.time() - start_time)) print()