【Hmetis图分割处理网表-具体划分 以net为节点构建超图】

前言

粒度选取

论文Net2,Each Designs的Netlist的Cells,量级在20k左右。

  1. 而根据cell划分的粒度100,200,500,1000,2000,得到最终的Clusters是用cells的数量除以上述粒度.假设cells的数量是20k,那么所划分的clusters的数量在【10,200】。
  2. 根据超边的粒度500,1000,2000.得到的Clusters是由nets的数量除以上述粒度。

本实验得到的超图格式:

[超边数量] [结点数量]
超边1
超边2
超边3
。。。
在这里插入图片描述

而由前面工作,所生成的超图文件是以net为结点,gate为超边。因此所参考的net粒度是500,1000,2000。根据统计信息,下面是量级,并不是准确的平均值。

design net数量 超边数量
b11 400 400
b12 800 800
b13 200 200
b14 3000 3000
b17 14000 14000
b20 8000 8000
b21 7500 7500
b22 13000 13000

而论文数据都是:20000左右。且划分粒度在500,1000,2000,得到的划分clusters数量在10-200。

目标

  1. 需要将net为节点进行超图划分,然后给定net name知道划分在哪个块。_net_P[net_name] = partID
  2. 需要将gate为节点进行超图划分,然后给定gate name知道划分在哪个块。_net_P[gate_name] = partID

hmetis划分

输入输出

在这里插入图片描述在这里插入图片描述

划分大小

hmetis划分是mltilevel recursive bisection,假设划分npart为2的幂次方的个数,划分后的结果的二进制就是它的划分路径!支持的可执行文件是shmetis/hmetis。
经过和老师讨论,需要将粒度划小一点。比如100,200.

下面就对粒度为100的进行划分。

划分的块数 = 节点数(nums)除以 划分一块的粒度大小(100)

import subprocess
import pandas as pd
'''
    本文件对超图进行切割,按照节点数 除以 100,200
    使用b11-22的mode 0的超图
    shmetis
'''
res_list=[]
name = ["file","kway"]
cluster = 20
path = "partition/hypergraph_net_" + str(cluster) + "/"
for base in range(11,23):
    if base ==16 or base==15 or base==18 or base==19:
        continue
    for clock in range(0,4):
        for mode in range(0,1):
            place_name = "b"+str(base)+"_"+str(clock)+"_mode_"+str(mode)
            filepath = path + place_name
            with  open(filepath) as f:
                nodeNetstr = f.readline()
                f.close()
            listNetNode = nodeNetstr.split(" ")
            part = int(int(listNetNode[1]) / cluster)
            res_list.append([place_name,part])
            cmd = "partition/shmetis " + filepath + " " + str(part) + " 5"
            subprocess.run(cmd,shell=True)
            print(cmd)  
res_csv = pd.DataFrame(columns = name,data = res_list
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涛歌依旧fly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值