473{
475 int iObj, k, i, o, StartPos;
477 {
478
479 if ( Bac_ObjIsConst(
p, iObj) )
480 continue;
481
482 if ( Bac_ObjIsGate(
p, iObj) )
483 {
484 Bac_ManWriteGate(
p, iObj );
485 continue;
486 }
487
488 if ( !Bac_ObjIsBoxUser(
p, iObj) && fUseAssign )
489 {
490 Bac_ManWriteAssign(
p, iObj );
491 continue;
492 }
493
494 StartPos = Vec_StrSize(vStr);
495 if ( Bac_ObjIsBoxUser(
p, iObj) )
496 {
497 int Value, Beg, End, Range;
499 Vec_StrPrintStr( vStr, " " );
500 Vec_StrPrintStr( vStr, Bac_NtkName(pModel) );
501 Vec_StrPrintStr( vStr, " " );
502 Vec_StrPrintStr( vStr, Bac_ObjName(
p, iObj) ? Bac_ObjNameStr(
p, iObj) :
"" );
503 Vec_StrPrintStr( vStr, " (" );
504
505 i = o = 0;
506 assert( Bac_NtkInfoNum(pModel) );
508 {
509 int NameId = Abc_Lit2Var2( Value );
510 int Type = Abc_Lit2Att2( Value );
511 Vec_StrPrintStr( vStr, k ? ", " : "" );
512 if ( Vec_StrSize(vStr) > StartPos + 70 )
513 {
514 StartPos = Vec_StrSize(vStr);
515 Vec_StrPrintStr( vStr, "\n " );
516 }
517 Vec_StrPrintStr( vStr, "." );
518 Vec_StrPrintStr( vStr, Bac_NtkStr(
p, NameId) );
519 Vec_StrPrintStr( vStr, "(" );
520 Range = Bac_InfoRange( Beg, End );
522 if ( Type == 1 )
523 Bac_ManWriteConcat(
p, Bac_BoxBi(
p, iObj, i), Range ), i += Range;
524 else if ( Type == 2 )
525 Bac_ManWriteConcat(
p, Bac_BoxBo(
p, iObj, o), Range ), o += Range;
527 Vec_StrPrintStr( vStr, ")" );
528 }
529 assert( i == Bac_BoxBiNum(
p, iObj) );
530 assert( o == Bac_BoxBoNum(
p, iObj) );
531 }
532 else
533 {
534 int iTerm, k, Range, iSig = 0;
535 Vec_Int_t * vBits = Bac_BoxCollectRanges(
p, iObj );
537 char * pSymbs = Bac_ManPrimSymb(
p->pDesign, Bac_ObjType(
p, iObj) );
538 Vec_StrPrintStr( vStr, " " );
539 Vec_StrPrintStr( vStr, pName );
540 Vec_StrPrintStr( vStr, " " );
541 Vec_StrPrintStr( vStr, Bac_ObjName(
p, iObj) ? Bac_ObjNameStr(
p, iObj) :
"" );
542 Vec_StrPrintStr( vStr, " (" );
543
545 {
546 Range = Vec_IntEntry( vBits, iSig );
547 Vec_StrPrintStr( vStr, iSig ? ", " : "" );
548 if ( Vec_StrSize(vStr) > StartPos + 70 )
549 {
550 StartPos = Vec_StrSize(vStr);
551 Vec_StrPrintStr( vStr, "\n " );
552 }
553 Vec_StrPrintStr( vStr, "." );
554 Vec_StrPush( vStr, pSymbs[iSig] );
555 Vec_StrPrintStr( vStr, "(" );
556 Bac_ManWriteConcat(
p, iTerm, Range );
557 Vec_StrPrintStr( vStr, ")" );
558 iSig++;
559 }
561 {
562 Range = Vec_IntEntry( vBits, iSig );
563 Vec_StrPrintStr( vStr, iSig ? ", " : "" );
564 if ( Vec_StrSize(vStr) > StartPos + 70 )
565 {
566 StartPos = Vec_StrSize(vStr);
567 Vec_StrPrintStr( vStr, "\n " );
568 }
569 Vec_StrPrintStr( vStr, "." );
570 Vec_StrPush( vStr, pSymbs[iSig] );
571 Vec_StrPrintStr( vStr, "(" );
572 Bac_ManWriteConcat(
p, iTerm, Range );
573 Vec_StrPrintStr( vStr, ")" );
574 iSig++;
575 }
576 assert( iSig == Vec_IntSize(vBits) );
577 }
578 Vec_StrPrintStr( vStr, ");\n" );
579 }
580}
char * Bac_NtkGenerateName(Bac_Ntk_t *p, Bac_ObjType_t Type, Vec_Int_t *vBits)
#define Bac_BoxForEachBoMain(p, iBox, iTerm, i)
#define Bac_NtkForEachBox(p, i)
#define Bac_BoxForEachBiMain(p, iBox, iTerm, i)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
struct Vec_Str_t_ Vec_Str_t
#define Vec_IntForEachEntryTriple(vVec, Entry1, Entry2, Entry3, i)