论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
SHAPE \* MERGEFORMAT
3.2 生成blif文件ABC中读入mv文件后形成AIG网络,要想输出blif文件,可进行如下操作:
SHAPE \* MERGEFORMAT
4 算法实现及举例
对网络中的功能node进行转换,以下是转换node从AIG功能到BDD功能的算法,对于网络只需要用一个遍历,把其所有node转换即可。
DdNode * cuddBddAndRecur( DdManager * manager, DdNode * f, DdNode * g)
{
DdNode *F, *fv, *fnv, *G, *gv, *gnv;
DdNode *one, *r, *t, *e;
unsigned int topf, topg, index;
statLine(manager); //循环次数加1
one = DD_ONE(manager); //返回manger->one,即常数结点1
//得到结点的正则状态,如果结点取过反,则返回没有取反的状态
F = Cudd_Regular(f);
G = Cudd_Regular(g);
if (F == G) {
if (f == g) return(f);
else return(Cudd_Not(one)); //Cudd_Not为取反
}
if (F == one) {
if (f == one) return(g);
else return(f);
}
if (G == one) {
if (g == one) return(f);
else return(g);
}
/* 检查缓存 */
if (F->ref != 1 || G->ref != 1) {
//如果已经有对f和g取与的情况,则直接返回
r = cuddCacheLookup2(manager, Cudd_bddAnd, f, g); if (r != NULL) return(r);
}
topf = manager->perm[F->index];
topg = manager->perm[G->index];