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
dfd871c2
Commit
dfd871c2
authored
Jan 23, 2013
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Integration of timing manager.
parent
68636887
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
64 additions
and
8 deletions
+64
-8
src/aig/gia/gia.h
+1
-0
src/aig/gia/giaAiger.c
+36
-8
src/aig/gia/giaAigerExt.c
+26
-0
src/aig/gia/giaIf.c
+1
-0
No files found.
src/aig/gia/gia.h
View file @
dfd871c2
...
...
@@ -128,6 +128,7 @@ struct Gia_Man_t_
Vec_Int_t
*
vFanoutNums
;
// static fanout
Vec_Int_t
*
vFanout
;
// static fanout
int
*
pMapping
;
// mapping for each node
int
nOffset
;
// mapping offset
Vec_Int_t
*
vMapping
;
Vec_Int_t
*
vLutConfigs
;
// LUT configurations
Abc_Cex_t
*
pCexComb
;
// combinational counter-example
...
...
src/aig/gia/giaAiger.c
View file @
dfd871c2
...
...
@@ -495,10 +495,11 @@ Gia_Man_t * Gia_AigerReadFromMemory( char * pContents, int nFileSize, int fSkipS
// check if there are other types of information to read
if
(
pCur
+
1
<
(
unsigned
char
*
)
pContents
+
nFileSize
&&
*
pCur
==
'c'
)
{
int
fVerbose
=
1
;
Vec_Str_t
*
vStr
;
unsigned
char
*
pCurTemp
;
pCur
++
;
while
(
1
)
while
(
pCur
<
(
unsigned
char
*
)
pContents
+
nFileSize
)
{
// read extra AIG
if
(
*
pCur
==
'a'
)
...
...
@@ -509,6 +510,7 @@ Gia_Man_t * Gia_AigerReadFromMemory( char * pContents, int nFileSize, int fSkipS
pCur
+=
Vec_StrSize
(
vStr
);
pNew
->
pAigExtra
=
Gia_AigerReadFromMemory
(
Vec_StrArray
(
vStr
),
Vec_StrSize
(
vStr
),
0
,
0
);
Vec_StrFree
(
vStr
);
if
(
fVerbose
)
printf
(
"Finished reading extension
\"
a
\"
.
\n
"
);
}
// read number of constraints
else
if
(
*
pCur
==
'c'
)
...
...
@@ -516,6 +518,7 @@ Gia_Man_t * Gia_AigerReadFromMemory( char * pContents, int nFileSize, int fSkipS
pCur
++
;
assert
(
Gia_AigerReadInt
(
pCur
)
==
4
);
pCur
+=
4
;
pNew
->
nConstrs
=
Gia_AigerReadInt
(
pCur
);
pCur
+=
4
;
if
(
fVerbose
)
printf
(
"Finished reading extension
\"
c
\"
.
\n
"
);
}
// read delay information
else
if
(
*
pCur
==
'i'
)
...
...
@@ -524,6 +527,7 @@ Gia_Man_t * Gia_AigerReadFromMemory( char * pContents, int nFileSize, int fSkipS
nInputs
=
Gia_AigerReadInt
(
pCur
)
/
4
;
pCur
+=
4
;
pNew
->
vInArrs
=
Vec_FltStart
(
nInputs
);
memcpy
(
Vec_FltArray
(
pNew
->
vInArrs
),
pCur
,
4
*
nInputs
);
pCur
+=
4
*
nInputs
;
if
(
fVerbose
)
printf
(
"Finished reading extension
\"
i
\"
.
\n
"
);
}
else
if
(
*
pCur
==
'o'
)
{
...
...
@@ -531,6 +535,7 @@ Gia_Man_t * Gia_AigerReadFromMemory( char * pContents, int nFileSize, int fSkipS
nOutputs
=
Gia_AigerReadInt
(
pCur
)
/
4
;
pCur
+=
4
;
pNew
->
vOutReqs
=
Vec_FltStart
(
nOutputs
);
memcpy
(
Vec_FltArray
(
pNew
->
vOutReqs
),
pCur
,
4
*
nOutputs
);
pCur
+=
4
*
nOutputs
;
if
(
fVerbose
)
printf
(
"Finished reading extension
\"
o
\"
.
\n
"
);
}
// read equivalence classes
else
if
(
*
pCur
==
'e'
)
...
...
@@ -541,6 +546,7 @@ Gia_Man_t * Gia_AigerReadFromMemory( char * pContents, int nFileSize, int fSkipS
pNew
->
pReprs
=
Gia_AigerReadEquivClasses
(
&
pCur
,
Gia_ManObjNum
(
pNew
)
);
pNew
->
pNexts
=
Gia_ManDeriveNexts
(
pNew
);
assert
(
pCur
==
pCurTemp
);
if
(
fVerbose
)
printf
(
"Finished reading extension
\"
e
\"
.
\n
"
);
}
// read flop classes
else
if
(
*
pCur
==
'f'
)
...
...
@@ -549,6 +555,7 @@ Gia_Man_t * Gia_AigerReadFromMemory( char * pContents, int nFileSize, int fSkipS
assert
(
Gia_AigerReadInt
(
pCur
)
==
4
*
Gia_ManRegNum
(
pNew
)
);
pCur
+=
4
;
pNew
->
vFlopClasses
=
Vec_IntStart
(
Gia_ManRegNum
(
pNew
)
);
memcpy
(
Vec_IntArray
(
pNew
->
vFlopClasses
),
pCur
,
4
*
Gia_ManRegNum
(
pNew
)
);
pCur
+=
4
*
Gia_ManRegNum
(
pNew
);
if
(
fVerbose
)
printf
(
"Finished reading extension
\"
f
\"
.
\n
"
);
}
// read gate classes
else
if
(
*
pCur
==
'g'
)
...
...
@@ -557,6 +564,7 @@ Gia_Man_t * Gia_AigerReadFromMemory( char * pContents, int nFileSize, int fSkipS
assert
(
Gia_AigerReadInt
(
pCur
)
==
4
*
Gia_ManObjNum
(
pNew
)
);
pCur
+=
4
;
pNew
->
vGateClasses
=
Vec_IntStart
(
Gia_ManObjNum
(
pNew
)
);
memcpy
(
Vec_IntArray
(
pNew
->
vGateClasses
),
pCur
,
4
*
Gia_ManObjNum
(
pNew
)
);
pCur
+=
4
*
Gia_ManObjNum
(
pNew
);
if
(
fVerbose
)
printf
(
"Finished reading extension
\"
g
\"
.
\n
"
);
}
// read hierarchy information
else
if
(
*
pCur
==
'h'
)
...
...
@@ -568,6 +576,7 @@ Gia_Man_t * Gia_AigerReadFromMemory( char * pContents, int nFileSize, int fSkipS
pNew
->
pManTime
=
Tim_ManLoad
(
vStr
,
1
);
Vec_StrFree
(
vStr
);
fHieOnly
=
1
;
if
(
fVerbose
)
printf
(
"Finished reading extension
\"
h
\"
.
\n
"
);
}
// read packing
else
if
(
*
pCur
==
'k'
)
...
...
@@ -577,15 +586,23 @@ Gia_Man_t * Gia_AigerReadFromMemory( char * pContents, int nFileSize, int fSkipS
pCurTemp
=
pCur
+
Gia_AigerReadInt
(
pCur
)
+
4
;
pCur
+=
4
;
pNew
->
vPacking
=
Gia_AigerReadPacking
(
&
pCur
,
pCurTemp
-
pCur
);
assert
(
pCur
==
pCurTemp
);
if
(
fVerbose
)
printf
(
"Finished reading extension
\"
k
\"
.
\n
"
);
}
// read mapping
else
if
(
*
pCur
==
'm'
)
{
extern
int
*
Gia_AigerReadMapping
(
unsigned
char
**
ppPos
,
int
nSize
);
extern
int
*
Gia_AigerReadMappingSimple
(
unsigned
char
**
ppPos
,
int
nSize
);
int
nSize
;
pCur
++
;
pCurTemp
=
pCur
+
Gia_AigerReadInt
(
pCur
)
+
4
;
pCur
+=
4
;
pNew
->
pMapping
=
Gia_AigerReadMapping
(
&
pCur
,
Gia_ManObjNum
(
pNew
)
);
nSize
=
Gia_AigerReadInt
(
pCur
);
pCurTemp
=
pCur
+
nSize
+
4
;
pCur
+=
4
;
// pNew->pMapping = Gia_AigerReadMapping( &pCur, Gia_ManObjNum(pNew) );
pNew
->
pMapping
=
Gia_AigerReadMappingSimple
(
&
pCur
,
nSize
);
pNew
->
nOffset
=
nSize
/
4
;
pCur
+=
nSize
;
assert
(
pCur
==
pCurTemp
);
if
(
fVerbose
)
printf
(
"Finished reading extension
\"
m
\"
.
\n
"
);
}
// read model name
else
if
(
*
pCur
==
'n'
)
...
...
@@ -602,6 +619,7 @@ Gia_Man_t * Gia_AigerReadFromMemory( char * pContents, int nFileSize, int fSkipS
pNew
->
pName
=
Abc_UtilStrsav
(
(
char
*
)
pCur
);
pCur
+=
strlen
(
pNew
->
pName
)
+
1
;
assert
(
pCur
==
pCurTemp
);
}
if
(
fVerbose
)
printf
(
"Finished reading extension
\"
n
\"
.
\n
"
);
}
// read placement
else
if
(
*
pCur
==
'p'
)
...
...
@@ -612,6 +630,7 @@ Gia_Man_t * Gia_AigerReadFromMemory( char * pContents, int nFileSize, int fSkipS
pPlacement
=
ABC_ALLOC
(
Gia_Plc_t
,
Gia_ManObjNum
(
pNew
)
);
memcpy
(
pPlacement
,
pCur
,
4
*
Gia_ManObjNum
(
pNew
)
);
pCur
+=
4
*
Gia_ManObjNum
(
pNew
);
assert
(
pCur
==
pCurTemp
);
if
(
fVerbose
)
printf
(
"Finished reading extension
\"
p
\"
.
\n
"
);
}
// read switching activity
else
if
(
*
pCur
==
's'
)
...
...
@@ -622,6 +641,7 @@ Gia_Man_t * Gia_AigerReadFromMemory( char * pContents, int nFileSize, int fSkipS
pSwitching
=
ABC_ALLOC
(
unsigned
char
,
Gia_ManObjNum
(
pNew
)
);
memcpy
(
pSwitching
,
pCur
,
Gia_ManObjNum
(
pNew
)
);
pCur
+=
Gia_ManObjNum
(
pNew
);
assert
(
pCur
==
pCurTemp
);
if
(
fVerbose
)
printf
(
"Finished reading extension
\"
s
\"
.
\n
"
);
}
// read timing manager
else
if
(
*
pCur
==
't'
)
...
...
@@ -631,6 +651,7 @@ Gia_Man_t * Gia_AigerReadFromMemory( char * pContents, int nFileSize, int fSkipS
memcpy
(
Vec_StrArray
(
vStr
),
pCur
,
Vec_StrSize
(
vStr
)
);
pCur
+=
Vec_StrSize
(
vStr
);
pNew
->
pManTime
=
Tim_ManLoad
(
vStr
,
0
);
Vec_StrFree
(
vStr
);
if
(
fVerbose
)
printf
(
"Finished reading extension
\"
t
\"
.
\n
"
);
}
// read object classes
else
if
(
*
pCur
==
'v'
)
...
...
@@ -639,6 +660,7 @@ Gia_Man_t * Gia_AigerReadFromMemory( char * pContents, int nFileSize, int fSkipS
pNew
->
vObjClasses
=
Vec_IntStart
(
Gia_AigerReadInt
(
pCur
)
/
4
);
pCur
+=
4
;
memcpy
(
Vec_IntArray
(
pNew
->
vObjClasses
),
pCur
,
4
*
Vec_IntSize
(
pNew
->
vObjClasses
)
);
pCur
+=
4
*
Vec_IntSize
(
pNew
->
vObjClasses
);
if
(
fVerbose
)
printf
(
"Finished reading extension
\"
v
\"
.
\n
"
);
}
else
break
;
}
...
...
@@ -680,11 +702,16 @@ Gia_Man_t * Gia_AigerReadFromMemory( char * pContents, int nFileSize, int fSkipS
if
(
fHieOnly
)
{
Tim_ManPrint
(
(
Tim_Man_t
*
)
pNew
->
pManTime
);
Tim_ManCreate
(
(
Tim_Man_t
*
)
pNew
->
pManTime
,
Abc_FrameReadLibBox
(),
pNew
->
vInArrs
,
pNew
->
vOutReqs
);
Tim_ManPrint
(
(
Tim_Man_t
*
)
pNew
->
pManTime
);
Vec_FltFreeP
(
&
pNew
->
vInArrs
);
Vec_FltFreeP
(
&
pNew
->
vOutReqs
);
if
(
Abc_FrameReadLibBox
()
==
NULL
)
printf
(
"Cannot create TIM manager because box library is not available.
\n
"
);
else
{
Tim_ManCreate
(
(
Tim_Man_t
*
)
pNew
->
pManTime
,
Abc_FrameReadLibBox
(),
pNew
->
vInArrs
,
pNew
->
vOutReqs
);
Tim_ManPrint
(
(
Tim_Man_t
*
)
pNew
->
pManTime
);
}
}
Vec_FltFreeP
(
&
pNew
->
vInArrs
);
Vec_FltFreeP
(
&
pNew
->
vOutReqs
);
/*
if ( pNew->pManTime )
...
...
@@ -1122,8 +1149,9 @@ void Gia_AigerWrite( Gia_Man_t * pInit, char * pFileName, int fWriteSymbols, int
if
(
p
->
pMapping
)
{
extern
Vec_Str_t
*
Gia_AigerWriteMapping
(
Gia_Man_t
*
p
);
extern
Vec_Str_t
*
Gia_AigerWriteMappingSimple
(
Gia_Man_t
*
p
);
fprintf
(
pFile
,
"m"
);
vStrExt
=
Gia_AigerWriteMapping
(
p
);
vStrExt
=
Gia_AigerWriteMapping
Simple
(
p
);
Gia_FileWriteBufferSize
(
pFile
,
Vec_StrSize
(
vStrExt
)
);
fwrite
(
Vec_StrArray
(
vStrExt
),
1
,
Vec_StrSize
(
vStrExt
),
pFile
);
Vec_StrFree
(
vStrExt
);
...
...
src/aig/gia/giaAigerExt.c
View file @
dfd871c2
...
...
@@ -207,6 +207,32 @@ Vec_Str_t * Gia_AigerWriteMapping( Gia_Man_t * p )
/**Function*************************************************************
Synopsis [Read/write mapping information.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
int
*
Gia_AigerReadMappingSimple
(
unsigned
char
**
ppPos
,
int
nSize
)
{
int
*
pMapping
=
ABC_ALLOC
(
int
,
nSize
/
4
);
memcpy
(
pMapping
,
*
ppPos
,
nSize
);
assert
(
nSize
%
4
==
0
);
return
pMapping
;
}
Vec_Str_t
*
Gia_AigerWriteMappingSimple
(
Gia_Man_t
*
p
)
{
unsigned
char
*
pBuffer
=
ABC_ALLOC
(
unsigned
char
,
4
*
p
->
nOffset
);
memcpy
(
pBuffer
,
p
->
pMapping
,
4
*
p
->
nOffset
);
assert
(
p
->
pMapping
!=
NULL
&&
p
->
nOffset
>=
Gia_ManObjNum
(
p
)
);
return
Vec_StrAllocArray
(
(
char
*
)
pBuffer
,
4
*
p
->
nOffset
);
}
/**Function*************************************************************
Synopsis [Read/write packing information.]
Description []
...
...
src/aig/gia/giaIf.c
View file @
dfd871c2
...
...
@@ -591,6 +591,7 @@ Gia_Man_t * Gia_ManFromIf( If_Man_t * pIfMan )
*/
}
}
pNew
->
nOffset
=
iOffset
;
Gia_ManCleanMark0
(
pNew
);
// assert( iOffset == Gia_ManObjNum(pNew) + nItems );
if
(
pIfMan
->
pManTim
)
...
...
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