Abc_CommandCut


使用该命令之前必须确保abc所保存的网络pNtk是经过strash后获得的aig网络,因为该命令只针对aig做cut。

何为Cut?

有几个点需要注意,
1、Cut是Nodes的集合,例如{Node1},{Node2,Node3},这都是Cut。
2、K-feasible Cut指的是Cut内的Nodes数量不超过K。
3、Node的K-feasible Cuts是指一个集合,是多个Cut的集合,例如把上面两个cut组合起来形成{{Node1},{Node2,Node3}}。
4、什么是dominated cut?如果有一个Cut1={a,b,c,d},另一个Cut2={a,b,c},那么Cut1就是dominated by Cut2。

以下讲解将以C17.aig电路作为例子,

在这里插入图片描述

首先要做的是为PIs生成trivial cut,即仅包含该节点自身的cut。
例如,节点G1的trivial cut为{{G1}}, 节点G2的trivial cut为{{G2}},。。。,以此类推至G5节点。

而后针对内部节点求cut,首先按需要是节点8,
实际上Abc_CommandCut命令如果不额外指定特殊-option的话,默认对内部节点有DAG node和Tree node之分。简单一点来说就是,如果节点的扇出个数大于1,则该节点为DAG节点,否则为Tree节点。注意,ABC对于Tree节点是不产生trivial cut的。

由于节点8是Tree node,所以不产生以自身{{8}}作为初始的trivial cut。接着就会向节点8的扇入节点寻找,即G1和G3。
需要注意的是,此时的G1和G3因为是PIs,所以他们的cut分别是,{{G1}},{{G3}}。

实际上,在向下寻找cut的过程中,ABC会首先判断扇入节点所包含的cut中是否有cut的size(节点个数)大于等于k-feasible,节点个数大于等于k的cut就被舍弃了,因为不舍弃的话,后面cut与cut组合以后必然是会大于k的。

举个例子,如果k=3,Cut_Fanin0 = {{x}, {x, y}, {x, a, b}},那么{x, a, b}是不会被考虑的,因为这个cut的size已经等于k了,在往下组合下去没有必要了。

言归正传,节点8的扇入节点的cut是各只包含自身的trivial cut,{{G1}},{{G3}}。那他俩一组合就变成{G1,G3},注意在ABC内部,cut内的节点是按节点序号从小到大排序的。
因为G1,G3是PIs没法再往下寻找了,所以此时节点8的cut为{{G1,G3}}。

节点9和节点8类似,不过节点9是DAG节点,所以会多一个自身的trivial cut。它最终的cut是{{9},{G3,G4}}。trivial cu不参与扇入的cut之间的合并操作。

节点10,DAG节点,扇入G2:{{G2}},扇入9:{{9},{G3,G4}},首先节点10会自己生成一个trivial cut,{{10}}。然后就是扇入之间的合并操作,这个合并操作就是与乘法运算,{G2}会先和{9}结合得到{G2,9},然后{G2}再和{G3,G4}结合得到{G2,G3,G4}。所以节点10最终的cut为{{10},{G2,9},{G2,G3,G4}}。

在以节点11举个例子,
首先,节点11不是DAG节点,所以不生成trivial cut。那么寻找节点11的扇入节点,8和10。
8的cut为{{G1,G3}},10的cut为{{10},{G2,9},{G2,G3,G4}}
那么理论上,此时节点11的cut应为{{G1,G3,10},{G1,G2,G3,9},{G1,G2,G3,G4}},因为cut和{G1,G2,G3,9}cut{G1,G2,G3,G4}的size大于等于k-feasible,所以这两个个cut会被丢弃。
所以节点11最终的cut应为{{G1,G3,10}}。

cut还有个Computer signature的概念,后续更新

为什么要使用signature?
寻找Node的Cuts集合过程中,尝试的Cuts的总数大大超过了发现的k-feasible cuts的数量。这使得检查cut的k可行性,以及测试单个cut是否已经存在和是否被其他cut dominated,成为cut计算的性能瓶颈。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值