#include "ace.h" | |
#include "abc.h" | |
int calc_depth(Abc_Obj_t * obj) { | |
int i, depth; | |
Abc_Obj_t * fanin; | |
depth = 0; | |
switch (Abc_ObjType(obj)) { | |
case ABC_OBJ_NODE: | |
case ABC_OBJ_PO: | |
case ABC_OBJ_BI: | |
Abc_ObjForEachFanin(obj, fanin, i) | |
{ | |
Ace_Obj_Info_t * fanin_info = Ace_ObjInfo(fanin); | |
depth = MAX(depth, fanin_info->depth); | |
} | |
return (depth + 1); | |
default: | |
return 0; | |
} | |
} | |
int ace_calc_network_depth(Abc_Ntk_t * ntk) { | |
int i, depth; | |
Abc_Obj_t * obj; | |
Vec_Ptr_t * nodes; | |
//nodes = Abc_NtkDfsSeq(ntk); | |
nodes = Abc_NtkDfs(ntk, TRUE); | |
depth = 0; | |
Vec_PtrForEachEntry(nodes, obj, i) | |
{ | |
Ace_Obj_Info_t * info = Ace_ObjInfo(obj); | |
info->depth = calc_depth(obj); | |
depth = MAX(depth, info->depth); | |
} | |
return depth; | |
} |