pnr2dot.py 文件源码

python
阅读 19 收藏 0 点赞 0 评论 0

项目:SMT-PNR 作者: cdonovick 项目源码 文件源码
def generate_dot(fab_dims, CLBs, CBr, CBb, SB, paths, filename):
    G = pgv.AGraph(name=filename, directed=True)
    #G.node_attr['fixedsize']='true'
    G.node_attr['shape'] = 'box'
    create_all_CLBs(fab_dims, CLBs, G)
    for cb in CBr:
        pos, name = parse_name(cb, (__bias_amount,0))
        G.add_node(name)
        n = G.get_node(name)
        n.attr['pos'] = '{},{}!'.format(__scale_factor*pos[0], __scale_factor*pos[1])
    for cb in CBb:
        pos, name = parse_name(cb, (0,__bias_amount))
        G.add_node(name)
        n = G.get_node(name)
        n.attr['pos'] = '{},{}!'.format(__scale_factor*pos[0], __scale_factor*pos[1])
    for s in SB:
        pos, name = parse_name(s, (__bias_amount,__bias_amount))
        G.add_node(name)
        n = G.get_node(name)
        n.attr['pos'] = '{},{}!'.format(__scale_factor*pos[0], __scale_factor*pos[1])

    #now make connections
    for path in paths:
        for i in range(0, len(path)-1):
            if len(path[i]) > __cutoff:
                n1 = path[i][0:__cutoff+1]
            else:
                n1 = path[i]
            if len(path[i+1]) > __cutoff:
                n2 = path[i+1][0:__cutoff+1]
            else:
                n2 = path[i+1]
            G.add_edge(n1, n2)

    #write to file
    G.write(filename)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号