gpt4 book ai didi

c - 操作从 CUDD 中的 BLIF 文件导入的 BDD

转载 作者:行者123 更新时间:2023-12-04 21:26:10 27 4
gpt4 key购买 nike

我正在尝试将 BLIF 文件导入 CUDD 包,从中创建 BDD,然后执行一些操作。我已经设法使用 ntr 包导入 BLIF 文件。但是,我无法弄清楚我应该如何访问生成的 BDD 中的任何变量或节点。

如果我为一个函数创建了自己的 BDD,我会随手创建变量并且能够调出它们来执行不同的操作/操作。但是,通过 BLIF 导入,我所拥有的只是生成的 ddManager (dd) 和 bool 网络 (net1)。有谁知道如何调用各个变量/节点?请参阅下面的 BLIF 生成代码。谢谢!

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);

最佳答案

事实证明它并没有那么糟糕。见下文。只需遍历 bool 网络结构 (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;
}
}

关于c - 操作从 CUDD 中的 BLIF 文件导入的 BDD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39503058/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com