32static void Io_WriteVerilogInt( FILE * pFile,
Abc_Ntk_t * pNtk,
int fOnlyAnds,
int fNewInterface );
33static void Io_WriteVerilogPis( FILE * pFile,
Abc_Ntk_t * pNtk,
int Start );
34static void Io_WriteVerilogPos( FILE * pFile,
Abc_Ntk_t * pNtk,
int Start,
int fNewInterface );
35static void Io_WriteVerilogAssigns( FILE * pFile,
Abc_Ntk_t * pNtk );
36static void Io_WriteVerilogWires( FILE * pFile,
Abc_Ntk_t * pNtk,
int Start );
37static void Io_WriteVerilogRegs( FILE * pFile,
Abc_Ntk_t * pNtk,
int Start );
38static void Io_WriteVerilogLatches( FILE * pFile,
Abc_Ntk_t * pNtk );
39static void Io_WriteVerilogObjects( FILE * pFile,
Abc_Ntk_t * pNtk,
int fOnlyAnds );
40static int Io_WriteVerilogWiresCount(
Abc_Ntk_t * pNtk );
41static char * Io_WriteVerilogGetName(
char * pName );
65 if ( !Abc_NtkIsAigNetlist(pNtk) && !Abc_NtkIsMappedNetlist(pNtk) )
67 printf(
"Io_WriteVerilog(): Can produce Verilog for mapped or AIG netlists only.\n" );
71 pFile = fopen( pFileName,
"w" );
74 fprintf( stdout,
"Io_WriteVerilog(): Cannot open the output file \"%s\".\n", pFileName );
80 fprintf( pFile,
"\n" );
86 Io_WriteVerilogInt( pFile, pNtk, fOnlyAnds, fNewInterface );
90 assert( Abc_NtkIsNetlist(pNetlist) );
91 if ( pNetlist == pNtk )
93 fprintf( pFile,
"\n" );
94 Io_WriteVerilogInt( pFile, pNetlist, fOnlyAnds, fNewInterface );
99 Io_WriteVerilogInt( pFile, pNtk, fOnlyAnds, fNewInterface );
102 fprintf( pFile,
"\n" );
117void Io_WriteVerilogInt( FILE * pFile,
Abc_Ntk_t * pNtk,
int fOnlyAnds,
int fNewInterface )
121 fprintf( pFile,
"module %s ( ", Io_WriteVerilogGetName(Abc_NtkName(pNtk)) );
124 fprintf( pFile,
"clock, " );
126 fprintf( pFile,
"\n " );
127 if ( Abc_NtkPiNum(pNtk) > 0 )
129 Io_WriteVerilogPis( pFile, pNtk, 3 );
130 fprintf( pFile,
",\n " );
132 if ( Abc_NtkPoNum(pNtk) > 0 )
133 Io_WriteVerilogPos( pFile, pNtk, 3, fNewInterface );
134 fprintf( pFile,
" );\n" );
137 fprintf( pFile,
" input clock;\n" );
139 if ( Abc_NtkPiNum(pNtk) > 0 )
142 fprintf( pFile,
" input " );
143 Io_WriteVerilogPis( pFile, pNtk, 10 );
144 fprintf( pFile,
";\n" );
146 if ( Abc_NtkPoNum(pNtk) > 0 )
148 fprintf( pFile,
" output" );
149 Io_WriteVerilogPos( pFile, pNtk, 5, fNewInterface );
150 fprintf( pFile,
";\n" );
153 if ( !Abc_NtkHasBlackbox(pNtk) )
155 if ( Abc_NtkLatchNum(pNtk) > 0 )
157 fprintf( pFile,
" reg" );
158 Io_WriteVerilogRegs( pFile, pNtk, 4 );
159 fprintf( pFile,
";\n" );
161 if ( Io_WriteVerilogWiresCount(pNtk) > 0 )
163 fprintf( pFile,
" wire" );
164 Io_WriteVerilogWires( pFile, pNtk, 4 );
165 fprintf( pFile,
";\n" );
168 Io_WriteVerilogObjects( pFile, pNtk, fOnlyAnds );
170 if ( Abc_NtkLatchNum(pNtk) > 0 )
171 Io_WriteVerilogLatches( pFile, pNtk );
174 Io_WriteVerilogAssigns( pFile, pNtk );
176 fprintf( pFile,
"endmodule\n\n" );
190void Io_WriteVerilogPis( FILE * pFile,
Abc_Ntk_t * pNtk,
int Start )
202 pNet = Abc_ObjFanout0(pTerm);
207 fprintf( pFile,
"\n " );
212 fprintf( pFile,
" %s%s", Io_WriteVerilogGetName(
Abc_ObjName(pNet)), (i==Abc_NtkPiNum(pNtk)-1)?
"" :
"," );
213 LineLength += AddedLength;
229void Io_WriteVerilogPos( FILE * pFile,
Abc_Ntk_t * pNtk,
int Start,
int fNewInterface )
232 char Name[100], * pName = Name;
246 pNet = Abc_ObjFanin0(pTerm);
248 if ( Abc_ObjIsPi(Abc_ObjFanin0(pNet)) )
261 sprintf( Name,
"po_username%d", i );
264 AddedLength =
strlen(Io_WriteVerilogGetName(pName)) + 2;
267 fprintf( pFile,
"\n " );
272 fprintf( pFile,
" %s%s", Io_WriteVerilogGetName(pName), (i==Abc_NtkPoNum(pNtk)-1)?
"" :
"," );
273 LineLength += AddedLength;
280 printf(
"Io_WriteVerilogPos(): Omitted %d feedthrough nets from output list of module (e.g. %s).\n", nskip,
Abc_ObjName(pSkip) );
297void Io_WriteVerilogAssigns( FILE * pFile,
Abc_Ntk_t * pNtk )
303 pNet = Abc_ObjFanin0(pTerm);
304 if ( Abc_ObjIsPi(Abc_ObjFanin0(pNet)) )
313 fprintf( pFile,
" assign po_username%d = %s;\n", i,
Abc_ObjName(pNet) );
328void Io_WriteVerilogWires( FILE * pFile,
Abc_Ntk_t * pNtk,
int Start )
330 Abc_Obj_t * pObj, * pNet, * pBox, * pTerm;
334 int i, k, Counter, nNodes;
337 nNodes = Io_WriteVerilogWiresCount( pNtk );
347 pNet = Abc_ObjFanout0(pObj);
348 if ( Abc_ObjFanoutNum(pNet) > 0 && Abc_ObjIsCo(Abc_ObjFanout0(pNet)) )
355 fprintf( pFile,
"\n " );
360 fprintf( pFile,
" %s%s", Io_WriteVerilogGetName(
Abc_ObjName(pNet)), (Counter==nNodes)?
"" :
"," );
361 LineLength += AddedLength;
366 pNet = Abc_ObjFanin0(Abc_ObjFanin0(pObj));
372 fprintf( pFile,
"\n " );
377 fprintf( pFile,
" %s%s", Io_WriteVerilogGetName(
Abc_ObjName(pNet)), (Counter==nNodes)?
"" :
"," );
378 LineLength += AddedLength;
383 if ( Abc_ObjIsLatch(pBox) )
387 pNet = Abc_ObjFanin0(pTerm);
393 fprintf( pFile,
"\n " );
398 fprintf( pFile,
" %s%s", Io_WriteVerilogGetName(
Abc_ObjName(pNet)), (Counter==nNodes)?
"" :
"," );
399 LineLength += AddedLength;
404 pNet = Abc_ObjFanout0(pTerm);
405 if ( Abc_ObjFanoutNum(pNet) > 0 && Abc_ObjIsCo(Abc_ObjFanout0(pNet)) )
412 fprintf( pFile,
"\n " );
417 fprintf( pFile,
" %s%s", Io_WriteVerilogGetName(
Abc_ObjName(pNet)), (Counter==nNodes)?
"" :
"," );
418 LineLength += AddedLength;
422 assert( Counter == nNodes );
436void Io_WriteVerilogRegs( FILE * pFile,
Abc_Ntk_t * pNtk,
int Start )
442 int i, Counter, nNodes;
445 nNodes = Abc_NtkLatchNum(pNtk);
453 pNet = Abc_ObjFanout0(Abc_ObjFanout0(pLatch));
459 fprintf( pFile,
"\n " );
464 fprintf( pFile,
" %s%s", Io_WriteVerilogGetName(
Abc_ObjName(pNet)), (Counter==nNodes)?
"" :
"," );
465 LineLength += AddedLength;
481void Io_WriteVerilogLatches( FILE * pFile,
Abc_Ntk_t * pNtk )
485 if ( Abc_NtkLatchNum(pNtk) == 0 )
490 fprintf( pFile,
" always @ (posedge clock) begin\n" );
493 fprintf( pFile,
" %s", Io_WriteVerilogGetName(
Abc_ObjName(Abc_ObjFanout0(Abc_ObjFanout0(pLatch)))) );
494 fprintf( pFile,
" <= %s;\n", Io_WriteVerilogGetName(
Abc_ObjName(Abc_ObjFanin0(Abc_ObjFanin0(pLatch)))) );
496 fprintf( pFile,
" end\n" );
501 if ( i == Abc_NtkLatchNum(pNtk) )
504 fprintf( pFile,
" initial begin\n" );
508 fprintf( pFile,
" %s <= 1\'b0;\n", Io_WriteVerilogGetName(
Abc_ObjName(Abc_ObjFanout0(Abc_ObjFanout0(pLatch)))) );
510 fprintf( pFile,
" %s <= 1\'b1;\n", Io_WriteVerilogGetName(
Abc_ObjName(Abc_ObjFanout0(Abc_ObjFanout0(pLatch)))) );
512 fprintf( pFile,
" end\n" );
526void Io_WriteVerilogObjects( FILE * pFile,
Abc_Ntk_t * pNtk,
int fOnlyAnds )
528 int fUseSimpleGateNames = 0;
533 int i, k, Counter, nDigits, Length;
536 nDigits = Abc_Base10Log( Abc_NtkBoxNum(pNtk)-Abc_NtkLatchNum(pNtk) );
540 if ( Abc_ObjIsLatch(pObj) )
543 fprintf( pFile,
" %s box%0*d", pNtkBox->
pName, nDigits, Counter++ );
544 fprintf( pFile,
"(" );
547 fprintf( pFile,
".%s", Io_WriteVerilogGetName(
Abc_ObjName(Abc_ObjFanout0(pTerm))) );
548 fprintf( pFile,
"(%s), ", Io_WriteVerilogGetName(
Abc_ObjName(Abc_ObjFanin0(Abc_ObjFanin(pObj,k)))) );
552 fprintf( pFile,
".%s", Io_WriteVerilogGetName(
Abc_ObjName(Abc_ObjFanin0(pTerm))) );
553 fprintf( pFile,
"(%s)%s", Io_WriteVerilogGetName(
Abc_ObjName(Abc_ObjFanout0(Abc_ObjFanout(pObj,k)))), k==Abc_NtkPoNum(pNtkBox)-1?
"":
", " );
555 fprintf( pFile,
");\n" );
558 if ( Abc_NtkHasMapping(pNtk) )
561 nDigits = Abc_Base10Log( Abc_NtkNodeNum(pNtk) );
569 fprintf( pFile,
" %-*s %s = 1\'b%d;\n", Length,
"assign", Io_WriteVerilogGetName(
Abc_ObjName( Abc_ObjFanout0(pObj) )), !
strcmp(
Mio_GateReadName(pGate),
"_const1_") );
573 if ( fUseSimpleGateNames )
576 fprintf( pFile,
"( %s", Io_WriteVerilogGetName(
Abc_ObjName( Abc_ObjFanout0(pObj) )) );
578 fprintf( pFile,
", %s", Io_WriteVerilogGetName(
Abc_ObjName( Abc_ObjFanin(pObj,i) )) );
579 assert ( i == Abc_ObjFaninNum(pObj) );
580 fprintf( pFile,
" );\n" );
584 fprintf( pFile,
" %-*s g%0*d", Length,
Mio_GateReadName(pGate), nDigits, Counter++ );
585 fprintf( pFile,
"(" );
588 fprintf( pFile,
".%s", Io_WriteVerilogGetName(
Mio_PinReadName(pGatePin)) );
589 fprintf( pFile,
"(%s), ", Io_WriteVerilogGetName(
Abc_ObjName( Abc_ObjFanin(pObj,i) )) );
591 assert ( i == Abc_ObjFaninNum(pObj) );
593 fprintf( pFile,
"(%s)", Io_WriteVerilogGetName(
Abc_ObjName( Abc_ObjFanout0(pObj) )) );
594 fprintf( pFile,
");\n" );
601 vLevels = Vec_VecAlloc( 10 );
604 if ( Abc_ObjFaninNum(pObj) == 0 )
606 fprintf( pFile,
" assign %s = ", Io_WriteVerilogGetName(
Abc_ObjName(Abc_ObjFanout0(pObj))) );
626 fprintf( pFile,
" assign %s = ", Io_WriteVerilogGetName(
Abc_ObjName(Abc_ObjFanout0(pObj))) );
634 Abc_Obj_t * pFan0 = Abc_ObjFanin0(Abc_ObjFanin(pObj, 0));
635 Abc_Obj_t * pFan1 = Abc_ObjFanin0(Abc_ObjFanin(pObj, 1));
636 int Cond = Abc_ObjIsNode(pFan0) && Abc_ObjIsNode(pFan1) && !pFan0->
fPersist && !pFan1->
fPersist;
637 fprintf( pFile,
"; // MUXF7 %s\n", Cond ?
"":
"to be legalized" );
640 fprintf( pFile,
";\n" );
645 Vec_VecFree( vLevels );
661int Io_WriteVerilogWiresCount(
Abc_Ntk_t * pNtk )
665 nWires = Abc_NtkLatchNum(pNtk);
670 pNet = Abc_ObjFanout0(pObj);
671 if ( Abc_ObjFanoutNum(pNet) > 0 && Abc_ObjIsCo(Abc_ObjFanout0(pNet)) )
677 if ( Abc_ObjIsLatch(pBox) )
679 nWires += Abc_ObjFaninNum(pBox);
682 pNet = Abc_ObjFanout0(pObj);
683 if ( Abc_ObjFanoutNum(pNet) > 0 && Abc_ObjIsCo(Abc_ObjFanout0(pNet)) )
702char * Io_WriteVerilogGetName(
char * pName )
704 static char Buffer[500];
705 int i, Length =
strlen(pName);
706 if ( pName[0] <
'0' || pName[0] >
'9' )
708 for ( i = 0; i < Length; i++ )
709 if ( !((pName[i] >=
'a' && pName[i] <=
'z') ||
710 (pName[i] >=
'A' && pName[i] <=
'Z') ||
711 (pName[i] >=
'0' && pName[i] <=
'9') || pName[i] ==
'_') )
718 for ( i = 0; i < Length; i++ )
719 Buffer[i+1] = pName[i];
720 Buffer[Length+1] =
' ';
721 Buffer[Length+2] = 0;
739 fprintf( pFile,
"module lut%d #( parameter TT = %d\'h0 ) ( input [%d:0] in, output out );\n", nLutSize, 1<<nLutSize, nLutSize-1 );
740 fprintf( pFile,
" assign out = TT[in];\n" );
741 fprintf( pFile,
"endmodule\n\n" );
745 fprintf( pFile,
"module LUT6 #( parameter INIT = 64\'h0000000000000000 ) (\n" );
746 fprintf( pFile,
" output O,\n" );
747 fprintf( pFile,
" input I0,\n" );
748 fprintf( pFile,
" input I1,\n" );
749 fprintf( pFile,
" input I2,\n" );
750 fprintf( pFile,
" input I3,\n" );
751 fprintf( pFile,
" input I4,\n" );
752 fprintf( pFile,
" input I5\n" );
753 fprintf( pFile,
");\n" );
754 fprintf( pFile,
" assign O = INIT[ {I5, I4, I3, I2, I1, I0} ];\n" );
755 fprintf( pFile,
"endmodule\n\n" );
757 fprintf( pFile,
"module MUXF7 (\n" );
758 fprintf( pFile,
" output O,\n" );
759 fprintf( pFile,
" input I0,\n" );
760 fprintf( pFile,
" input I1,\n" );
761 fprintf( pFile,
" input S\n" );
762 fprintf( pFile,
");\n" );
763 fprintf( pFile,
" assign O = S ? I1 : I0;\n" );
764 fprintf( pFile,
"endmodule\n\n" );
766 fprintf( pFile,
"module MUXF8 (\n" );
767 fprintf( pFile,
" output O,\n" );
768 fprintf( pFile,
" input I0,\n" );
769 fprintf( pFile,
" input I1,\n" );
770 fprintf( pFile,
" input S\n" );
771 fprintf( pFile,
");\n" );
772 fprintf( pFile,
" assign O = S ? I1 : I0;\n" );
773 fprintf( pFile,
"endmodule\n\n" );
779 int i, k, Counter, nDigits, Length = 0;
782 nDigits = Abc_Base10Log( Abc_NtkBoxNum(pNtk)-Abc_NtkLatchNum(pNtk) );
786 if ( Abc_ObjIsLatch(pObj) )
789 fprintf( pFile,
" %s box%0*d", pNtkBox->
pName, nDigits, Counter++ );
790 fprintf( pFile,
"(" );
793 fprintf( pFile,
".%s", Io_WriteVerilogGetName(
Abc_ObjName(Abc_ObjFanout0(pTerm))) );
794 fprintf( pFile,
"(%s), ", Io_WriteVerilogGetName(
Abc_ObjName(Abc_ObjFanin0(Abc_ObjFanin(pObj,k)))) );
798 fprintf( pFile,
".%s", Io_WriteVerilogGetName(
Abc_ObjName(Abc_ObjFanin0(pTerm))) );
799 fprintf( pFile,
"(%s)%s", Io_WriteVerilogGetName(
Abc_ObjName(Abc_ObjFanout0(Abc_ObjFanout(pObj,k)))), k==Abc_NtkPoNum(pNtkBox)-1?
"":
", " );
801 fprintf( pFile,
");\n" );
807 Length = Abc_MaxInt( Length,
strlen(Io_WriteVerilogGetName(
Abc_ObjName(Abc_ObjFanout0(pObj)))) );
809 Length = Abc_MaxInt( Length,
strlen(Io_WriteVerilogGetName(
Abc_ObjName(pTerm))) );
813 nDigits = Abc_Base10Log( Abc_NtkNodeNum(pNtk) );
820 int One = Abc_ObjFanin0(Abc_ObjFanin(pObj, 1))->fPersist && Abc_ObjFanin0(Abc_ObjFanin(pObj, 2))->fPersist;
821 fprintf( pFile,
" MUXF%d ", 7+One );
822 fprintf( pFile,
" mux_%0*d (", nDigits, Counter++ );
823 fprintf( pFile,
" %*s", Length, Io_WriteVerilogGetName(
Abc_ObjName(Abc_ObjFanout0(pObj))) );
824 for ( k = Abc_ObjFaninNum(pObj) - 1; k >= 0; k-- )
825 fprintf( pFile,
", %*s", Length, Io_WriteVerilogGetName(
Abc_ObjName(Abc_ObjFanin(pObj, k))) );
826 fprintf( pFile,
" );\n" );
831 fprintf( pFile,
" LUT6 #(64\'h" );
832 fprintf( pFile,
"%08x%08x", (
unsigned)(Truth >> 32), (
unsigned)Truth );
833 fprintf( pFile,
") lut_%0*d (", nDigits, Counter++ );
834 fprintf( pFile,
" %*s", Length, Io_WriteVerilogGetName(
Abc_ObjName(Abc_ObjFanout0(pObj))) );
835 for ( k = 0; k < Abc_ObjFaninNum(pObj); k++ )
836 fprintf( pFile,
", %*s", Length, Io_WriteVerilogGetName(
Abc_ObjName(Abc_ObjFanin(pObj, k))) );
838 fprintf( pFile,
", %*s", Length,
"1\'b0" );
839 fprintf( pFile,
" );\n" );
846 fprintf( pFile,
" lut%d #(%d\'h", nLutSize, 1<<nLutSize );
848 fprintf( pFile,
"%08x%08x", (
unsigned)(Truth >> 32), (
unsigned)Truth );
850 fprintf( pFile,
"%0*x", 1<<(nLutSize-2), Abc_InfoMask(1 << nLutSize) & (
unsigned)Truth );
851 fprintf( pFile,
") lut_%0*d ( {", nDigits, Counter++ );
852 for ( k = nLutSize - 1; k >= Abc_ObjFaninNum(pObj); k-- )
853 fprintf( pFile,
"%*s, ", Length,
"1\'b0" );
854 for ( k = Abc_ObjFaninNum(pObj) - 1; k >= 0; k-- )
855 fprintf( pFile,
"%*s%s", Length, Io_WriteVerilogGetName(
Abc_ObjName(Abc_ObjFanin(pObj, k))), k==0 ?
"":
", " );
856 fprintf( pFile,
"}, %*s );\n", Length, Io_WriteVerilogGetName(
Abc_ObjName(Abc_ObjFanout0(pObj))) );
863 fprintf( pFile,
"module %s ( ", Io_WriteVerilogGetName(Abc_NtkName(pNtk)) );
866 fprintf( pFile,
"clock, " );
868 fprintf( pFile,
"\n " );
869 if ( Abc_NtkPiNum(pNtk) > 0 )
871 Io_WriteVerilogPis( pFile, pNtk, 3 );
872 fprintf( pFile,
",\n " );
874 if ( Abc_NtkPoNum(pNtk) > 0 )
875 Io_WriteVerilogPos( pFile, pNtk, 3, fNewInterface );
876 fprintf( pFile,
" );\n\n" );
879 fprintf( pFile,
" input clock;\n" );
881 if ( Abc_NtkPiNum(pNtk) > 0 )
884 fprintf( pFile,
" input " );
885 Io_WriteVerilogPis( pFile, pNtk, 10 );
886 fprintf( pFile,
";\n" );
888 if ( Abc_NtkPoNum(pNtk) > 0 )
890 fprintf( pFile,
" output" );
891 Io_WriteVerilogPos( pFile, pNtk, 5, fNewInterface );
892 fprintf( pFile,
";\n\n" );
895 if ( !Abc_NtkHasBlackbox(pNtk) )
897 if ( Abc_NtkLatchNum(pNtk) > 0 )
899 fprintf( pFile,
" reg" );
900 Io_WriteVerilogRegs( pFile, pNtk, 4 );
901 fprintf( pFile,
";\n\n" );
903 if ( Io_WriteVerilogWiresCount(pNtk) > 0 )
905 fprintf( pFile,
" wire" );
906 Io_WriteVerilogWires( pFile, pNtk, 4 );
907 fprintf( pFile,
";\n\n" );
912 if ( Abc_NtkLatchNum(pNtk) > 0 )
914 fprintf( pFile,
"\n" );
915 Io_WriteVerilogLatches( pFile, pNtk );
919 Io_WriteVerilogAssigns( pFile, pNtk );
921 fprintf( pFile,
"\nendmodule\n\n" );
930 if ( Abc_ObjFaninNum(pObj) > nLutSize )
933 printf(
"Node \"%s\" has the fanin count (%d) larger than the LUT size (%d).\n",
Abc_ObjName(pObj), Abc_ObjFaninNum(pObj), nLutSize );
938 printf(
"In total, %d internal logic nodes exceed the fanin count limit. Verilog is not written.\n", Counter );
943 pFile = fopen( pFileName,
"w" );
946 fprintf( stdout,
"Io_WriteVerilog(): Cannot open the output file \"%s\".\n", pFileName );
952 fprintf( pFile,
"\n" );
965 fprintf( pFile,
"\n" );
struct Abc_Obj_t_ Abc_Obj_t
#define Abc_NtkForEachPo(pNtk, pPo, i)
#define Abc_NtkForEachLatch(pNtk, pObj, i)
#define Abc_ObjForEachFanin(pObj, pFanin, i)
#define Abc_ObjForEachFanout(pObj, pFanout, i)
ABC_DLL char * Abc_ObjName(Abc_Obj_t *pNode)
DECLARATIONS ///.
struct Abc_Ntk_t_ Abc_Ntk_t
ABC_DLL Abc_Ntk_t * Abc_NtkToNetlist(Abc_Ntk_t *pNtk)
ABC_DLL int Abc_NtkToSop(Abc_Ntk_t *pNtk, int fMode, int nCubeLimit)
#define Abc_NtkForEachPi(pNtk, pPi, i)
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
ABC_DLL word Abc_SopToTruth(char *pSop, int nInputs)
#define Abc_NtkForEachBox(pNtk, pObj, i)
ABC_DLL int Abc_NodeIsConst1(Abc_Obj_t *pNode)
#define Abc_NtkForEachNode(pNtk, pNode, i)
#define ABC_INFINITY
MACRO DEFINITIONS ///.
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_HEADER_START struct Hop_Man_t_ Hop_Man_t
INCLUDES ///.
Hop_Obj_t * Hop_IthVar(Hop_Man_t *p, int i)
FUNCTION DEFINITIONS ///.
void Hop_ObjPrintVerilog(FILE *pFile, Hop_Obj_t *pObj, Vec_Vec_t *vLevels, int Level, int fOnlyAnds)
struct Hop_Obj_t_ Hop_Obj_t
#define IO_WRITE_LINE_LENGTH
MACRO DEFINITIONS ///.
void Io_WriteVerilogLutInt(FILE *pFile, Abc_Ntk_t *pNtk, int nLutSize, int fFixed, int fNewInterface)
void Io_WriteVerilog(Abc_Ntk_t *pNtk, char *pFileName, int fOnlyAnds, int fNewInterface)
FUNCTION DEFINITIONS ///.
void Io_WriteVerilogLut(Abc_Ntk_t *pNtk, char *pFileName, int nLutSize, int fFixed, int fNoModules, int fNewInterface)
void Io_WriteVerilogObjectsLut(FILE *pFile, Abc_Ntk_t *pNtk, int nLutSize, int fFixed)
void Io_WriteLutModule(FILE *pFile, int nLutSize)
void Io_WriteFixedModules(FILE *pFile)
unsigned __int64 word
DECLARATIONS ///.
Mio_Pin_t * Mio_GateReadPins(Mio_Gate_t *pGate)
struct Mio_LibraryStruct_t_ Mio_Library_t
char * Mio_PinReadName(Mio_Pin_t *pPin)
char * Mio_GateReadName(Mio_Gate_t *pGate)
Mio_Pin_t * Mio_PinReadNext(Mio_Pin_t *pPin)
int Mio_LibraryReadGateNameMax(Mio_Library_t *pLib)
struct Mio_PinStruct_t_ Mio_Pin_t
char * Mio_GateReadOutName(Mio_Gate_t *pGate)
struct Mio_GateStruct_t_ Mio_Gate_t
int Nm_ManFindIdByName(Nm_Man_t *p, char *pName, int Type)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Vec_t_ Vec_Vec_t
INCLUDES ///.