| #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; | |
| } |