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
Show 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 )
...
@@ -10834,6 +10834,10 @@ int Abc_CommandTest( Abc_Frame_t * pAbc, int argc, char ** argv )
Abc_IsopTestNew();
Abc_IsopTestNew();
}
}
*/
*/
{
extern
void
Cba_PrsReadBlifTest
();
Cba_PrsReadBlifTest
();
}
return
0
;
return
0
;
usage:
usage:
Abc_Print
(
-
2
,
"usage: test [-CKDNM] [-aovwh] <file_name>
\n
"
);
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 )
...
@@ -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
);
Cba_Ntk_t
*
pNtk
=
ABC_CALLOC
(
Cba_Ntk_t
,
1
);
pNtk
->
pDesign
=
p
;
pNtk
->
pDesign
=
p
;
pNtk
->
pName
=
pName
;
pNtk
->
pName
=
Abc_UtilStrsav
(
pName
)
;
Vec_PtrPush
(
&
p
->
vNtks
,
pNtk
);
Vec_PtrPush
(
&
p
->
vNtks
,
pNtk
);
return
pNtk
;
return
pNtk
;
}
}
...
@@ -169,9 +169,13 @@ static inline void Cba_NtkFree( Cba_Ntk_t * p )
...
@@ -169,9 +169,13 @@ static inline void Cba_NtkFree( Cba_Ntk_t * p )
Vec_IntErase
(
&
p
->
vNameIds
);
Vec_IntErase
(
&
p
->
vNameIds
);
Vec_IntErase
(
&
p
->
vRanges
);
Vec_IntErase
(
&
p
->
vRanges
);
Vec_IntErase
(
&
p
->
vCopies
);
Vec_IntErase
(
&
p
->
vCopies
);
ABC_FREE
(
p
->
pName
);
ABC_FREE
(
p
);
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
)
static
inline
Cba_Man_t
*
Cba_ManAlloc
(
char
*
pFileName
)
{
{
...
@@ -193,6 +197,7 @@ static inline void Cba_ManFree( Cba_Man_t * p )
...
@@ -193,6 +197,7 @@ static inline void Cba_ManFree( Cba_Man_t * p )
Cba_Ntk_t
*
pNtk
;
int
i
;
Cba_Ntk_t
*
pNtk
;
int
i
;
Cba_ManForEachNtk
(
p
,
pNtk
,
i
)
Cba_ManForEachNtk
(
p
,
pNtk
,
i
)
Cba_NtkFree
(
pNtk
);
Cba_NtkFree
(
pNtk
);
ABC_FREE
(
p
->
vNtks
.
pArray
);
Mem_FlexStop
(
p
->
pMem
,
0
);
Mem_FlexStop
(
p
->
pMem
,
0
);
// design names
// design names
Abc_NamStop
(
p
->
pNames
);
Abc_NamStop
(
p
->
pNames
);
...
@@ -202,6 +207,19 @@ static inline void Cba_ManFree( Cba_Man_t * p )
...
@@ -202,6 +207,19 @@ static inline void Cba_ManFree( Cba_Man_t * p )
ABC_FREE
(
p
->
pSpec
);
ABC_FREE
(
p
->
pSpec
);
ABC_FREE
(
p
);
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 =========================================================*/
/*=== cbaReadBlif.c =========================================================*/
...
...
src/base/cba/cbaPrs.h
View file @
705006a6
...
@@ -78,19 +78,19 @@ struct Cba_Prs_t_
...
@@ -78,19 +78,19 @@ struct Cba_Prs_t_
Cba_Man_t
*
pDesign
;
Cba_Man_t
*
pDesign
;
// interface collected by the parser
// interface collected by the parser
int
iModuleName
;
// name Id
int
iModuleName
;
// name Id
Vec_Int_t
*
vInoutsCur
;
// inouts
Vec_Int_t
vInoutsCur
;
// inouts
Vec_Int_t
*
vInputsCur
;
// inputs
Vec_Int_t
vInputsCur
;
// inputs
Vec_Int_t
*
vOutputsCur
;
// outputs
Vec_Int_t
vOutputsCur
;
// outputs
Vec_Int_t
*
vWiresCur
;
// wires
Vec_Int_t
vWiresCur
;
// wires
// objects collected by the parser
// objects collected by the parser
Vec_Int_t
*
vTypesCur
;
// Cba_PrsType_t
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
vFuncsCur
;
// functions (node->func; box->module; gate->cell; latch->init; concat->unused)
Vec_Int_t
*
vInstIdsCur
;
// instance names
Vec_Int_t
vInstIdsCur
;
// instance names
Vec_Wec_t
*
vFaninsCur
;
// instances
Vec_Wec_t
vFaninsCur
;
// instances
// temporary data
// temporary data
Vec_Str_t
*
vCover
;
// one SOP cover
Vec_Str_t
vCover
;
// one SOP cover
Vec_Int_t
*
vTemp
;
// array of tokens
Vec_Int_t
vTemp
;
// array of tokens
Vec_Int_t
*
vTemp2
;
// array of tokens
Vec_Int_t
vTemp2
;
// array of tokens
// error handling
// error handling
char
ErrorStr
[
1000
];
// error
char
ErrorStr
[
1000
];
// error
};
};
...
@@ -132,16 +132,16 @@ static inline void Cba_PrsSetupVecInt( Cba_Prs_t * p, Vec_Int_t * vTo, Vec_Int_t
...
@@ -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
)
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
)
);
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
);
assert
(
Vec_IntSize
(
&
p
->
vInputsCur
)
!=
0
||
Vec_IntSize
(
&
p
->
vOutputsCur
)
!=
0
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vInouts
,
p
->
vInoutsCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vInouts
,
&
p
->
vInoutsCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vInputs
,
p
->
vInputsCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vInputs
,
&
p
->
vInputsCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vOutputs
,
p
->
vOutputsCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vOutputs
,
&
p
->
vOutputsCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vWires
,
p
->
vWiresCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vWires
,
&
p
->
vWiresCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vTypes
,
p
->
vTypesCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vTypes
,
&
p
->
vTypesCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vFuncs
,
p
->
vFuncsCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vFuncs
,
&
p
->
vFuncsCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vInstIds
,
p
->
vInstIdsCur
);
Cba_PrsSetupVecInt
(
p
,
&
pNtk
->
vInstIds
,
&
p
->
vInstIdsCur
);
pNtk
->
vFanins
=
*
p
->
vFaninsCur
;
pNtk
->
vFanins
=
p
->
vFaninsCur
;
Vec_WecZero
(
&
p
Ntk
->
vFanins
);
Vec_WecZero
(
&
p
->
vFaninsCur
);
return
pNtk
;
return
pNtk
;
}
}
...
@@ -185,29 +185,25 @@ static inline Cba_Prs_t * Cba_PrsAlloc( char * pFileName )
...
@@ -185,29 +185,25 @@ static inline Cba_Prs_t * Cba_PrsAlloc( char * pFileName )
p
->
pLimit
=
pLimit
;
p
->
pLimit
=
pLimit
;
p
->
pCur
=
pBuffer
;
p
->
pCur
=
pBuffer
;
p
->
pDesign
=
Cba_ManAlloc
(
pFileName
);
p
->
pDesign
=
Cba_ManAlloc
(
pFileName
);
// temporaries
p
->
vCover
=
Vec_StrAlloc
(
1000
);
p
->
vTemp
=
Vec_IntAlloc
(
1000
);
p
->
vTemp2
=
Vec_IntAlloc
(
1000
);
return
p
;
return
p
;
}
}
static
inline
void
Cba_PrsFree
(
Cba_Prs_t
*
p
)
static
inline
void
Cba_PrsFree
(
Cba_Prs_t
*
p
)
{
{
if
(
p
->
pDesign
)
if
(
p
->
pDesign
)
Cba_ManFree
(
p
->
pDesign
);
Cba_ManFree
(
p
->
pDesign
);
Vec_Int
FreeP
(
&
p
->
vInoutsCur
);
Vec_Int
Erase
(
&
p
->
vInoutsCur
);
Vec_Int
FreeP
(
&
p
->
vInputsCur
);
Vec_Int
Erase
(
&
p
->
vInputsCur
);
Vec_Int
FreeP
(
&
p
->
vOutputsCur
);
Vec_Int
Erase
(
&
p
->
vOutputsCur
);
Vec_Int
FreeP
(
&
p
->
vWiresCur
);
Vec_Int
Erase
(
&
p
->
vWiresCur
);
Vec_Int
FreeP
(
&
p
->
vTypesCur
);
Vec_Int
Erase
(
&
p
->
vTypesCur
);
Vec_Int
FreeP
(
&
p
->
vFuncsCur
);
Vec_Int
Erase
(
&
p
->
vFuncsCur
);
Vec_Int
FreeP
(
&
p
->
vInstIdsCur
);
Vec_Int
Erase
(
&
p
->
vInstIdsCur
);
Vec_WecFreeP
(
&
p
->
vFaninsCur
);
ABC_FREE
(
p
->
vFaninsCur
.
pArray
);
// temporary
// temporary
Vec_Str
FreeP
(
&
p
->
vCover
);
Vec_Str
Erase
(
&
p
->
vCover
);
Vec_Int
FreeP
(
&
p
->
vTemp
);
Vec_Int
Erase
(
&
p
->
vTemp
);
Vec_Int
FreeP
(
&
p
->
vTemp2
);
Vec_Int
Erase
(
&
p
->
vTemp2
);
ABC_FREE
(
p
->
pBuffer
);
ABC_FREE
(
p
->
pBuffer
);
ABC_FREE
(
p
);
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 )
...
@@ -264,24 +264,24 @@ static inline int Cba_PrsReadRange( Cba_Prs_t * p )
{
{
if
(
!
Cba_PrsIsChar
(
p
,
'['
)
)
if
(
!
Cba_PrsIsChar
(
p
,
'['
)
)
return
0
;
return
0
;
Vec_StrClear
(
p
->
vCover
);
Vec_StrClear
(
&
p
->
vCover
);
Vec_StrPush
(
p
->
vCover
,
*
p
->
pCur
++
);
Vec_StrPush
(
&
p
->
vCover
,
*
p
->
pCur
++
);
Cba_PrsUtilSkipSpaces
(
p
);
Cba_PrsUtilSkipSpaces
(
p
);
if
(
!
Cba_PrsIsDigit
(
p
)
)
return
Cba_PrsErrorSet
(
p
,
"Cannot read digit in range specification."
,
2
);
if
(
!
Cba_PrsIsDigit
(
p
)
)
return
Cba_PrsErrorSet
(
p
,
"Cannot read digit in range specification."
,
2
);
while
(
Cba_PrsIsDigit
(
p
)
)
while
(
Cba_PrsIsDigit
(
p
)
)
Vec_StrPush
(
p
->
vCover
,
*
p
->
pCur
++
);
Vec_StrPush
(
&
p
->
vCover
,
*
p
->
pCur
++
);
Cba_PrsUtilSkipSpaces
(
p
);
Cba_PrsUtilSkipSpaces
(
p
);
if
(
Cba_PrsIsChar
(
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
);
if
(
!
Cba_PrsIsDigit
(
p
)
)
return
Cba_PrsErrorSet
(
p
,
"Cannot read digit in range specification."
,
2
);
while
(
Cba_PrsIsDigit
(
p
)
)
while
(
Cba_PrsIsDigit
(
p
)
)
Vec_StrPush
(
p
->
vCover
,
*
p
->
pCur
++
);
Vec_StrPush
(
&
p
->
vCover
,
*
p
->
pCur
++
);
Cba_PrsUtilSkipSpaces
(
p
);
Cba_PrsUtilSkipSpaces
(
p
);
}
}
if
(
!
Cba_PrsIsChar
(
p
,
']'
)
)
return
Cba_PrsErrorSet
(
p
,
"Cannot read closing brace in range specification."
,
2
);
if
(
!
Cba_PrsIsChar
(
p
,
']'
)
)
return
Cba_PrsErrorSet
(
p
,
"Cannot read closing brace in range specification."
,
2
);
Vec_StrPush
(
p
->
vCover
,
*
p
->
pCur
++
);
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
);
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
)
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 )
...
@@ -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
)
static
inline
int
Cba_PrsReadDeclaration
(
Cba_Prs_t
*
p
,
int
Type
)
{
{
int
NameId
,
RangeId
,
RangeIdTemp
;
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
);
assert
(
Type
>=
CBA_VER_INOUT
&&
Type
<=
CBA_VER_WIRE
);
Cba_PrsUtilSkipSpaces
(
p
);
Cba_PrsUtilSkipSpaces
(
p
);
RangeId
=
Cba_PrsReadRange
(
p
);
RangeId
=
Cba_PrsReadRange
(
p
);
Cba_PrsReadSignalList
(
p
,
p
->
vTemp
);
Cba_PrsReadSignalList
(
p
,
&
p
->
vTemp
);
Vec_IntForEachEntryDouble
(
p
->
vTemp
,
NameId
,
RangeId
,
RangeIdTemp
)
Vec_IntForEachEntryDouble
(
&
p
->
vTemp
,
NameId
,
RangeId
,
RangeIdTemp
)
{
{
if
(
!
RangeIdTemp
)
return
Cba_PrsErrorSet
(
p
,
"Range is specified twice in the declaration."
,
0
);
if
(
!
RangeIdTemp
)
return
Cba_PrsErrorSet
(
p
,
"Range is specified twice in the declaration."
,
0
);
Vec_IntPushTwo
(
vSigs
[
Type
-
CBA_VER_INOUT
],
NameId
,
RangeId
);
Vec_IntPushTwo
(
vSigs
[
Type
-
CBA_VER_INOUT
],
NameId
,
RangeId
);
...
@@ -317,17 +317,17 @@ static inline int Cba_PrsReadDeclaration( Cba_Prs_t * p, int Type )
...
@@ -317,17 +317,17 @@ static inline int Cba_PrsReadDeclaration( Cba_Prs_t * p, int Type )
}
}
static
inline
int
Cba_PrsReadConcat
(
Cba_Prs_t
*
p
)
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
,
'{'
)
);
assert
(
Cba_PrsIsChar
(
p
,
'{'
)
);
p
->
pCur
++
;
p
->
pCur
++
;
Cba_PrsReadSignalList
(
p
,
p
->
vTemp2
);
Cba_PrsReadSignalList
(
p
,
&
p
->
vTemp2
);
if
(
!
Cba_PrsIsChar
(
p
,
'}'
)
)
return
Cba_PrsErrorSet
(
p
,
"Cannot read concatenation."
,
0
);
if
(
!
Cba_PrsIsChar
(
p
,
'}'
)
)
return
Cba_PrsErrorSet
(
p
,
"Cannot read concatenation."
,
0
);
p
->
pCur
++
;
p
->
pCur
++
;
// assign
// assign
Vec_IntPush
(
p
->
vTypesCur
,
CBA_PRS_CONCAT
);
Vec_IntPush
(
&
p
->
vTypesCur
,
CBA_PRS_CONCAT
);
Vec_IntPush
(
p
->
vFuncsCur
,
0
);
Vec_IntPush
(
&
p
->
vFuncsCur
,
0
);
Vec_IntPush
(
p
->
vInstIdsCur
,
0
);
Vec_IntPush
(
&
p
->
vInstIdsCur
,
0
);
Cba_PrsSetupVecInt
(
p
,
Vec_WecPushLevel
(
p
->
vFaninsCur
),
p
->
vTemp2
);
Cba_PrsSetupVecInt
(
p
,
Vec_WecPushLevel
(
&
p
->
vFaninsCur
),
&
p
->
vTemp2
);
return
iToken
;
return
iToken
;
}
}
...
@@ -335,7 +335,7 @@ static inline int Cba_PrsReadInstance( Cba_Prs_t * p, int Func )
...
@@ -335,7 +335,7 @@ static inline int Cba_PrsReadInstance( Cba_Prs_t * p, int Func )
{
{
// have to assign Type, Func, InstId, vFanins
// have to assign Type, Func, InstId, vFanins
int
FormId
,
NameId
,
RangeId
,
Type
,
InstId
;
int
FormId
,
NameId
,
RangeId
,
Type
,
InstId
;
Vec_IntClear
(
p
->
vTemp
);
Vec_IntClear
(
&
p
->
vTemp
);
Cba_PrsUtilSkipSpaces
(
p
);
Cba_PrsUtilSkipSpaces
(
p
);
if
(
Cba_PrsIsChar
(
p
,
'('
)
)
// node
if
(
Cba_PrsIsChar
(
p
,
'('
)
)
// node
{
{
...
@@ -355,7 +355,7 @@ static inline int Cba_PrsReadInstance( Cba_Prs_t * p, int Func )
...
@@ -355,7 +355,7 @@ static inline int Cba_PrsReadInstance( Cba_Prs_t * p, int Func )
NameId
=
Cba_PrsReadName
(
p
);
NameId
=
Cba_PrsReadName
(
p
);
RangeId
=
Cba_PrsReadRange
(
p
);
RangeId
=
Cba_PrsReadRange
(
p
);
}
}
Vec_IntPushTwo
(
p
->
vTemp
,
NameId
,
RangeId
);
Vec_IntPushTwo
(
&
p
->
vTemp
,
NameId
,
RangeId
);
Cba_PrsUtilSkipSpaces
(
p
);
Cba_PrsUtilSkipSpaces
(
p
);
if
(
Cba_PrsIsChar
(
p
,
')'
)
)
if
(
Cba_PrsIsChar
(
p
,
')'
)
)
break
;
break
;
...
@@ -390,7 +390,7 @@ static inline int Cba_PrsReadInstance( Cba_Prs_t * p, int Func )
...
@@ -390,7 +390,7 @@ static inline int Cba_PrsReadInstance( Cba_Prs_t * p, int Func )
NameId
=
Cba_PrsReadName
(
p
);
NameId
=
Cba_PrsReadName
(
p
);
RangeId
=
Cba_PrsReadRange
(
p
);
RangeId
=
Cba_PrsReadRange
(
p
);
}
}
Vec_IntPushTwo
(
p
->
vTemp
,
NameId
,
RangeId
);
Vec_IntPushTwo
(
&
p
->
vTemp
,
NameId
,
RangeId
);
Cba_PrsUtilSkipSpaces
(
p
);
Cba_PrsUtilSkipSpaces
(
p
);
if
(
!
Cba_PrsIsChar
(
p
,
')'
)
)
return
Cba_PrsErrorSet
(
p
,
"Expecting opening paranthesis after the acctual name."
,
2
);
if
(
!
Cba_PrsIsChar
(
p
,
')'
)
)
return
Cba_PrsErrorSet
(
p
,
"Expecting opening paranthesis after the acctual name."
,
2
);
p
->
pCur
++
;
p
->
pCur
++
;
...
@@ -402,10 +402,10 @@ static inline int Cba_PrsReadInstance( Cba_Prs_t * p, int Func )
...
@@ -402,10 +402,10 @@ static inline int Cba_PrsReadInstance( Cba_Prs_t * p, int Func )
}
}
}
}
// assign
// assign
Vec_IntPush
(
p
->
vTypesCur
,
Type
);
Vec_IntPush
(
&
p
->
vTypesCur
,
Type
);
Vec_IntPush
(
p
->
vFuncsCur
,
Func
);
Vec_IntPush
(
&
p
->
vFuncsCur
,
Func
);
Vec_IntPush
(
p
->
vInstIdsCur
,
InstId
);
Vec_IntPush
(
&
p
->
vInstIdsCur
,
InstId
);
Cba_PrsSetupVecInt
(
p
,
Vec_WecPushLevel
(
p
->
vFaninsCur
),
p
->
vTemp
);
Cba_PrsSetupVecInt
(
p
,
Vec_WecPushLevel
(
&
p
->
vFaninsCur
),
&
p
->
vTemp
);
return
0
;
return
0
;
}
}
...
@@ -414,7 +414,7 @@ static inline int Cba_PrsReadInstance( Cba_Prs_t * p, int Func )
...
@@ -414,7 +414,7 @@ static inline int Cba_PrsReadInstance( Cba_Prs_t * p, int Func )
static
inline
int
Cba_PrsReadModule
(
Cba_Prs_t
*
p
)
static
inline
int
Cba_PrsReadModule
(
Cba_Prs_t
*
p
)
{
{
int
fKnown
,
iToken
,
iNameId
;
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
);
Cba_PrsUtilSkipSpaces
(
p
);
if
(
!
Cba_PrsOk
(
p
)
)
return
0
;
if
(
!
Cba_PrsOk
(
p
)
)
return
0
;
// read keyword
// 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 )
...
@@ -57,6 +57,7 @@ void Cba_PrsWriteBlifArray2( FILE * pFile, Cba_Ntk_t * p, Vec_Int_t * vFanins )
assert
(
Vec_IntSize
(
vFanins
)
%
2
==
0
);
assert
(
Vec_IntSize
(
vFanins
)
%
2
==
0
);
Vec_IntForEachEntryDouble
(
vFanins
,
FormId
,
NameId
,
i
)
Vec_IntForEachEntryDouble
(
vFanins
,
FormId
,
NameId
,
i
)
fprintf
(
pFile
,
" %s=%s"
,
Cba_NtkStr
(
p
,
FormId
),
Cba_NtkStr
(
p
,
NameId
)
);
fprintf
(
pFile
,
" %s=%s"
,
Cba_NtkStr
(
p
,
FormId
),
Cba_NtkStr
(
p
,
NameId
)
);
fprintf
(
pFile
,
"
\n
"
);
}
}
void
Cba_PrsWriteBlifLines
(
FILE
*
pFile
,
Cba_Ntk_t
*
p
)
void
Cba_PrsWriteBlifLines
(
FILE
*
pFile
,
Cba_Ntk_t
*
p
)
{
{
...
@@ -67,19 +68,19 @@ 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"
);
fprintf
(
pFile
,
".names"
);
Cba_PrsWriteBlifArray
(
pFile
,
p
,
vFanins
,
1
);
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)
else
if
(
Type
==
CBA_PRS_BOX
)
// .names/assign/box2 (no formal/actual binding)
{
{
fprintf
(
pFile
,
".subckt"
);
fprintf
(
pFile
,
".subckt"
);
fprintf
(
pFile
,
" %s"
,
Cba_Ntk
Func
Str
(
p
,
Func
)
);
fprintf
(
pFile
,
" %s"
,
Cba_NtkStr
(
p
,
Func
)
);
Cba_PrsWriteBlifArray2
(
pFile
,
p
,
vFanins
);
Cba_PrsWriteBlifArray2
(
pFile
,
p
,
vFanins
);
}
}
else
if
(
Type
==
CBA_PRS_LATCH
)
// .names/assign/box2 (no formal/actual binding)
else
if
(
Type
==
CBA_PRS_LATCH
)
// .names/assign/box2 (no formal/actual binding)
{
{
fprintf
(
pFile
,
".latch"
);
fprintf
(
pFile
,
".latch"
);
fprintf
(
pFile
,
" %s"
,
Cba_Ntk
Func
Str
(
p
,
Vec_IntEntry
(
vFanins
,
1
))
);
fprintf
(
pFile
,
" %s"
,
Cba_NtkStr
(
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
,
0
))
);
fprintf
(
pFile
,
" %c
\n
"
,
'0'
+
Func
);
fprintf
(
pFile
,
" %c
\n
"
,
'0'
+
Func
);
}
}
}
}
...
@@ -89,7 +90,9 @@ void Cba_PrsWriteBlifNtk( FILE * pFile, Cba_Ntk_t * p )
...
@@ -89,7 +90,9 @@ void Cba_PrsWriteBlifNtk( FILE * pFile, Cba_Ntk_t * p )
assert
(
Vec_IntSize
(
&
p
->
vFuncs
)
==
Cba_NtkObjNum
(
p
)
);
assert
(
Vec_IntSize
(
&
p
->
vFuncs
)
==
Cba_NtkObjNum
(
p
)
);
// write header
// write header
fprintf
(
pFile
,
".model %s
\n
"
,
Cba_NtkName
(
p
)
);
fprintf
(
pFile
,
".model %s
\n
"
,
Cba_NtkName
(
p
)
);
if
(
Vec_IntSize
(
&
p
->
vInouts
)
)
fprintf
(
pFile
,
".inouts"
);
fprintf
(
pFile
,
".inouts"
);
if
(
Vec_IntSize
(
&
p
->
vInouts
)
)
Cba_PrsWriteBlifArray
(
pFile
,
p
,
&
p
->
vInouts
,
0
);
Cba_PrsWriteBlifArray
(
pFile
,
p
,
&
p
->
vInouts
,
0
);
fprintf
(
pFile
,
".inputs"
);
fprintf
(
pFile
,
".inputs"
);
Cba_PrsWriteBlifArray
(
pFile
,
p
,
&
p
->
vInputs
,
0
);
Cba_PrsWriteBlifArray
(
pFile
,
p
,
&
p
->
vInputs
,
0
);
...
@@ -97,7 +100,7 @@ void Cba_PrsWriteBlifNtk( FILE * pFile, Cba_Ntk_t * p )
...
@@ -97,7 +100,7 @@ void Cba_PrsWriteBlifNtk( FILE * pFile, Cba_Ntk_t * p )
Cba_PrsWriteBlifArray
(
pFile
,
p
,
&
p
->
vOutputs
,
0
);
Cba_PrsWriteBlifArray
(
pFile
,
p
,
&
p
->
vOutputs
,
0
);
// write objects
// write objects
Cba_PrsWriteBlifLines
(
pFile
,
p
);
Cba_PrsWriteBlifLines
(
pFile
,
p
);
fprintf
(
pFile
,
".end
\n
"
);
fprintf
(
pFile
,
".end
\n
\n
"
);
}
}
void
Cba_PrsWriteBlif
(
char
*
pFileName
,
Cba_Man_t
*
pDes
)
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 )
...
@@ -257,7 +257,7 @@ int Abc_NamStrHash( const char * pStr, const char * pLim, int nTableSize )
unsigned
i
,
uHash
;
unsigned
i
,
uHash
;
if
(
pLim
)
if
(
pLim
)
{
{
for
(
uHash
=
0
,
i
=
0
;
pStr
<
pLim
;
i
++
)
for
(
uHash
=
0
,
i
=
0
;
pStr
+
i
<
pLim
;
i
++
)
if
(
i
&
1
)
if
(
i
&
1
)
uHash
*=
pStr
[
i
]
*
s_FPrimes
[
i
&
0x7F
];
uHash
*=
pStr
[
i
]
*
s_FPrimes
[
i
&
0x7F
];
else
else
...
@@ -285,6 +285,23 @@ int Abc_NamStrHash( const char * pStr, const char * pLim, int nTableSize )
...
@@ -285,6 +285,23 @@ int Abc_NamStrHash( const char * pStr, const char * pLim, int nTableSize )
SeeAlso []
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
)
static
inline
int
*
Abc_NamStrHashFind
(
Abc_Nam_t
*
p
,
const
char
*
pStr
,
const
char
*
pLim
)
{
{
char
*
pThis
;
char
*
pThis
;
...
@@ -293,7 +310,7 @@ static inline int * Abc_NamStrHashFind( Abc_Nam_t * p, const char * pStr, const
...
@@ -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
;
for
(
pThis
=
(
*
pPlace
)
?
Abc_NamIntToStr
(
p
,
*
pPlace
)
:
NULL
;
pThis
;
pPlace
=
Abc_NamIntToNextP
(
p
,
*
pPlace
),
pThis
;
pPlace
=
Abc_NamIntToNextP
(
p
,
*
pPlace
),
pThis
=
(
*
pPlace
)
?
Abc_NamIntToStr
(
p
,
*
pPlace
)
:
NULL
)
pThis
=
(
*
pPlace
)
?
Abc_NamIntToStr
(
p
,
*
pPlace
)
:
NULL
)
if
(
!
strcmp
(
pStr
,
pThis
)
)
if
(
!
Abc_NamStrcmp
(
(
char
*
)
pStr
,
(
char
*
)
pLim
,
pThis
)
)
break
;
break
;
return
pPlace
;
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 )
...
@@ -201,6 +201,18 @@ static inline Vec_Str_t * Vec_StrDupArray( Vec_Str_t * pVec )
SeeAlso []
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
)
static
inline
void
Vec_StrFree
(
Vec_Str_t
*
p
)
{
{
ABC_FREE
(
p
->
pArray
);
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