#include "ace.h" #include "depth.h" #include "base/abc/abc.h" int calc_depth(Abc_Obj_t * obj); 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(Abc_Obj_t*, nodes, obj, i) { Ace_Obj_Info_t * info = Ace_ObjInfo(obj); info->depth = calc_depth(obj); depth = MAX(depth, info->depth); } Vec_PtrFree(nodes); return depth; }