#include "debugInt.h" Ntk_Node_t * createNewLatchNode(Ntk_Network_t * ntk,char * name) { Var_Variable_t * var = Var_VariableAlloc(NIL(Hrc_Node_t),name); char * initName = util_strcat3(name,"$INIT",""); char * nextName = util_strcat3(name,"$NS",""); char * dataName = util_strcat3(name,"DATA",""); Var_Variable_t * initVar = Var_VariableAlloc(NIL(Hrc_Node_t),initName); Var_Variable_t * nextVar = Var_VariableAlloc(NIL(Hrc_Node_t),nextName); Var_Variable_t * dataVar = Var_VariableAlloc(NIL(Hrc_Node_t),dataName); Ntk_Node_t * newLatch = Ntk_NodeCreateInNetwork(ntk, name,var); Ntk_Node_t * newLatchInit = Ntk_NodeCreateInNetwork(ntk, initName,initVar); Ntk_Node_t * newLatchNS = Ntk_NodeCreateInNetwork(ntk, nextName,nextVar); Ntk_Node_t * newLatchData = Ntk_NodeCreateInNetwork(ntk, dataName,dataVar); Ntk_NodeDeclareAsLatch(newLatch, dataName,initName); Ntk_NodeDeclareAsShadow(newLatchNS,newLatch); return newLatch; } void addRowValueToTable(Tbl_Table_t * table,int val_i, int val_o) { int r = Tbl_TableAddRow(table); int c = 0; int val; Tbl_Entry_t *entry = Tbl_EntryAlloc(Tbl_EntryNormal_c); val = (val_i&1); printf("val %d : %d \n",c,val); Tbl_EntrySetValue(entry,val,val); Tbl_TableSetEntry(table, entry, r, c++, 0); entry = Tbl_EntryAlloc(Tbl_EntryNormal_c); val = ((val_i&2)>>1); printf("val %d : %d \n",c,val); Tbl_EntrySetValue(entry,val,val); Tbl_TableSetEntry(table, entry, r, c++, 0); entry = Tbl_EntryAlloc(Tbl_EntryNormal_c); val = ((val_i&4)>>2); printf("val %d : %d \n",c,val); Tbl_EntrySetValue(entry,val,val); Tbl_TableSetEntry(table, entry, r, c++, 0); val = ((val_i&8)>>3); printf("val %d : %d \n",c,val); Tbl_EntrySetValue(entry,val,val); Tbl_TableSetEntry(table, entry, r, c++, 0); c = 0; entry = Tbl_EntryAlloc(Tbl_EntryNormal_c); //val = (val_0&1); printf("val O %d : %d \n",c,val); Tbl_EntrySetValue(entry,val,val); Tbl_TableSetEntry(table, entry, r, c++, 1); entry = Tbl_EntryAlloc(Tbl_EntryNormal_c); val = ((val_o&2)>>1); printf("val %d : %d \n",c,val); Tbl_EntrySetValue(entry,val,val); Tbl_TableSetEntry(table, entry, r, c++, 1); val = ((val_i&4)>>2); printf("val %d : %d \n",c,val); entry = Tbl_EntryAlloc(Tbl_EntryNormal_c); Tbl_EntrySetValue(entry,val,val); Tbl_TableSetEntry(table, entry, r, c++, 1); } Tbl_Table_t * createNewTable(char * name) { Tbl_Table_t * table = Tbl_TableAlloc(); char * name1 = util_strcat3(name,"1",""); Var_Variable_t * var1 = Var_VariableAlloc(NIL(Hrc_Node_t),name1); char * initName1 = util_strcat3(name,"$INIT",""); char * nextName1 = util_strcat3(name,"$NS",""); char * dataName1 = util_strcat3(name,"DATA",""); Var_Variable_t * initVar1 = Var_VariableAlloc(NIL(Hrc_Node_t),initName1); Var_Variable_t * nextVar1 = Var_VariableAlloc(NIL(Hrc_Node_t),nextName1); Var_Variable_t * dataVar1 = Var_VariableAlloc(NIL(Hrc_Node_t),dataName1); char * name2 = util_strcat3(name,"2",""); Var_Variable_t * var2 = Var_VariableAlloc(NIL(Hrc_Node_t),name2); char * initName2 = util_strcat3(name,"$INIT",""); char * nextName2 = util_strcat3(name,"$NS",""); char * dataName2 = util_strcat3(name,"DATA",""); Var_Variable_t * initVar2 = Var_VariableAlloc(NIL(Hrc_Node_t),initName2); Var_Variable_t * nextVar2 = Var_VariableAlloc(NIL(Hrc_Node_t),nextName2); Var_Variable_t * dataVar2 = Var_VariableAlloc(NIL(Hrc_Node_t),dataName2); char * name3 = util_strcat3(name,"3",""); Var_Variable_t * var3 = Var_VariableAlloc(NIL(Hrc_Node_t),name3); char * initName3 = util_strcat3(name,"$INIT",""); char * nextName3 = util_strcat3(name,"$NS",""); char * dataName3 = util_strcat3(name,"DATA",""); Var_Variable_t * initVar3 = Var_VariableAlloc(NIL(Hrc_Node_t),initName3); Var_Variable_t * nextVar3 = Var_VariableAlloc(NIL(Hrc_Node_t),nextName3); Var_Variable_t * dataVar3 = Var_VariableAlloc(NIL(Hrc_Node_t),dataName3); Var_Variable_t * nd = Var_VariableAlloc(NIL(Hrc_Node_t),"ND"); Var_VariableSetPI(nd); Var_VariableSetPS(var1); Var_VariableSetPS(var2); Var_VariableSetPS(var3); Var_VariableSetNS(nextVar1); Var_VariableSetNS(nextVar2); Var_VariableSetNS(nextVar3); Tbl_TableAddColumn(table,var1,0); Tbl_TableAddColumn(table,var2,0); Tbl_TableAddColumn(table,var3,0); Tbl_TableAddColumn(table,nd,0); Tbl_TableAddColumn(table,dataVar1,1); Tbl_TableAddColumn(table,dataVar2,1); Tbl_TableAddColumn(table,dataVar3,1); addRowValueToTable(table,0, 1); addRowValueToTable(table,1, 2); addRowValueToTable(table,2, 4); addRowValueToTable(table,4, 3); addRowValueToTable(table,6, 4); addRowValueToTable(table,8, 4); Tbl_TableWriteBlifMvToFile(table,0,vis_stdout); } mdd_t * buildDummy3(mdd_manager * mddManager,Ntk_Network_t * ntk) { //Ntk_Node_t * node = createNewLatchNode(ntk,"E2"); createNewTable("E"); return NIL(mdd_t); }