C语言 在CUDD中操作从bif文件导入的BDD



我试图将bif文件导入CUDD包,从中创建BDD,然后执行一些操作。我已经设法使用ntr包导入bif文件。但是,我不知道应该如何访问生成的BDD中的任何变量或节点。

如果我为一个函数创建自己的BDD,我将创建变量,并且能够调用它们来执行不同的操作/操作。但是,对于bif导入,我所拥有的只是结果ddManager (dd)和布尔网络(net1)。有人知道如何调用单个变量/节点吗?请参阅下面的bif生成代码。谢谢!

NtrOptions *option; 
option = mainInit(); 
FILE *fp1; 
BnetNetwork *net1 = NULL; 
fp1 = fopen("C17.blif","r");
net1 = Bnet_ReadNetwork(fp1,1);
fclose(fp1);
DdManager *dd;
dd = Cudd_Init(0,0,CUDD_UNIQUE_SLOTS,CUDD_CACHE_SLOTS,0); 
Cudd_AutodynEnable(dd,CUDD_REORDER_SIFT);
int result;     
result = Ntr_buildDDs(net1,dd,option,NULL);

事实证明并没有那么糟糕。见下文。只需循环遍历布尔网络结构(net1),并使用BNET_OUTPUT_NODE标志查找输出。

  BnetNode *node;
  DdNode **outputArray; /* output array to store BDD for each output */
  outputArray = (DdNode**)malloc(numOutputs * sizeof(DdNode*));
  int outCount = 0;
    for (node = net1->nodes; outCount < numOutputs; node = node->next) {
    if (node->type == BNET_OUTPUT_NODE){
            outputArray[outCount] = node->dd;
            outCount = outCount + 1;
        }
    }

相关内容

  • 没有找到相关文章

最新更新