Пример #1
0
def setup_example_fig1():
    while True:
        G = Dep('Fig1')
        G.Latency = {}
        for k in range(1,13):
            G.Nodes.append('n'+str(k))
            if k != 7:
                G.Latency['n'+str(k)] = 2
            else:
                G.Latency['n7'] = 1
        edges =[('n1','n3'),('n1','n5'),('n1','n6'),\
                ('n3','n4'),('n4','n7'),('n5','n8'),\
                ('n8','n10'),('n10','n11'),('n11','n12'),\
                ('n2','n8'),('n9','n10'),('n6','n11'),\
                ('n1','n4')]
        dist = []
        for k in edges:
            dist.append(0)        
        G.do_init_work(edges,dist)
        print '-------------------------------------'
        print G
        G.dot_graph()
        with open('digraph_fig1.dot','w') as file:
            file.write(G.dot_graph())
        G.typeof['n1'] = 'LdSt'
        G.typeof['n2'] = 'LdSt'
        G.typeof['n9'] = 'LdSt'
        G.typeof['n7'] = 'LdSt'
        G.typeof['n12'] = 'LdSt'
        G.typeof['n4'] = 'Mpy'
        G.typeof['n6'] = 'Mpy'
        G.typeof['n8'] = 'Mpy'
        G.typeof['n11'] = 'Mpy'
        for k in G.Nodes:
            if k not in G.typeof:
                G.typeof[k] = 'Alu'
        O = []
        G.Order([k for k in G.Nodes],O)
        G.MII = 4
        S = Scoreboard(1,1,2,G.MII)
        myO = [k for k in O]
        G.Early_Startu = {}
        G.Late_Startu = {}
        if G.schedule(myO,S) == True:
            print 'Order:', '<'+','.join(O)+'>'
            print S
            print '-------------------------------------'
            break
        G.MII += 1
Пример #2
0
def setup_example_fig7():
    G = Dep('Fig7')
    G.Latency = {}
    for k in 'ABCDEFGHIJKLM':
        G.Nodes.append(k)
        G.typeof[k] = 'Alu'
    for k in G.Nodes:
        G.Latency[k] = 2
    edges = ('AC','CF','DF','FA','AD','BD',
             'BE','DG','GJ','JM','FI','IL',
             'IG','IM','EH','HK','HJ')
    dist = []
    for k in edges:
        if k == 'FA': dist.append(1)
        elif k == 'IG' : dist.append(1)
        else: dist.append(0)
    roots = ['A']
    G.do_init_work(edges,dist,roots)
    print '-------------------------------------'
    print G
    with open('digraph_fig7.dot','w') as file:
        file.write(G.dot_graph())
    O = []
    G.Order(['A','C','D','F'],O)
    G.Order(['G','J','M','I'],O)
    G.Order(['B','E','H','K','L'],O)
    G.MII = 6
    while True:
        S = Scoreboard(4,4,4,G.MII)
        myO = [k for k in O]
        G.Early_Startu = {}
        G.Late_Startu = {}
        if G.schedule(myO,S) == True:
            print 'Order:', '<'+','.join(O)+'>'
            print S
            break
        G.MII += 1