コード例 #1
0
ファイル: main.py プロジェクト: erfaneshrati/DFT
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()
コード例 #2
0
# -*- 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()


コード例 #3
0
ファイル: gnn.py プロジェクト: erfaneshrati/DFT
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