28#include "bdd/cudd/cuddInt.h"
34#undef DEBUG_PRINT_INIT_NTK
41static void Abc_FlowRetime_UpdateForwardInit_rec(
Abc_Obj_t * pObj );
42static void Abc_FlowRetime_VerifyBackwardInit(
Abc_Ntk_t * pNtk );
43static void Abc_FlowRetime_VerifyBackwardInit_rec(
Abc_Obj_t * pObj );
46static void Abc_FlowRetime_SimulateNode(
Abc_Obj_t * pObj );
47static void Abc_FlowRetime_SimulateSop(
Abc_Obj_t * pObj,
char *pSop );
50static void Abc_FlowRetime_GetInitToOrig(
Abc_Obj_t *pInit,
Abc_Obj_t **pOrig,
int *lag );
51static void Abc_FlowRetime_ClearInitToOrig(
Abc_Obj_t *pInit );
77 if (!
pManMR->fComputeInitState)
return;
102 pNtk = Abc_ObjNtk( pOrigObj );
104 Abc_NtkIncrementTravId( pNtk );
106 while( Abc_ObjIsBo(*pResult) || Abc_ObjIsLatch(*pResult) || Abc_ObjIsBi(*pResult) ) {
107 assert(Abc_ObjFaninNum(*pResult));
108 *pResult = Abc_ObjFanin0(*pResult);
110 if (Abc_NodeIsTravIdCurrent(*pResult))
112 Abc_NodeSetTravIdCurrent(*pResult);
114 if (Abc_ObjIsLatch(*pResult)) ++lag;
134 int i, n0=0, n1=0, nDC=0, nOther=0;
138 if (Abc_LatchIsInit0(pLatch)) n0++;
139 else if (Abc_LatchIsInit1(pLatch)) n1++;
140 else if (Abc_LatchIsInitDc(pLatch)) nDC++;
144 printf(
"\tinitial states {0,1,x} = {%d, %d, %d}", n0, n1, nDC);
146 printf(
" + %d UNKNOWN", nOther);
167 vprintf(
"\t\tupdating init state\n");
169 Abc_NtkIncrementTravId( pNtk );
172 pFanin = Abc_ObjFanin0(pObj);
173 Abc_FlowRetime_UpdateForwardInit_rec( pFanin );
176 Abc_LatchSetInit0( pObj );
178 Abc_LatchSetInit1( pObj );
180 Abc_LatchSetInitDc( pObj );
184void Abc_FlowRetime_UpdateForwardInit_rec(
Abc_Obj_t * pObj ) {
188 assert(!Abc_ObjIsPi(pObj));
190 if (Abc_ObjIsBo(pObj))
return;
193 if (Abc_NodeIsTravIdCurrent(pObj))
return;
194 Abc_NodeSetTravIdCurrent(pObj);
197 Abc_FlowRetime_UpdateForwardInit_rec( pNext );
200 Abc_FlowRetime_SimulateNode( pObj );
214static void Abc_FlowRetime_EvalHop_rec(
Hop_Man_t *pHop,
Hop_Obj_t *pObj,
int *f,
int *dc ) {
215 int f1, dc1, f2, dc2;
219 if (Hop_ObjIsConst1(pReg)) {
221 *f ^= (pReg == pObj ? 1 : 0);
227 if (Hop_ObjIsPi(pReg)) {
229 *f ^= (pReg == pObj ? 1 : 0);
235 if (Hop_ObjIsPo(pReg)) {
237 Abc_FlowRetime_EvalHop_rec(pHop, Hop_ObjChild0(pReg), f, dc);
242 if (Hop_ObjIsAnd(pReg)) {
243 Abc_FlowRetime_EvalHop_rec(pHop, Hop_ObjChild0(pReg), &f1, &dc1);
244 Abc_FlowRetime_EvalHop_rec(pHop, Hop_ObjChild1(pReg), &f2, &dc2);
246 *dc = (dc1 & f2) | (dc2 & f1) | (dc1 & dc2);
248 *f ^= (pReg == pObj ? 1 : 0);
267static inline void Abc_FlowRetime_SetInitValue(
Abc_Obj_t * pObj,
293void Abc_FlowRetime_SimulateNode(
Abc_Obj_t * pObj ) {
296 int i, rAnd, rVar, dcAnd, dcVar;
298 DdManager * dd = (DdManager*)pNtk->
pManFunc;
299 DdNode *pBdd = (DdNode*)pObj->
pData, *pVar;
303 assert(!Abc_ObjIsLatch(pObj));
304 assert(Abc_ObjRegular(pObj));
307 if (Abc_NtkIsStrash(pNtk) && Abc_AigNodeIsConst(pObj)) {
308 Abc_FlowRetime_SetInitValue(pObj, 1, 0);
311 if (!Abc_NtkIsStrash( pNtk ) && Abc_ObjIsNode(pObj)) {
313 Abc_FlowRetime_SetInitValue(pObj, 0, 0);
316 Abc_FlowRetime_SetInitValue(pObj, 1, 0);
322 if (!Abc_ObjIsNode(pObj)) {
323 pFanin = Abc_ObjFanin0(pObj);
325 Abc_FlowRetime_SetInitValue(pObj,
334 if ( Abc_NtkHasSop( pNtk )) {
335 Abc_FlowRetime_SimulateSop( pObj, (
char *)Abc_ObjData(pObj) );
340 else if ( Abc_NtkHasBdd( pNtk )) {
347 pVar = Cudd_bddIthVar( dd, i );
350 pBdd = Cudd_Cofactor( dd, pBdd, Cudd_Not(pVar) );
352 pBdd = Cudd_Cofactor( dd, pBdd, pVar );
358 rVar = (pBdd == Cudd_ReadOne(dd));
359 dcVar = !Cudd_IsConstant(pBdd);
361 Abc_FlowRetime_SetInitValue(pObj, rVar, dcVar);
367 else if ( Abc_NtkHasAig( pNtk ) && !Abc_NtkIsStrash( pNtk )) {
369 assert(Abc_ObjIsNode(pObj));
371 assert(Abc_ObjFaninNum(pObj) <= Hop_ManPiNum(pHop) );
375 Hop_ManPi(pHop, i)->fMarkA =
FTEST(pFanin,
INIT_1)?1:0;
379 Abc_FlowRetime_EvalHop_rec( pHop, (
Hop_Obj_t*)pObj->
pData, &rVar, &dcVar );
381 Abc_FlowRetime_SetInitValue(pObj, rVar, dcVar);
385 Hop_ManPi(pHop, i)->fMarkA = 0;
386 Hop_ManPi(pHop, i)->fMarkB = 0;
393 else if ( Abc_NtkIsStrash( pNtk )) {
398 pFanin = Abc_ObjFanin0(pObj);
401 if (pObj->fCompl0) rVar ^= 1;
404 pFanin = Abc_ObjFanin1(pObj);
407 if (pObj->fCompl1) rVar ^= 1;
410 if (!rAnd) dcAnd = 0;
412 Abc_FlowRetime_SetInitValue(pObj, rAnd, dcAnd);
417 else if ( Abc_NtkHasMapping( pNtk )) {
437void Abc_FlowRetime_SimulateSop(
Abc_Obj_t * pObj,
char *pSop ) {
440 int i, j, rAnd, rOr, rVar, dcAnd, dcOr, v;
450 pFanin = Abc_ObjFanin(pObj, j);
463 if (!rAnd) dcAnd = 0;
475 Abc_FlowRetime_SetInitValue(pObj, rOr, dcOr);
495 if (Abc_NtkIsStrash(pNtk)) {
497 }
else if (Abc_NtkHasMapping(pNtk))
505 pPi = Abc_NtkCreatePi(
pManMR->pInitNtk );
511 if (Abc_LatchIsInit0(pLatch)) {
513 Vec_PtrPush(vObj, pObj);
515 else if (Abc_LatchIsInit1(pLatch)) {
516 Vec_PtrPush(vObj, pPi);
519 Abc_ObjSetData( pLatch, pPi );
524 if (!Vec_PtrSize(vObj)) {
525 pManMR->fSolutionIsDc = 1;
528 pManMR->fSolutionIsDc = 0;
562 if (
pManMR->fSolutionIsDc) {
563 Vec_PtrFree(vDelete);
565 vprintf(
"\tno init state computation: all-don't-care solution\n");
571 assert(!Abc_ObjIsLatch(pObj));
572 assert(!Abc_ObjIsBo(pObj));
573 assert(!Abc_ObjIsBi(pObj));
577 while(Vec_PtrSize( vDelete )) {
578 pObj = (
Abc_Obj_t *)Vec_PtrPop( vDelete );
581 Vec_PtrFree(vDelete);
586 if (Abc_NtkIsLogic(
pManMR->pInitNtk))
589#if defined(DEBUG_PRINT_INIT_NTK)
592 if (Abc_ObjLevel( pObj ) < 2)
596 vprintf(
"\tsolving for init state (%d nodes)... ", Abc_NtkObjNum(
pManMR->pInitNtk));
600 if (Abc_NtkHasSop(
pManMR->pInitNtk))
603 if (Abc_NtkHasAig(
pManMR->pInitNtk))
607 if (Abc_NtkHasSop(
pManMR->pInitNtk))
610 pSatNtk =
pManMR->pInitNtk;
613 result =
Abc_NtkMiterSat( pSatNtk, (ABC_INT64_T)500000, (ABC_INT64_T)50000000, 0, NULL, NULL );
625 pInitObj = (
Abc_Obj_t*)Abc_ObjData( pObj );
626 assert( Abc_ObjIsPi( pInitObj ));
627 Abc_ObjSetCopy( pInitObj, pObj );
628 Abc_LatchSetInitNone( pObj );
637 if ((pObj = Abc_ObjCopy( pInitObj ))) {
638 if (
pManMR->pInitNtk->pModel[i] )
639 Abc_LatchSetInit1( pObj );
641 Abc_LatchSetInit0( pObj );
645#if defined(DEBUG_CHECK)
675 if (Abc_ObjIsBo(pOrigObj)) {
676 pInitObj =
FDATA(pOrigObj)->pInitObj;
677 assert(Abc_ObjIsPi(pInitObj));
684 Abc_FlowRetime_ClearInitToOrig( pBuf );
687 FDATA(pOrigObj)->pInitObj = pBuf;
690 Vec_PtrPush(vBo, pOrigObj);
691 Vec_PtrPush(vPi, pInitObj);
696 assert( Abc_ObjFanoutNum( pInitObj ) == 0);
701 assert(Vec_PtrSize(vPi) > 0);
708 FDATA(pOrigObj)->pInitObj = pInitObj;
709 Abc_ObjSetData(pOrigObj, pInitObj);
714 Abc_FlowRetime_UpdateBackwardInit_rec( pOrigObj );
749 if (Abc_ObjIsBi( pOrigObj ) || Abc_ObjIsBo( pOrigObj ) ) {
751 Abc_FlowRetime_ClearInitToOrig( pInitObj );
756 if (Abc_NtkIsStrash( pNtk )) {
758 if (Abc_AigNodeIsConst( pOrigObj )) {
761 if (!Abc_ObjIsNode( pOrigObj )) {
762 assert(Abc_ObjFaninNum(pOrigObj) == 1);
764 Abc_FlowRetime_ClearInitToOrig( pInitObj );
768 assert( Abc_ObjIsNode(pOrigObj) );
771 fCompl[0] = pOrigObj->
fCompl0 ? 1 : 0;
772 fCompl[1] = pOrigObj->
fCompl1 ? 1 : 0;
780 else if (Abc_NtkHasMapping( pNtk )) {
781 if (!pOrigObj->
pData) {
783 assert(Abc_ObjFaninNum(pOrigObj) == 1);
786 Abc_FlowRetime_ClearInitToOrig( pInitObj );
832 Abc_Obj_t *pOrigFanin, *pInitFanin, *pInitObj;
838 assert(!Abc_ObjIsPi(pOrigObj));
839 assert(!Abc_ObjIsPo(pOrigObj));
850 Abc_FlowRetime_SetInitToOrig( pInitObj, pOrigObj );
851 FDATA(pOrigObj)->pInitObj = pInitObj;
855 pInitObj =
FDATA(pOrigObj)->pInitObj;
866 assert(!Abc_ObjIsBo( pOrigFanin ));
867 pInitFanin = Abc_FlowRetime_UpdateBackwardInit_rec( pOrigFanin );
894void Abc_FlowRetime_VerifyBackwardInit(
Abc_Ntk_t * pNtk ) {
898 vprintf(
"\t\tupdating init state\n");
900 Abc_NtkIncrementTravId( pNtk );
903 if (Abc_ObjIsBo( pObj )) {
904 pFanin = Abc_ObjFanin0(pObj);
905 Abc_FlowRetime_VerifyBackwardInit_rec( pFanin );
909 printf(
"ERROR: expected val=%d care=%d and got val=%d care=%d\n",
918void Abc_FlowRetime_VerifyBackwardInit_rec(
Abc_Obj_t * pObj ) {
922 assert(!Abc_ObjIsBo(pObj));
923 assert(!Abc_ObjIsPi(pObj));
926 if (Abc_NodeIsTravIdCurrent(pObj))
return;
927 Abc_NodeSetTravIdCurrent(pObj);
929 if (Abc_ObjIsLatch(pObj)) {
931 if (Abc_LatchIsInit0(pObj))
933 else if (Abc_LatchIsInit1(pObj))
939 Abc_FlowRetime_VerifyBackwardInit_rec( pNext );
942 Abc_FlowRetime_SimulateNode( pObj );
958 Abc_Obj_t *pObj, *pNext, *pPartObj, *pPartNext, *pPo;
961 assert( Abc_NtkPoNum( pInitNtk ) == 1 );
968 assert(!Abc_ObjIsPo( pObj ));
970 if (i < cut && !pObj->fMarkA) {
971 pPartObj = Abc_NtkCreatePi( pPartNtk );
972 Abc_ObjSetCopy( pObj, pPartObj );
981 pPartNext = Abc_ObjCopy( pNext );
991 pPo = Abc_NtkCreatePo( pPartNtk );
992 pNext = Abc_ObjFanin0( Abc_NtkPo( pInitNtk, 0 ) );
993 pPartNext = Abc_ObjCopy( pNext );
998#if defined(DEBUG_CHECK)
1004 result =
Abc_NtkMiterSat( pPartNtk, (ABC_INT64_T)500000, (ABC_INT64_T)50000000, 0, NULL, NULL );
1034 vprintf(
"\tsearch for initial state conflict...\n");
1037 n = Vec_PtrSize(vNodes);
1040 Vec_PtrPush(vNodes, pObj);
1041 Vec_PtrReorder(vNodes, n);
1043#if defined(DEBUG_CHECK)
1052 low = 0, high = Vec_PtrSize(vNodes);
1053 while (low != high-1) {
1054 mid = (low + high) >> 1;
1066#if defined(DEBUG_CHECK)
1072 pObj = (
Abc_Obj_t*)Vec_PtrEntry( vNodes, low );
1074 vprintf(
" conflict term = %d ", low);
1077 printf(
"init ------\n");
1085 Abc_FlowRetime_GetInitToOrig( pObj, &pOrigObj, &lag );
1087 vprintf(
" <=> %d/%d\n", Abc_ObjId(pOrigObj), lag);
1090 printf(
"orig ------\n");
1096 Vec_IntPush( &pConstraint->
vNodes, Abc_ObjId(pOrigObj) );
1097 Vec_IntPush( &pConstraint->
vLags, lag );
1104 Vec_PtrPush(
pManMR->vInitConstraints, pConstraint );
1111 Vec_PtrFree( vNodes );
1159static void Abc_FlowRetime_ConnectBiasNode(
Abc_Obj_t *pBiasNode,
Abc_Obj_t *pObj,
int biasLag) {
1167 Vec_PtrPush( vNodes, pObj );
1168 Vec_IntPush( vLags, 0 );
1170 Abc_NtkIncrementTravId( pNtk );
1172 while (Vec_PtrSize( vNodes )) {
1173 pCur = (
Abc_Obj_t*)Vec_PtrPop( vNodes );
1174 lag = Vec_IntPop( vLags );
1176 if (Abc_NodeIsTravIdCurrent( pCur ))
continue;
1177 Abc_NodeSetTravIdCurrent( pCur );
1179 if (!Abc_ObjIsLatch(pCur) &&
1180 !Abc_ObjIsBo(pCur) &&
1193 if (Abc_ObjIsBi(pNext) ||
1194 Abc_ObjIsLatch(pNext) ||
1195 Abc_ObjIsBo(pNext) ||
1196 Abc_ObjIsBo(pCur)) {
1197 Vec_PtrPush( vNodes, pNext );
1198 Vec_IntPush( vLags, lag - Abc_ObjIsLatch(pNext) ? 1 : 0 );
1203 Vec_PtrFree( vNodes );
1204 Vec_IntFree( vLags );
1223 const int nConstraints = Vec_PtrSize(
pManMR->vInitConstraints );
1228 vprintf(
"\t\tcreating %d bias structures\n", nConstraints);
1234 pBiasNode = Abc_NtkCreateBlackbox( pNtk );
1237 pObj = Abc_NtkObj(pNtk,
id);
1238 Abc_FlowRetime_ConnectBiasNode(pBiasNode, pObj, Vec_IntEntry(&pConstraint->
vLags, j));
1257void Abc_FlowRetime_ClearInitToOrig(
Abc_Obj_t *pInit )
1259 int id = Abc_ObjId( pInit );
1262 if (
id >=
pManMR->sizeInitToOrig) {
1263 int oldSize =
pManMR->sizeInitToOrig;
1264 pManMR->sizeInitToOrig = 1.5*
id + 10;
1270 pManMR->pInitToOrig[id].id = -1;
1288 int id = Abc_ObjId( pInit );
1291 if (
id >=
pManMR->sizeInitToOrig) {
1292 int oldSize =
pManMR->sizeInitToOrig;
1293 pManMR->sizeInitToOrig = 1.5*
id + 10;
1300 if (Abc_ObjIsBo(pOrig) || Abc_ObjIsBi(pOrig) || Abc_ObjIsLatch(pOrig)) {
1301 Abc_FlowRetime_ClearInitToOrig(pInit);
1306 lag = Abc_FlowRetime_ObjFirstNonLatchBox(pOrig, &pOrig);
1308 pManMR->pInitToOrig[id].id = Abc_ObjId(pOrig);
1326 int id = Abc_ObjId( pInit );
1329 assert(id < pManMR->sizeInitToOrig);
1331 origId =
pManMR->pInitToOrig[id].id;
1334 assert(Abc_ObjFaninNum(pInit));
1335 Abc_FlowRetime_GetInitToOrig( Abc_ObjFanin0(pInit), pOrig, lag);
1339 *pOrig = Abc_NtkObj(
pManMR->pNtk, origId);
1340 *lag =
pManMR->pInitToOrig[id].lag;
struct Abc_Obj_t_ Abc_Obj_t
ABC_DLL Abc_Ntk_t * Abc_NtkAlloc(Abc_NtkType_t Type, Abc_NtkFunc_t Func, int fUseMemMan)
DECLARATIONS ///.
ABC_DLL void Abc_ObjAddFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFanin)
ABC_DLL void Abc_NtkDeleteObj(Abc_Obj_t *pObj)
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeConst1(Abc_Ntk_t *pNtk)
ABC_DLL Abc_Obj_t * Abc_NtkDupObj(Abc_Ntk_t *pNtkNew, Abc_Obj_t *pObj, int fCopyName)
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeBuf(Abc_Ntk_t *pNtk, Abc_Obj_t *pFanin)
ABC_DLL int Abc_NtkCleanup(Abc_Ntk_t *pNtk, int fVerbose)
#define Abc_NtkForEachLatch(pNtk, pObj, i)
ABC_DLL int Abc_NtkSopToBdd(Abc_Ntk_t *pNtk)
ABC_DLL Vec_Ptr_t * Abc_NtkDfs(Abc_Ntk_t *pNtk, int fCollectAll)
ABC_DLL int Abc_NtkCheck(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
#define Abc_NtkForEachObj(pNtk, pObj, i)
ITERATORS ///.
#define Abc_ObjForEachFanin(pObj, pFanin, i)
#define Abc_ObjForEachFanout(pObj, pFanout, i)
ABC_DLL void Abc_ObjPrint(FILE *pFile, Abc_Obj_t *pObj)
ABC_DLL int Abc_NtkLevelReverse(Abc_Ntk_t *pNtk)
ABC_DLL int Abc_SopGetPhase(char *pSop)
#define Abc_CubeForEachVar(pCube, Value, i)
ABC_DLL int Abc_NtkSopToAig(Abc_Ntk_t *pNtk)
struct Abc_Ntk_t_ Abc_Ntk_t
ABC_DLL int Abc_NodeIsConst0(Abc_Obj_t *pNode)
ABC_DLL int Abc_NtkMiterSat(Abc_Ntk_t *pNtk, ABC_INT64_T nConfLimit, ABC_INT64_T nInsLimit, int fVerbose, ABC_INT64_T *pNumConfs, ABC_INT64_T *pNumInspects)
FUNCTION DEFINITIONS ///.
ABC_DLL int Abc_NtkAigToBdd(Abc_Ntk_t *pNtk)
ABC_DLL char * Abc_SopCreateAnd(Mem_Flex_t *pMan, int nVars, int *pfCompl)
ABC_DLL void Abc_NtkAddDummyPoNames(Abc_Ntk_t *pNtk)
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeAnd(Abc_Ntk_t *pNtk, Vec_Ptr_t *vFanins)
#define Abc_SopForEachCube(pSop, nFanins, pCube)
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeInv(Abc_Ntk_t *pNtk, Abc_Obj_t *pFanin)
#define Abc_NtkForEachPi(pNtk, pPi, i)
ABC_DLL int Abc_SopGetVarNum(char *pSop)
ABC_DLL int Abc_SopIsExorType(char *pSop)
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
ABC_DLL Abc_Obj_t * Abc_NtkCreateObj(Abc_Ntk_t *pNtk, Abc_ObjType_t Type)
ABC_DLL char * Abc_SopRegister(Mem_Flex_t *pMan, const char *pName)
DECLARATIONS ///.
ABC_DLL int Abc_NodeIsConst1(Abc_Obj_t *pNode)
ABC_DLL void Abc_NtkAddDummyPiNames(Abc_Ntk_t *pNtk)
#define ABC_ALLOC(type, num)
#define ABC_REALLOC(type, obj, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
void * Abc_FrameReadLibGen()
int Abc_FlowRetime_SolveBackwardInit(Abc_Ntk_t *pNtk)
Abc_Obj_t * Abc_FlowRetime_CopyNodeToInitNtk(Abc_Obj_t *pOrigObj)
void Abc_FlowRetime_AddInitBias()
int Abc_FlowRetime_PartialSat(Vec_Ptr_t *vNodes, int cut)
void Abc_FlowRetime_PrintInitStateInfo(Abc_Ntk_t *pNtk)
void Abc_FlowRetime_RemoveInitBias()
void Abc_FlowRetime_UpdateForwardInit(Abc_Ntk_t *pNtk)
void Abc_NtkMarkCone_rec(Abc_Obj_t *pObj, int fForward)
void Abc_FlowRetime_InitState(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
void Abc_FlowRetime_UpdateBackwardInit(Abc_Ntk_t *pNtk)
void Abc_FlowRetime_ConstrainInit()
void Abc_FlowRetime_SetupBackwardInit(Abc_Ntk_t *pNtk)
void Abc_ObjPrintNeighborhood(Abc_Obj_t *pObj, int depth)
void Abc_ObjBetterTransferFanout(Abc_Obj_t *pFrom, Abc_Obj_t *pTo, int complement)
int Abc_FlowRetime_GetLag(Abc_Obj_t *pObj)
struct NodeLag_T_ NodeLag_t
struct Flow_Data_t_ Flow_Data_t
struct InitConstraint_t_ InitConstraint_t
typedefABC_NAMESPACE_HEADER_START struct Hop_Man_t_ Hop_Man_t
INCLUDES ///.
struct Hop_Obj_t_ Hop_Obj_t
char * Mio_GateReadSop(Mio_Gate_t *pGate)
struct Mio_GateStruct_t_ Mio_Gate_t
struct Mem_Flex_t_ Mem_Flex_t
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.