3

BLIF ファイルを CUDD パッケージにインポートし、そこから BDD を作成してから、いくつかの操作を実行しようとしています。ntr パッケージを使用して BLIF ファイルをインポートできました。ただし、結果の BDD 内の変数またはノードにアクセスする方法がわかりません。

関数用に独自の BDD を作成した場合、変数を作成しながら変数を呼び出して、さまざまな操作/操作を行うことができます。ただし、BLIF インポートでは、結果の ddManager (dd) とブール ネットワーク (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);
4

1 に答える 1

0

それほど悪くはなかったことがわかりました。下記参照。Boolean Network 構造体 (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;
        }
    }
于 2016-10-24T22:06:20.620 に答える