Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
abc
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
abc
Commits
705006a6
Commit
705006a6
authored
Dec 03, 2014
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Changes to the parser.
parent
e970aa85
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
120 additions
and
70 deletions
+120
-70
src/base/abci/abc.c
+4
-0
src/base/cba/cba.h
+20
-2
src/base/cba/cbaPrs.h
+33
-37
src/base/cba/cbaReadBlif.c
+0
-0
src/base/cba/cbaReadVer.c
+24
-24
src/base/cba/cbaWriteBlif.c
+8
-5
src/misc/util/utilNam.c
+19
-2
src/misc/vec/vecStr.h
+12
-0
No files found.
src/base/abci/abc.c
View file @
705006a6
...
...
@@ -10834,6 +10834,10 @@ int Abc_CommandTest( Abc_Frame_t * pAbc, int argc, char ** argv )
Abc_IsopTestNew();
}
*/
{
extern
void
Cba_PrsReadBlifTest
();
Cba_PrsReadBlifTest
();
}
return
0
;
usage:
Abc_Print
(
-
2
,
"usage: test [-CKDNM] [-aovwh] <file_name>
\n
"
);
src/base/cba/cba.h
View file @
705006a6
...
...
@@ -150,7 +150,7 @@ static inline Cba_Ntk_t * Cba_NtkAlloc( Cba_Man_t * p, char * pName )
{
Cba_Ntk_t
*
pNtk
=
ABC_CALLOC
(
Cba_Ntk_t
,
1
);
pNtk
->
pDesign
=
p
;
pNtk
->
pName
=
pName
;
pNtk
->
pName
=
Abc_UtilStrsav
(
pName
)
;
Vec_PtrPush
(
&
p
->
vNtks
,
pNtk
);
return
pNtk
;
}
...
...
@@ -169,9 +169,13 @@ static inline void Cba_NtkFree( Cba_Ntk_t * p )
Vec_IntErase
(
&
p
->
vNameIds
);
Vec_IntErase
(
&
p
->
vRanges
);
Vec_IntErase
(
&
p
->
vCopies
);
ABC_FREE
(
p
->
pName
);
ABC_FREE
(
p
);
}
static
inline
int
Cba_NtkMemory
(
Cba_Ntk_t
*
p
)
{
return
Vec_WecMemory
(
&
p
->
vFanins
);
}
static
inline
Cba_Man_t
*
Cba_ManAlloc
(
char
*
pFileName
)
{
...
...
@@ -193,6 +197,7 @@ static inline void Cba_ManFree( Cba_Man_t * p )
Cba_Ntk_t
*
pNtk
;
int
i
;
Cba_ManForEachNtk
(
p
,
pNtk
,
i
)
Cba_NtkFree
(
pNtk
);
ABC_FREE
(
p
->
vNtks
.
pArray
);
Mem_FlexStop
(
p
->
pMem
,
0
);
// design names
Abc_NamStop
(
p
->
pNames
);
...
...
@@ -202,6 +207,19 @@ static inline void Cba_ManFree( Cba_Man_t * p )
ABC_FREE
(
p
->
pSpec
);
ABC_FREE
(
p
);
}
static
inline
int
Cba_ManMemory
(
Cba_Man_t
*
p
)
{
Cba_Ntk_t
*
pNtk
;
int
i
;
int
nMem
=
sizeof
(
Cba_Man_t
);
nMem
+=
Abc_NamMemUsed
(
p
->
pNames
);
nMem
+=
Abc_NamMemUsed
(
p
->
pModels
);
nMem
+=
Abc_NamMemUsed
(
p
->
pFuncs
);
nMem
+=
Mem_FlexReadMemUsage
(
p
->
pMem
);
nMem
+=
(
int
)
Vec_PtrMemory
(
&
p
->
vNtks
);
Cba_ManForEachNtk
(
p
,
pNtk
,
i
)
nMem
+=
Cba_NtkMemory
(
pNtk
);
return
nMem
;
}
/*=== cbaReadBlif.c =========================================================*/
...
...
src/base/cba/cbaPrs.h
View file @
705006a6
...
...
@@ -78,19 +78,19 @@ struct Cba_Prs_t_
Cba_Man_t
*
pDesign
;
// interface collected by the parser
int
iModuleName
;
// name Id
Vec_Int_t
*
vInoutsCur
;
// inouts
Vec_Int_t
*
vInputsCur
;
// inputs
Vec_Int_t
*
vOutputsCur
;
// outputs
Vec_Int_t
*
vWiresCur
;
// wires
Vec_Int_t
vInoutsCur
;
// inouts
Vec_Int_t
vInputsCur
;
// inputs
Vec_Int_t
vOutputsCur
;
// outputs
Vec_Int_t
vWiresCur
;
// wires
// objects collected by the parser
Vec_Int_t
*
vTypesCur
;
// Cba_PrsType_t
Vec_Int_t
*
vFuncsCur
;
// functions (node->func; box->module; gate->cell; latch->init; concat->unused)
Vec_Int_t
*
vInstIdsCur
;
// instance names
Vec_Wec_t
*
vFaninsCur
;
// instances
Vec_Int_t
vTypesCur
;
// Cba_PrsType_t
Vec_Int_t
vFuncsCur
;
// functions (node->func; box->module; gate->cell; latch->init; concat->unused)
Vec_Int_t
vInstIdsCur
;
// instance names
Vec_Wec_t
vFaninsCur
;
// instances
// temporary data
Vec_Str_t
*
vCover
;
// one SOP cover
Vec_Int_t
*
vTemp
;
// array of tokens
Vec_Int_t
*
vTemp2
;
// array of tokens
Vec_Str_t
vCover
;
// one SOP cover
Vec_Int_t
vTemp
;
// array of tokens
Vec_Int_t
vTemp2
;
// array of tokens
// error handling
char
ErrorStr
[
1000
];
// error
};
...
...
@@ -132,16 +132,16 @@ static inline void Cba_PrsSetupVecInt( Cba_Prs_t * p, Vec_Int_t * vTo, Vec_Int_t
static
inline
Cba_Ntk_t
*
Cba_PrsAddCurrentModel
(
Cba_Prs_t
*
p
,
int
iNameId
)
{
Cba_Ntk_t
*
pNtk
=
Cba_NtkAlloc
(
p
->
pDesign
,
Abc_NamStr
(
p
->
pDesign
->
pNames
,
iNameId
)
);
assert
(
Vec_IntSize
(
p
->
vInputsCur
)
!=
0
&&
Vec_IntSize
(
p
->
vOutputsCur
)
!=
0
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vInouts
,
p
->
vInoutsCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vInputs
,
p
->
vInputsCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vOutputs
,
p
->
vOutputsCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vWires
,
p
->
vWiresCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vTypes
,
p
->
vTypesCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vFuncs
,
p
->
vFuncsCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vInstIds
,
p
->
vInstIdsCur
);
pNtk
->
vFanins
=
*
p
->
vFaninsCur
;
Vec_WecZero
(
&
p
Ntk
->
vFanins
);
assert
(
Vec_IntSize
(
&
p
->
vInputsCur
)
!=
0
||
Vec_IntSize
(
&
p
->
vOutputsCur
)
!=
0
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vInouts
,
&
p
->
vInoutsCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vInputs
,
&
p
->
vInputsCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vOutputs
,
&
p
->
vOutputsCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vWires
,
&
p
->
vWiresCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vTypes
,
&
p
->
vTypesCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vFuncs
,
&
p
->
vFuncsCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vInstIds
,
&
p
->
vInstIdsCur
);
pNtk
->
vFanins
=
p
->
vFaninsCur
;
Vec_WecZero
(
&
p
->
vFaninsCur
);
return
pNtk
;
}
...
...
@@ -185,29 +185,25 @@ static inline Cba_Prs_t * Cba_PrsAlloc( char * pFileName )
p
->
pLimit
=
pLimit
;
p
->
pCur
=
pBuffer
;
p
->
pDesign
=
Cba_ManAlloc
(
pFileName
);
// temporaries
p
->
vCover
=
Vec_StrAlloc
(
1000
);
p
->
vTemp
=
Vec_IntAlloc
(
1000
);
p
->
vTemp2
=
Vec_IntAlloc
(
1000
);
return
p
;
}
static
inline
void
Cba_PrsFree
(
Cba_Prs_t
*
p
)
{
if
(
p
->
pDesign
)
Cba_ManFree
(
p
->
pDesign
);
Vec_Int
FreeP
(
&
p
->
vInoutsCur
);
Vec_Int
FreeP
(
&
p
->
vInputsCur
);
Vec_Int
FreeP
(
&
p
->
vOutputsCur
);
Vec_Int
FreeP
(
&
p
->
vWiresCur
);
Vec_Int
FreeP
(
&
p
->
vTypesCur
);
Vec_Int
FreeP
(
&
p
->
vFuncsCur
);
Vec_Int
FreeP
(
&
p
->
vInstIdsCur
);
Vec_WecFreeP
(
&
p
->
vFaninsCur
);
Vec_Int
Erase
(
&
p
->
vInoutsCur
);
Vec_Int
Erase
(
&
p
->
vInputsCur
);
Vec_Int
Erase
(
&
p
->
vOutputsCur
);
Vec_Int
Erase
(
&
p
->
vWiresCur
);
Vec_Int
Erase
(
&
p
->
vTypesCur
);
Vec_Int
Erase
(
&
p
->
vFuncsCur
);
Vec_Int
Erase
(
&
p
->
vInstIdsCur
);
ABC_FREE
(
p
->
vFaninsCur
.
pArray
);
// temporary
Vec_Str
FreeP
(
&
p
->
vCover
);
Vec_Int
FreeP
(
&
p
->
vTemp
);
Vec_Int
FreeP
(
&
p
->
vTemp2
);
Vec_Str
Erase
(
&
p
->
vCover
);
Vec_Int
Erase
(
&
p
->
vTemp
);
Vec_Int
Erase
(
&
p
->
vTemp2
);
ABC_FREE
(
p
->
pBuffer
);
ABC_FREE
(
p
);
}
...
...
src/base/cba/cbaReadBlif.c
View file @
705006a6
This diff is collapsed.
Click to expand it.
src/base/cba/cbaReadVer.c
View file @
705006a6
...
...
@@ -264,24 +264,24 @@ static inline int Cba_PrsReadRange( Cba_Prs_t * p )
{
if
(
!
Cba_PrsIsChar
(
p
,
'['
)
)
return
0
;
Vec_StrClear
(
p
->
vCover
);
Vec_StrPush
(
p
->
vCover
,
*
p
->
pCur
++
);
Vec_StrClear
(
&
p
->
vCover
);
Vec_StrPush
(
&
p
->
vCover
,
*
p
->
pCur
++
);
Cba_PrsUtilSkipSpaces
(
p
);
if
(
!
Cba_PrsIsDigit
(
p
)
)
return
Cba_PrsErrorSet
(
p
,
"Cannot read digit in range specification."
,
2
);
while
(
Cba_PrsIsDigit
(
p
)
)
Vec_StrPush
(
p
->
vCover
,
*
p
->
pCur
++
);
Vec_StrPush
(
&
p
->
vCover
,
*
p
->
pCur
++
);
Cba_PrsUtilSkipSpaces
(
p
);
if
(
Cba_PrsIsChar
(
p
,
':'
)
)
{
Vec_StrPush
(
p
->
vCover
,
*
p
->
pCur
++
);
Vec_StrPush
(
&
p
->
vCover
,
*
p
->
pCur
++
);
if
(
!
Cba_PrsIsDigit
(
p
)
)
return
Cba_PrsErrorSet
(
p
,
"Cannot read digit in range specification."
,
2
);
while
(
Cba_PrsIsDigit
(
p
)
)
Vec_StrPush
(
p
->
vCover
,
*
p
->
pCur
++
);
Vec_StrPush
(
&
p
->
vCover
,
*
p
->
pCur
++
);
Cba_PrsUtilSkipSpaces
(
p
);
}
if
(
!
Cba_PrsIsChar
(
p
,
']'
)
)
return
Cba_PrsErrorSet
(
p
,
"Cannot read closing brace in range specification."
,
2
);
Vec_StrPush
(
p
->
vCover
,
*
p
->
pCur
++
);
return
Abc_NamStrFindOrAddLim
(
p
->
pDesign
->
pNames
,
Vec_StrArray
(
p
->
vCover
),
Vec_StrArray
(
p
->
vCover
)
+
Vec_StrSize
(
p
->
vCover
),
NULL
);
Vec_StrPush
(
&
p
->
vCover
,
*
p
->
pCur
++
);
return
Abc_NamStrFindOrAddLim
(
p
->
pDesign
->
pNames
,
Vec_StrArray
(
&
p
->
vCover
),
Vec_StrArray
(
&
p
->
vCover
)
+
Vec_StrSize
(
&
p
->
vCover
),
NULL
);
}
static
inline
void
Cba_PrsReadSignalList
(
Cba_Prs_t
*
p
,
Vec_Int_t
*
vTemp
)
{
...
...
@@ -303,12 +303,12 @@ static inline void Cba_PrsReadSignalList( Cba_Prs_t * p, Vec_Int_t * vTemp )
static
inline
int
Cba_PrsReadDeclaration
(
Cba_Prs_t
*
p
,
int
Type
)
{
int
NameId
,
RangeId
,
RangeIdTemp
;
Vec_Int_t
*
vSigs
[
4
]
=
{
p
->
vInoutsCur
,
p
->
vInputsCur
,
p
->
vOutputsCur
,
p
->
vWiresCur
};
Vec_Int_t
*
vSigs
[
4
]
=
{
&
p
->
vInoutsCur
,
&
p
->
vInputsCur
,
&
p
->
vOutputsCur
,
&
p
->
vWiresCur
};
assert
(
Type
>=
CBA_VER_INOUT
&&
Type
<=
CBA_VER_WIRE
);
Cba_PrsUtilSkipSpaces
(
p
);
RangeId
=
Cba_PrsReadRange
(
p
);
Cba_PrsReadSignalList
(
p
,
p
->
vTemp
);
Vec_IntForEachEntryDouble
(
p
->
vTemp
,
NameId
,
RangeId
,
RangeIdTemp
)
Cba_PrsReadSignalList
(
p
,
&
p
->
vTemp
);
Vec_IntForEachEntryDouble
(
&
p
->
vTemp
,
NameId
,
RangeId
,
RangeIdTemp
)
{
if
(
!
RangeIdTemp
)
return
Cba_PrsErrorSet
(
p
,
"Range is specified twice in the declaration."
,
0
);
Vec_IntPushTwo
(
vSigs
[
Type
-
CBA_VER_INOUT
],
NameId
,
RangeId
);
...
...
@@ -317,17 +317,17 @@ static inline int Cba_PrsReadDeclaration( Cba_Prs_t * p, int Type )
}
static
inline
int
Cba_PrsReadConcat
(
Cba_Prs_t
*
p
)
{
int
iToken
=
Vec_WecSize
(
p
->
vFaninsCur
);
int
iToken
=
Vec_WecSize
(
&
p
->
vFaninsCur
);
assert
(
Cba_PrsIsChar
(
p
,
'{'
)
);
p
->
pCur
++
;
Cba_PrsReadSignalList
(
p
,
p
->
vTemp2
);
Cba_PrsReadSignalList
(
p
,
&
p
->
vTemp2
);
if
(
!
Cba_PrsIsChar
(
p
,
'}'
)
)
return
Cba_PrsErrorSet
(
p
,
"Cannot read concatenation."
,
0
);
p
->
pCur
++
;
// assign
Vec_IntPush
(
p
->
vTypesCur
,
CBA_PRS_CONCAT
);
Vec_IntPush
(
p
->
vFuncsCur
,
0
);
Vec_IntPush
(
p
->
vInstIdsCur
,
0
);
Cba_PrsSetupVecInt
(
p
,
Vec_WecPushLevel
(
p
->
vFaninsCur
),
p
->
vTemp2
);
Vec_IntPush
(
&
p
->
vTypesCur
,
CBA_PRS_CONCAT
);
Vec_IntPush
(
&
p
->
vFuncsCur
,
0
);
Vec_IntPush
(
&
p
->
vInstIdsCur
,
0
);
Cba_PrsSetupVecInt
(
p
,
Vec_WecPushLevel
(
&
p
->
vFaninsCur
),
&
p
->
vTemp2
);
return
iToken
;
}
...
...
@@ -335,7 +335,7 @@ static inline int Cba_PrsReadInstance( Cba_Prs_t * p, int Func )
{
// have to assign Type, Func, InstId, vFanins
int
FormId
,
NameId
,
RangeId
,
Type
,
InstId
;
Vec_IntClear
(
p
->
vTemp
);
Vec_IntClear
(
&
p
->
vTemp
);
Cba_PrsUtilSkipSpaces
(
p
);
if
(
Cba_PrsIsChar
(
p
,
'('
)
)
// node
{
...
...
@@ -355,7 +355,7 @@ static inline int Cba_PrsReadInstance( Cba_Prs_t * p, int Func )
NameId
=
Cba_PrsReadName
(
p
);
RangeId
=
Cba_PrsReadRange
(
p
);
}
Vec_IntPushTwo
(
p
->
vTemp
,
NameId
,
RangeId
);
Vec_IntPushTwo
(
&
p
->
vTemp
,
NameId
,
RangeId
);
Cba_PrsUtilSkipSpaces
(
p
);
if
(
Cba_PrsIsChar
(
p
,
')'
)
)
break
;
...
...
@@ -390,7 +390,7 @@ static inline int Cba_PrsReadInstance( Cba_Prs_t * p, int Func )
NameId
=
Cba_PrsReadName
(
p
);
RangeId
=
Cba_PrsReadRange
(
p
);
}
Vec_IntPushTwo
(
p
->
vTemp
,
NameId
,
RangeId
);
Vec_IntPushTwo
(
&
p
->
vTemp
,
NameId
,
RangeId
);
Cba_PrsUtilSkipSpaces
(
p
);
if
(
!
Cba_PrsIsChar
(
p
,
')'
)
)
return
Cba_PrsErrorSet
(
p
,
"Expecting opening paranthesis after the acctual name."
,
2
);
p
->
pCur
++
;
...
...
@@ -402,10 +402,10 @@ static inline int Cba_PrsReadInstance( Cba_Prs_t * p, int Func )
}
}
// assign
Vec_IntPush
(
p
->
vTypesCur
,
Type
);
Vec_IntPush
(
p
->
vFuncsCur
,
Func
);
Vec_IntPush
(
p
->
vInstIdsCur
,
InstId
);
Cba_PrsSetupVecInt
(
p
,
Vec_WecPushLevel
(
p
->
vFaninsCur
),
p
->
vTemp
);
Vec_IntPush
(
&
p
->
vTypesCur
,
Type
);
Vec_IntPush
(
&
p
->
vFuncsCur
,
Func
);
Vec_IntPush
(
&
p
->
vInstIdsCur
,
InstId
);
Cba_PrsSetupVecInt
(
p
,
Vec_WecPushLevel
(
&
p
->
vFaninsCur
),
&
p
->
vTemp
);
return
0
;
}
...
...
@@ -414,7 +414,7 @@ static inline int Cba_PrsReadInstance( Cba_Prs_t * p, int Func )
static
inline
int
Cba_PrsReadModule
(
Cba_Prs_t
*
p
)
{
int
fKnown
,
iToken
,
iNameId
;
assert
(
Vec_IntSize
(
p
->
vInputsCur
)
==
0
&&
Vec_IntSize
(
p
->
vOutputsCur
)
==
0
);
assert
(
Vec_IntSize
(
&
p
->
vInputsCur
)
==
0
&&
Vec_IntSize
(
&
p
->
vOutputsCur
)
==
0
);
Cba_PrsUtilSkipSpaces
(
p
);
if
(
!
Cba_PrsOk
(
p
)
)
return
0
;
// read keyword
...
...
src/base/cba/cbaWriteBlif.c
View file @
705006a6
...
...
@@ -57,6 +57,7 @@ void Cba_PrsWriteBlifArray2( FILE * pFile, Cba_Ntk_t * p, Vec_Int_t * vFanins )
assert
(
Vec_IntSize
(
vFanins
)
%
2
==
0
);
Vec_IntForEachEntryDouble
(
vFanins
,
FormId
,
NameId
,
i
)
fprintf
(
pFile
,
" %s=%s"
,
Cba_NtkStr
(
p
,
FormId
),
Cba_NtkStr
(
p
,
NameId
)
);
fprintf
(
pFile
,
"
\n
"
);
}
void
Cba_PrsWriteBlifLines
(
FILE
*
pFile
,
Cba_Ntk_t
*
p
)
{
...
...
@@ -67,19 +68,19 @@ void Cba_PrsWriteBlifLines( FILE * pFile, Cba_Ntk_t * p )
{
fprintf
(
pFile
,
".names"
);
Cba_PrsWriteBlifArray
(
pFile
,
p
,
vFanins
,
1
);
fprintf
(
pFile
,
"
%s"
,
Cba_Ntk
Str
(
p
,
Func
)
);
fprintf
(
pFile
,
"
%s"
,
Cba_NtkFunc
Str
(
p
,
Func
)
);
}
else
if
(
Type
==
CBA_PRS_BOX
)
// .names/assign/box2 (no formal/actual binding)
{
fprintf
(
pFile
,
".subckt"
);
fprintf
(
pFile
,
" %s"
,
Cba_Ntk
Func
Str
(
p
,
Func
)
);
fprintf
(
pFile
,
" %s"
,
Cba_NtkStr
(
p
,
Func
)
);
Cba_PrsWriteBlifArray2
(
pFile
,
p
,
vFanins
);
}
else
if
(
Type
==
CBA_PRS_LATCH
)
// .names/assign/box2 (no formal/actual binding)
{
fprintf
(
pFile
,
".latch"
);
fprintf
(
pFile
,
" %s"
,
Cba_Ntk
Func
Str
(
p
,
Vec_IntEntry
(
vFanins
,
1
))
);
fprintf
(
pFile
,
" %s"
,
Cba_Ntk
Func
Str
(
p
,
Vec_IntEntry
(
vFanins
,
0
))
);
fprintf
(
pFile
,
" %s"
,
Cba_NtkStr
(
p
,
Vec_IntEntry
(
vFanins
,
1
))
);
fprintf
(
pFile
,
" %s"
,
Cba_NtkStr
(
p
,
Vec_IntEntry
(
vFanins
,
0
))
);
fprintf
(
pFile
,
" %c
\n
"
,
'0'
+
Func
);
}
}
...
...
@@ -89,7 +90,9 @@ void Cba_PrsWriteBlifNtk( FILE * pFile, Cba_Ntk_t * p )
assert
(
Vec_IntSize
(
&
p
->
vFuncs
)
==
Cba_NtkObjNum
(
p
)
);
// write header
fprintf
(
pFile
,
".model %s
\n
"
,
Cba_NtkName
(
p
)
);
if
(
Vec_IntSize
(
&
p
->
vInouts
)
)
fprintf
(
pFile
,
".inouts"
);
if
(
Vec_IntSize
(
&
p
->
vInouts
)
)
Cba_PrsWriteBlifArray
(
pFile
,
p
,
&
p
->
vInouts
,
0
);
fprintf
(
pFile
,
".inputs"
);
Cba_PrsWriteBlifArray
(
pFile
,
p
,
&
p
->
vInputs
,
0
);
...
...
@@ -97,7 +100,7 @@ void Cba_PrsWriteBlifNtk( FILE * pFile, Cba_Ntk_t * p )
Cba_PrsWriteBlifArray
(
pFile
,
p
,
&
p
->
vOutputs
,
0
);
// write objects
Cba_PrsWriteBlifLines
(
pFile
,
p
);
fprintf
(
pFile
,
".end
\n
"
);
fprintf
(
pFile
,
".end
\n
\n
"
);
}
void
Cba_PrsWriteBlif
(
char
*
pFileName
,
Cba_Man_t
*
pDes
)
{
...
...
src/misc/util/utilNam.c
View file @
705006a6
...
...
@@ -257,7 +257,7 @@ int Abc_NamStrHash( const char * pStr, const char * pLim, int nTableSize )
unsigned
i
,
uHash
;
if
(
pLim
)
{
for
(
uHash
=
0
,
i
=
0
;
pStr
<
pLim
;
i
++
)
for
(
uHash
=
0
,
i
=
0
;
pStr
+
i
<
pLim
;
i
++
)
if
(
i
&
1
)
uHash
*=
pStr
[
i
]
*
s_FPrimes
[
i
&
0x7F
];
else
...
...
@@ -285,6 +285,23 @@ int Abc_NamStrHash( const char * pStr, const char * pLim, int nTableSize )
SeeAlso []
***********************************************************************/
static
inline
int
Abc_NamStrcmp
(
char
*
pStr
,
char
*
pLim
,
char
*
pThis
)
{
if
(
pLim
)
{
while
(
pStr
<
pLim
)
if
(
*
pStr
++
!=
*
pThis
++
)
return
1
;
return
*
pThis
!=
'\0'
;
}
else
{
while
(
*
pStr
)
if
(
*
pStr
++
!=
*
pThis
++
)
return
1
;
return
*
pThis
!=
'\0'
;
}
}
static
inline
int
*
Abc_NamStrHashFind
(
Abc_Nam_t
*
p
,
const
char
*
pStr
,
const
char
*
pLim
)
{
char
*
pThis
;
...
...
@@ -293,7 +310,7 @@ static inline int * Abc_NamStrHashFind( Abc_Nam_t * p, const char * pStr, const
for
(
pThis
=
(
*
pPlace
)
?
Abc_NamIntToStr
(
p
,
*
pPlace
)
:
NULL
;
pThis
;
pPlace
=
Abc_NamIntToNextP
(
p
,
*
pPlace
),
pThis
=
(
*
pPlace
)
?
Abc_NamIntToStr
(
p
,
*
pPlace
)
:
NULL
)
if
(
!
strcmp
(
pStr
,
pThis
)
)
if
(
!
Abc_NamStrcmp
(
(
char
*
)
pStr
,
(
char
*
)
pLim
,
pThis
)
)
break
;
return
pPlace
;
}
...
...
src/misc/vec/vecStr.h
View file @
705006a6
...
...
@@ -201,6 +201,18 @@ static inline Vec_Str_t * Vec_StrDupArray( Vec_Str_t * pVec )
SeeAlso []
***********************************************************************/
static
inline
void
Vec_StrZero
(
Vec_Str_t
*
p
)
{
p
->
pArray
=
NULL
;
p
->
nSize
=
0
;
p
->
nCap
=
0
;
}
static
inline
void
Vec_StrErase
(
Vec_Str_t
*
p
)
{
ABC_FREE
(
p
->
pArray
);
p
->
nSize
=
0
;
p
->
nCap
=
0
;
}
static
inline
void
Vec_StrFree
(
Vec_Str_t
*
p
)
{
ABC_FREE
(
p
->
pArray
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment