mirror of https://github.com/YosysHQ/abc.git
Version abc70211
This commit is contained in:
parent
b9e0c95b69
commit
5f3e4c0fe2
10
abc.dsp
10
abc.dsp
|
|
@ -454,6 +454,10 @@ SOURCE=.\src\base\io\ioReadPla.c
|
|||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\src\base\io\ioReadVerilog.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\src\base\io\ioUtil.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
|
@ -502,11 +506,7 @@ SOURCE=.\src\base\io\ioWritePla.c
|
|||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\src\base\io\ioWriteVer.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\src\base\io\ioWriteVerAux.c
|
||||
SOURCE=.\src\base\io\ioWriteVerilog.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "main"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,933 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: abc - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSPDDB.tmp" with contents
|
||||
[
|
||||
/nologo /MLd /W3 /Gm /GX /ZI /Od /I "src\base\abc" /I "src\base\abci" /I "src\base\abcs" /I "src\base\seq" /I "src\base\cmd" /I "src\base\io" /I "src\base\main" /I "src\bdd\cudd" /I "src\bdd\epd" /I "src\bdd\mtr" /I "src\bdd\parse" /I "src\bdd\dsd" /I "src\bdd\reo" /I "src\sop\ft" /I "src\sat\asat" /I "src\sat\bsat" /I "src\sat\msat" /I "src\sat\fraig" /I "src\opt\cut" /I "src\opt\dec" /I "src\opt\fxu" /I "src\opt\sim" /I "src\opt\rwr" /I "src\opt\kit" /I "src\opt\res" /I "src\map\fpga" /I "src\map\if" /I "src\map\mapper" /I "src\map\mio" /I "src\map\super" /I "src\misc\extra" /I "src\misc\st" /I "src\misc\mvc" /I "src\misc\util" /I "src\misc\npn" /I "src\misc\vec" /I "src\misc\espresso" /I "src\misc\nm" /I "src\misc\hash" /I "src\aig\ivy" /I "src\aig\hop" /I "src\aig\rwt" /I "src\aig\deco" /I "src\aig\mem" /I "src\temp\esop" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "__STDC__" /FR"Debug/" /Fp"Debug/abc.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c
|
||||
"C:\_projects\abc\src\base\ver\verCore.c"
|
||||
"C:\_projects\abc\src\base\ver\verParse.c"
|
||||
]
|
||||
Creating command line "cl.exe @C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSPDDB.tmp"
|
||||
Creating temporary file "C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSPDDC.tmp" with contents
|
||||
[
|
||||
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"Debug/abc.pdb" /debug /machine:I386 /out:"_TEST/abc.exe" /pdbtype:sept
|
||||
.\Debug\abcAig.obj
|
||||
.\Debug\abcCheck.obj
|
||||
.\Debug\abcDfs.obj
|
||||
.\Debug\abcFanio.obj
|
||||
.\Debug\abcFunc.obj
|
||||
.\Debug\abcHie.obj
|
||||
.\Debug\abcLatch.obj
|
||||
.\Debug\abcLib.obj
|
||||
.\Debug\abcMinBase.obj
|
||||
.\Debug\abcNames.obj
|
||||
.\Debug\abcNetlist.obj
|
||||
.\Debug\abcNtk.obj
|
||||
.\Debug\abcObj.obj
|
||||
.\Debug\abcRefs.obj
|
||||
.\Debug\abcShow.obj
|
||||
.\Debug\abcSop.obj
|
||||
.\Debug\abcUtil.obj
|
||||
.\Debug\abc.obj
|
||||
.\Debug\abcAttach.obj
|
||||
.\Debug\abcAuto.obj
|
||||
.\Debug\abcBalance.obj
|
||||
.\Debug\abcBmc.obj
|
||||
.\Debug\abcClpBdd.obj
|
||||
.\Debug\abcClpSop.obj
|
||||
.\Debug\abcCut.obj
|
||||
.\Debug\abcDebug.obj
|
||||
.\Debug\abcDress.obj
|
||||
.\Debug\abcDsd.obj
|
||||
.\Debug\abcEspresso.obj
|
||||
.\Debug\abcExtract.obj
|
||||
.\Debug\abcFpga.obj
|
||||
.\Debug\abcFpgaFast.obj
|
||||
.\Debug\abcFraig.obj
|
||||
.\Debug\abcFxu.obj
|
||||
.\Debug\abcGen.obj
|
||||
.\Debug\abcIf.obj
|
||||
.\Debug\abcIvy.obj
|
||||
.\Debug\abcLut.obj
|
||||
.\Debug\abcMap.obj
|
||||
.\Debug\abcMini.obj
|
||||
.\Debug\abcMiter.obj
|
||||
.\Debug\abcMulti.obj
|
||||
.\Debug\abcMv.obj
|
||||
.\Debug\abcNtbdd.obj
|
||||
.\Debug\abcOdc.obj
|
||||
.\Debug\abcOrder.obj
|
||||
.\Debug\abcPrint.obj
|
||||
.\Debug\abcProve.obj
|
||||
.\Debug\abcReconv.obj
|
||||
.\Debug\abcRefactor.obj
|
||||
.\Debug\abcRenode.obj
|
||||
.\Debug\abcReorder.obj
|
||||
.\Debug\abcRestruct.obj
|
||||
.\Debug\abcResub.obj
|
||||
.\Debug\abcRewrite.obj
|
||||
.\Debug\abcRr.obj
|
||||
.\Debug\abcSat.obj
|
||||
.\Debug\abcStrash.obj
|
||||
.\Debug\abcSweep.obj
|
||||
.\Debug\abcSymm.obj
|
||||
.\Debug\abcTiming.obj
|
||||
.\Debug\abcUnate.obj
|
||||
.\Debug\abcUnreach.obj
|
||||
.\Debug\abcVerify.obj
|
||||
.\Debug\abcXsim.obj
|
||||
.\Debug\cmd.obj
|
||||
.\Debug\cmdAlias.obj
|
||||
.\Debug\cmdApi.obj
|
||||
.\Debug\cmdFlag.obj
|
||||
.\Debug\cmdHist.obj
|
||||
.\Debug\cmdUtils.obj
|
||||
.\Debug\io.obj
|
||||
.\Debug\ioReadAiger.obj
|
||||
.\Debug\ioReadBaf.obj
|
||||
.\Debug\ioReadBench.obj
|
||||
.\Debug\ioReadBlif.obj
|
||||
.\Debug\ioReadBlifAig.obj
|
||||
.\Debug\ioReadBlifMv.obj
|
||||
.\Debug\ioReadEdif.obj
|
||||
.\Debug\ioReadEqn.obj
|
||||
.\Debug\ioReadPla.obj
|
||||
.\Debug\ioUtil.obj
|
||||
.\Debug\ioWriteAiger.obj
|
||||
.\Debug\ioWriteBaf.obj
|
||||
.\Debug\ioWriteBench.obj
|
||||
.\Debug\ioWriteBlif.obj
|
||||
.\Debug\ioWriteBlifMv.obj
|
||||
.\Debug\ioWriteCnf.obj
|
||||
.\Debug\ioWriteDot.obj
|
||||
.\Debug\ioWriteEqn.obj
|
||||
.\Debug\ioWriteGml.obj
|
||||
.\Debug\ioWriteList.obj
|
||||
.\Debug\ioWritePla.obj
|
||||
.\Debug\libSupport.obj
|
||||
.\Debug\main.obj
|
||||
.\Debug\mainFrame.obj
|
||||
.\Debug\mainInit.obj
|
||||
.\Debug\mainUtils.obj
|
||||
.\Debug\verCore.obj
|
||||
.\Debug\verFormula.obj
|
||||
.\Debug\verParse.obj
|
||||
.\Debug\verStream.obj
|
||||
.\Debug\hopBalance.obj
|
||||
.\Debug\hopCheck.obj
|
||||
.\Debug\hopDfs.obj
|
||||
.\Debug\hopMan.obj
|
||||
.\Debug\hopMem.obj
|
||||
.\Debug\hopObj.obj
|
||||
.\Debug\hopOper.obj
|
||||
.\Debug\hopTable.obj
|
||||
.\Debug\hopUtil.obj
|
||||
.\Debug\ivyBalance.obj
|
||||
.\Debug\ivyCanon.obj
|
||||
.\Debug\ivyCheck.obj
|
||||
.\Debug\ivyCut.obj
|
||||
.\Debug\ivyCutTrav.obj
|
||||
.\Debug\ivyDfs.obj
|
||||
.\Debug\ivyDsd.obj
|
||||
.\Debug\ivyFanout.obj
|
||||
.\Debug\ivyFastMap.obj
|
||||
.\Debug\ivyFraig.obj
|
||||
.\Debug\ivyHaig.obj
|
||||
.\Debug\ivyMan.obj
|
||||
.\Debug\ivyMem.obj
|
||||
.\Debug\ivyMulti.obj
|
||||
.\Debug\ivyObj.obj
|
||||
.\Debug\ivyOper.obj
|
||||
.\Debug\ivyResyn.obj
|
||||
.\Debug\ivyRwr.obj
|
||||
.\Debug\ivySeq.obj
|
||||
.\Debug\ivyShow.obj
|
||||
.\Debug\ivyTable.obj
|
||||
.\Debug\ivyUtil.obj
|
||||
.\Debug\rwtDec.obj
|
||||
.\Debug\rwtMan.obj
|
||||
.\Debug\rwtUtil.obj
|
||||
.\Debug\mem.obj
|
||||
.\Debug\cuddAddAbs.obj
|
||||
.\Debug\cuddAddApply.obj
|
||||
.\Debug\cuddAddFind.obj
|
||||
.\Debug\cuddAddInv.obj
|
||||
.\Debug\cuddAddIte.obj
|
||||
.\Debug\cuddAddNeg.obj
|
||||
.\Debug\cuddAddWalsh.obj
|
||||
.\Debug\cuddAndAbs.obj
|
||||
.\Debug\cuddAnneal.obj
|
||||
.\Debug\cuddApa.obj
|
||||
.\Debug\cuddAPI.obj
|
||||
.\Debug\cuddApprox.obj
|
||||
.\Debug\cuddBddAbs.obj
|
||||
.\Debug\cuddBddCorr.obj
|
||||
.\Debug\cuddBddIte.obj
|
||||
.\Debug\cuddBridge.obj
|
||||
.\Debug\cuddCache.obj
|
||||
.\Debug\cuddCheck.obj
|
||||
.\Debug\cuddClip.obj
|
||||
.\Debug\cuddCof.obj
|
||||
.\Debug\cuddCompose.obj
|
||||
.\Debug\cuddDecomp.obj
|
||||
.\Debug\cuddEssent.obj
|
||||
.\Debug\cuddExact.obj
|
||||
.\Debug\cuddExport.obj
|
||||
.\Debug\cuddGenCof.obj
|
||||
.\Debug\cuddGenetic.obj
|
||||
.\Debug\cuddGroup.obj
|
||||
.\Debug\cuddHarwell.obj
|
||||
.\Debug\cuddInit.obj
|
||||
.\Debug\cuddInteract.obj
|
||||
.\Debug\cuddLCache.obj
|
||||
.\Debug\cuddLevelQ.obj
|
||||
.\Debug\cuddLinear.obj
|
||||
.\Debug\cuddLiteral.obj
|
||||
.\Debug\cuddMatMult.obj
|
||||
.\Debug\cuddPriority.obj
|
||||
.\Debug\cuddRead.obj
|
||||
.\Debug\cuddRef.obj
|
||||
.\Debug\cuddReorder.obj
|
||||
.\Debug\cuddSat.obj
|
||||
.\Debug\cuddSign.obj
|
||||
.\Debug\cuddSolve.obj
|
||||
.\Debug\cuddSplit.obj
|
||||
.\Debug\cuddSubsetHB.obj
|
||||
.\Debug\cuddSubsetSP.obj
|
||||
.\Debug\cuddSymmetry.obj
|
||||
.\Debug\cuddTable.obj
|
||||
.\Debug\cuddUtil.obj
|
||||
.\Debug\cuddWindow.obj
|
||||
.\Debug\cuddZddCount.obj
|
||||
.\Debug\cuddZddFuncs.obj
|
||||
.\Debug\cuddZddGroup.obj
|
||||
.\Debug\cuddZddIsop.obj
|
||||
.\Debug\cuddZddLin.obj
|
||||
.\Debug\cuddZddMisc.obj
|
||||
.\Debug\cuddZddPort.obj
|
||||
.\Debug\cuddZddReord.obj
|
||||
.\Debug\cuddZddSetop.obj
|
||||
.\Debug\cuddZddSymm.obj
|
||||
.\Debug\cuddZddUtil.obj
|
||||
.\Debug\epd.obj
|
||||
.\Debug\mtrBasic.obj
|
||||
.\Debug\mtrGroup.obj
|
||||
.\Debug\parseCore.obj
|
||||
.\Debug\parseEqn.obj
|
||||
.\Debug\parseStack.obj
|
||||
.\Debug\dsdApi.obj
|
||||
.\Debug\dsdCheck.obj
|
||||
.\Debug\dsdLocal.obj
|
||||
.\Debug\dsdMan.obj
|
||||
.\Debug\dsdProc.obj
|
||||
.\Debug\dsdTree.obj
|
||||
.\Debug\reoApi.obj
|
||||
.\Debug\reoCore.obj
|
||||
.\Debug\reoProfile.obj
|
||||
.\Debug\reoSift.obj
|
||||
.\Debug\reoSwap.obj
|
||||
.\Debug\reoTest.obj
|
||||
.\Debug\reoTransfer.obj
|
||||
.\Debug\reoUnits.obj
|
||||
.\Debug\msatActivity.obj
|
||||
.\Debug\msatClause.obj
|
||||
.\Debug\msatClauseVec.obj
|
||||
.\Debug\msatMem.obj
|
||||
.\Debug\msatOrderH.obj
|
||||
.\Debug\msatQueue.obj
|
||||
.\Debug\msatRead.obj
|
||||
.\Debug\msatSolverApi.obj
|
||||
.\Debug\msatSolverCore.obj
|
||||
.\Debug\msatSolverIo.obj
|
||||
.\Debug\msatSolverSearch.obj
|
||||
.\Debug\msatSort.obj
|
||||
.\Debug\msatVec.obj
|
||||
.\Debug\fraigApi.obj
|
||||
.\Debug\fraigCanon.obj
|
||||
.\Debug\fraigChoice.obj
|
||||
.\Debug\fraigFanout.obj
|
||||
.\Debug\fraigFeed.obj
|
||||
.\Debug\fraigMan.obj
|
||||
.\Debug\fraigMem.obj
|
||||
.\Debug\fraigNode.obj
|
||||
.\Debug\fraigPrime.obj
|
||||
.\Debug\fraigSat.obj
|
||||
.\Debug\fraigTable.obj
|
||||
.\Debug\fraigUtil.obj
|
||||
.\Debug\fraigVec.obj
|
||||
.\Debug\csat_apis.obj
|
||||
.\Debug\satInter.obj
|
||||
.\Debug\satMem.obj
|
||||
.\Debug\satSolver.obj
|
||||
.\Debug\satStore.obj
|
||||
.\Debug\satTrace.obj
|
||||
.\Debug\satUtil.obj
|
||||
.\Debug\pr.obj
|
||||
.\Debug\fxu.obj
|
||||
.\Debug\fxuCreate.obj
|
||||
.\Debug\fxuHeapD.obj
|
||||
.\Debug\fxuHeapS.obj
|
||||
.\Debug\fxuList.obj
|
||||
.\Debug\fxuMatrix.obj
|
||||
.\Debug\fxuPair.obj
|
||||
.\Debug\fxuPrint.obj
|
||||
.\Debug\fxuReduce.obj
|
||||
.\Debug\fxuSelect.obj
|
||||
.\Debug\fxuSingle.obj
|
||||
.\Debug\fxuUpdate.obj
|
||||
.\Debug\rwrDec.obj
|
||||
.\Debug\rwrEva.obj
|
||||
.\Debug\rwrExp.obj
|
||||
.\Debug\rwrLib.obj
|
||||
.\Debug\rwrMan.obj
|
||||
.\Debug\rwrPrint.obj
|
||||
.\Debug\rwrTemp.obj
|
||||
.\Debug\rwrUtil.obj
|
||||
.\Debug\cutApi.obj
|
||||
.\Debug\cutCut.obj
|
||||
.\Debug\cutExpand.obj
|
||||
.\Debug\cutMan.obj
|
||||
.\Debug\cutMerge.obj
|
||||
.\Debug\cutNode.obj
|
||||
.\Debug\cutOracle.obj
|
||||
.\Debug\cutPre22.obj
|
||||
.\Debug\cutSeq.obj
|
||||
.\Debug\cutTruth.obj
|
||||
.\Debug\decAbc.obj
|
||||
.\Debug\decFactor.obj
|
||||
.\Debug\decMan.obj
|
||||
.\Debug\decPrint.obj
|
||||
.\Debug\decUtil.obj
|
||||
.\Debug\simMan.obj
|
||||
.\Debug\simSat.obj
|
||||
.\Debug\simSeq.obj
|
||||
.\Debug\simSupp.obj
|
||||
.\Debug\simSwitch.obj
|
||||
.\Debug\simSym.obj
|
||||
.\Debug\simSymSat.obj
|
||||
.\Debug\simSymSim.obj
|
||||
.\Debug\simSymStr.obj
|
||||
.\Debug\simUtils.obj
|
||||
.\Debug\retArea.obj
|
||||
.\Debug\retCore.obj
|
||||
.\Debug\retDelay.obj
|
||||
.\Debug\retFlow.obj
|
||||
.\Debug\retIncrem.obj
|
||||
.\Debug\retInit.obj
|
||||
.\Debug\retLvalue.obj
|
||||
.\Debug\kitBdd.obj
|
||||
.\Debug\kitFactor.obj
|
||||
.\Debug\kitGraph.obj
|
||||
.\Debug\kitHop.obj
|
||||
.\Debug\kitIsop.obj
|
||||
.\Debug\kitSop.obj
|
||||
.\Debug\kitTruth.obj
|
||||
.\Debug\resCore.obj
|
||||
.\Debug\resDivs.obj
|
||||
.\Debug\resFilter.obj
|
||||
.\Debug\resSat.obj
|
||||
.\Debug\resSim.obj
|
||||
.\Debug\resStrash.obj
|
||||
.\Debug\resUpdate.obj
|
||||
.\Debug\resWin.obj
|
||||
.\Debug\bdcCore.obj
|
||||
.\Debug\bdcDec.obj
|
||||
.\Debug\bdcTable.obj
|
||||
.\Debug\fpga.obj
|
||||
.\Debug\fpgaCore.obj
|
||||
.\Debug\fpgaCreate.obj
|
||||
.\Debug\fpgaCut.obj
|
||||
.\Debug\fpgaCutUtils.obj
|
||||
.\Debug\fpgaFanout.obj
|
||||
.\Debug\fpgaLib.obj
|
||||
.\Debug\fpgaMatch.obj
|
||||
.\Debug\fpgaSwitch.obj
|
||||
.\Debug\fpgaTime.obj
|
||||
.\Debug\fpgaTruth.obj
|
||||
.\Debug\fpgaUtils.obj
|
||||
.\Debug\fpgaVec.obj
|
||||
.\Debug\mapper.obj
|
||||
.\Debug\mapperCanon.obj
|
||||
.\Debug\mapperCore.obj
|
||||
.\Debug\mapperCreate.obj
|
||||
.\Debug\mapperCut.obj
|
||||
.\Debug\mapperCutUtils.obj
|
||||
.\Debug\mapperFanout.obj
|
||||
.\Debug\mapperLib.obj
|
||||
.\Debug\mapperMatch.obj
|
||||
.\Debug\mapperRefs.obj
|
||||
.\Debug\mapperSuper.obj
|
||||
.\Debug\mapperSwitch.obj
|
||||
.\Debug\mapperTable.obj
|
||||
.\Debug\mapperTime.obj
|
||||
.\Debug\mapperTree.obj
|
||||
.\Debug\mapperTruth.obj
|
||||
.\Debug\mapperUtils.obj
|
||||
.\Debug\mapperVec.obj
|
||||
.\Debug\mio.obj
|
||||
.\Debug\mioApi.obj
|
||||
.\Debug\mioFunc.obj
|
||||
.\Debug\mioRead.obj
|
||||
.\Debug\mioUtils.obj
|
||||
.\Debug\super.obj
|
||||
.\Debug\superAnd.obj
|
||||
.\Debug\superGate.obj
|
||||
.\Debug\superWrite.obj
|
||||
.\Debug\ifCore.obj
|
||||
.\Debug\ifCut.obj
|
||||
.\Debug\ifMan.obj
|
||||
.\Debug\ifMap.obj
|
||||
.\Debug\ifPrepro.obj
|
||||
.\Debug\ifReduce.obj
|
||||
.\Debug\ifSeq.obj
|
||||
.\Debug\ifTime.obj
|
||||
.\Debug\ifTruth.obj
|
||||
.\Debug\ifUtil.obj
|
||||
.\Debug\extraBddAuto.obj
|
||||
.\Debug\extraBddKmap.obj
|
||||
.\Debug\extraBddMisc.obj
|
||||
.\Debug\extraBddSymm.obj
|
||||
.\Debug\extraBddUnate.obj
|
||||
.\Debug\extraUtilBitMatrix.obj
|
||||
.\Debug\extraUtilCanon.obj
|
||||
.\Debug\extraUtilFile.obj
|
||||
.\Debug\extraUtilMemory.obj
|
||||
.\Debug\extraUtilMisc.obj
|
||||
.\Debug\extraUtilProgress.obj
|
||||
.\Debug\extraUtilReader.obj
|
||||
.\Debug\extraUtilTruth.obj
|
||||
.\Debug\extraUtilUtil.obj
|
||||
.\Debug\st.obj
|
||||
.\Debug\stmm.obj
|
||||
.\Debug\mvc.obj
|
||||
.\Debug\mvcApi.obj
|
||||
.\Debug\mvcCompare.obj
|
||||
.\Debug\mvcContain.obj
|
||||
.\Debug\mvcCover.obj
|
||||
.\Debug\mvcCube.obj
|
||||
.\Debug\mvcDivide.obj
|
||||
.\Debug\mvcDivisor.obj
|
||||
.\Debug\mvcList.obj
|
||||
.\Debug\mvcLits.obj
|
||||
.\Debug\mvcMan.obj
|
||||
.\Debug\mvcOpAlg.obj
|
||||
.\Debug\mvcOpBool.obj
|
||||
.\Debug\mvcPrint.obj
|
||||
.\Debug\mvcSort.obj
|
||||
.\Debug\mvcUtils.obj
|
||||
.\Debug\cofactor.obj
|
||||
.\Debug\cols.obj
|
||||
.\Debug\compl.obj
|
||||
.\Debug\contain.obj
|
||||
.\Debug\cubehack.obj
|
||||
.\Debug\cubestr.obj
|
||||
.\Debug\cvrin.obj
|
||||
.\Debug\cvrm.obj
|
||||
.\Debug\cvrmisc.obj
|
||||
.\Debug\cvrout.obj
|
||||
.\Debug\dominate.obj
|
||||
.\Debug\equiv.obj
|
||||
.\Debug\espresso.obj
|
||||
.\Debug\essen.obj
|
||||
.\Debug\exact.obj
|
||||
.\Debug\expand.obj
|
||||
.\Debug\gasp.obj
|
||||
.\Debug\gimpel.obj
|
||||
.\Debug\globals.obj
|
||||
.\Debug\hack.obj
|
||||
.\Debug\indep.obj
|
||||
.\Debug\irred.obj
|
||||
.\Debug\map.obj
|
||||
.\Debug\matrix.obj
|
||||
.\Debug\mincov.obj
|
||||
.\Debug\opo.obj
|
||||
.\Debug\pair.obj
|
||||
.\Debug\part.obj
|
||||
.\Debug\primes.obj
|
||||
.\Debug\reduce.obj
|
||||
.\Debug\rows.obj
|
||||
.\Debug\set.obj
|
||||
.\Debug\setc.obj
|
||||
.\Debug\sharp.obj
|
||||
.\Debug\sminterf.obj
|
||||
.\Debug\solution.obj
|
||||
.\Debug\sparse.obj
|
||||
.\Debug\unate.obj
|
||||
.\Debug\verify.obj
|
||||
.\Debug\nmApi.obj
|
||||
.\Debug\nmTable.obj
|
||||
.\Debug\ioWriteVerilog.obj
|
||||
.\Debug\ioReadVerilog.obj
|
||||
]
|
||||
Creating command line "link.exe @C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSPDDC.tmp"
|
||||
<h3>Output Window</h3>
|
||||
Compiling...
|
||||
verCore.c
|
||||
verParse.c
|
||||
Linking...
|
||||
Creating temporary file "C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSPDDD.tmp" with contents
|
||||
[
|
||||
/nologo /o"Debug/abc.bsc"
|
||||
.\Debug\abcAig.sbr
|
||||
.\Debug\abcCheck.sbr
|
||||
.\Debug\abcDfs.sbr
|
||||
.\Debug\abcFanio.sbr
|
||||
.\Debug\abcFunc.sbr
|
||||
.\Debug\abcHie.sbr
|
||||
.\Debug\abcLatch.sbr
|
||||
.\Debug\abcLib.sbr
|
||||
.\Debug\abcMinBase.sbr
|
||||
.\Debug\abcNames.sbr
|
||||
.\Debug\abcNetlist.sbr
|
||||
.\Debug\abcNtk.sbr
|
||||
.\Debug\abcObj.sbr
|
||||
.\Debug\abcRefs.sbr
|
||||
.\Debug\abcShow.sbr
|
||||
.\Debug\abcSop.sbr
|
||||
.\Debug\abcUtil.sbr
|
||||
.\Debug\abc.sbr
|
||||
.\Debug\abcAttach.sbr
|
||||
.\Debug\abcAuto.sbr
|
||||
.\Debug\abcBalance.sbr
|
||||
.\Debug\abcBmc.sbr
|
||||
.\Debug\abcClpBdd.sbr
|
||||
.\Debug\abcClpSop.sbr
|
||||
.\Debug\abcCut.sbr
|
||||
.\Debug\abcDebug.sbr
|
||||
.\Debug\abcDress.sbr
|
||||
.\Debug\abcDsd.sbr
|
||||
.\Debug\abcEspresso.sbr
|
||||
.\Debug\abcExtract.sbr
|
||||
.\Debug\abcFpga.sbr
|
||||
.\Debug\abcFpgaFast.sbr
|
||||
.\Debug\abcFraig.sbr
|
||||
.\Debug\abcFxu.sbr
|
||||
.\Debug\abcGen.sbr
|
||||
.\Debug\abcIf.sbr
|
||||
.\Debug\abcIvy.sbr
|
||||
.\Debug\abcLut.sbr
|
||||
.\Debug\abcMap.sbr
|
||||
.\Debug\abcMini.sbr
|
||||
.\Debug\abcMiter.sbr
|
||||
.\Debug\abcMulti.sbr
|
||||
.\Debug\abcMv.sbr
|
||||
.\Debug\abcNtbdd.sbr
|
||||
.\Debug\abcOdc.sbr
|
||||
.\Debug\abcOrder.sbr
|
||||
.\Debug\abcPrint.sbr
|
||||
.\Debug\abcProve.sbr
|
||||
.\Debug\abcReconv.sbr
|
||||
.\Debug\abcRefactor.sbr
|
||||
.\Debug\abcRenode.sbr
|
||||
.\Debug\abcReorder.sbr
|
||||
.\Debug\abcRestruct.sbr
|
||||
.\Debug\abcResub.sbr
|
||||
.\Debug\abcRewrite.sbr
|
||||
.\Debug\abcRr.sbr
|
||||
.\Debug\abcSat.sbr
|
||||
.\Debug\abcStrash.sbr
|
||||
.\Debug\abcSweep.sbr
|
||||
.\Debug\abcSymm.sbr
|
||||
.\Debug\abcTiming.sbr
|
||||
.\Debug\abcUnate.sbr
|
||||
.\Debug\abcUnreach.sbr
|
||||
.\Debug\abcVerify.sbr
|
||||
.\Debug\abcXsim.sbr
|
||||
.\Debug\cmd.sbr
|
||||
.\Debug\cmdAlias.sbr
|
||||
.\Debug\cmdApi.sbr
|
||||
.\Debug\cmdFlag.sbr
|
||||
.\Debug\cmdHist.sbr
|
||||
.\Debug\cmdUtils.sbr
|
||||
.\Debug\io.sbr
|
||||
.\Debug\ioReadAiger.sbr
|
||||
.\Debug\ioReadBaf.sbr
|
||||
.\Debug\ioReadBench.sbr
|
||||
.\Debug\ioReadBlif.sbr
|
||||
.\Debug\ioReadBlifAig.sbr
|
||||
.\Debug\ioReadBlifMv.sbr
|
||||
.\Debug\ioReadEdif.sbr
|
||||
.\Debug\ioReadEqn.sbr
|
||||
.\Debug\ioReadPla.sbr
|
||||
.\Debug\ioUtil.sbr
|
||||
.\Debug\ioWriteAiger.sbr
|
||||
.\Debug\ioWriteBaf.sbr
|
||||
.\Debug\ioWriteBench.sbr
|
||||
.\Debug\ioWriteBlif.sbr
|
||||
.\Debug\ioWriteBlifMv.sbr
|
||||
.\Debug\ioWriteCnf.sbr
|
||||
.\Debug\ioWriteDot.sbr
|
||||
.\Debug\ioWriteEqn.sbr
|
||||
.\Debug\ioWriteGml.sbr
|
||||
.\Debug\ioWriteList.sbr
|
||||
.\Debug\ioWritePla.sbr
|
||||
.\Debug\libSupport.sbr
|
||||
.\Debug\main.sbr
|
||||
.\Debug\mainFrame.sbr
|
||||
.\Debug\mainInit.sbr
|
||||
.\Debug\mainUtils.sbr
|
||||
.\Debug\verCore.sbr
|
||||
.\Debug\verFormula.sbr
|
||||
.\Debug\verParse.sbr
|
||||
.\Debug\verStream.sbr
|
||||
.\Debug\hopBalance.sbr
|
||||
.\Debug\hopCheck.sbr
|
||||
.\Debug\hopDfs.sbr
|
||||
.\Debug\hopMan.sbr
|
||||
.\Debug\hopMem.sbr
|
||||
.\Debug\hopObj.sbr
|
||||
.\Debug\hopOper.sbr
|
||||
.\Debug\hopTable.sbr
|
||||
.\Debug\hopUtil.sbr
|
||||
.\Debug\ivyBalance.sbr
|
||||
.\Debug\ivyCanon.sbr
|
||||
.\Debug\ivyCheck.sbr
|
||||
.\Debug\ivyCut.sbr
|
||||
.\Debug\ivyCutTrav.sbr
|
||||
.\Debug\ivyDfs.sbr
|
||||
.\Debug\ivyDsd.sbr
|
||||
.\Debug\ivyFanout.sbr
|
||||
.\Debug\ivyFastMap.sbr
|
||||
.\Debug\ivyFraig.sbr
|
||||
.\Debug\ivyHaig.sbr
|
||||
.\Debug\ivyMan.sbr
|
||||
.\Debug\ivyMem.sbr
|
||||
.\Debug\ivyMulti.sbr
|
||||
.\Debug\ivyObj.sbr
|
||||
.\Debug\ivyOper.sbr
|
||||
.\Debug\ivyResyn.sbr
|
||||
.\Debug\ivyRwr.sbr
|
||||
.\Debug\ivySeq.sbr
|
||||
.\Debug\ivyShow.sbr
|
||||
.\Debug\ivyTable.sbr
|
||||
.\Debug\ivyUtil.sbr
|
||||
.\Debug\rwtDec.sbr
|
||||
.\Debug\rwtMan.sbr
|
||||
.\Debug\rwtUtil.sbr
|
||||
.\Debug\mem.sbr
|
||||
.\Debug\cuddAddAbs.sbr
|
||||
.\Debug\cuddAddApply.sbr
|
||||
.\Debug\cuddAddFind.sbr
|
||||
.\Debug\cuddAddInv.sbr
|
||||
.\Debug\cuddAddIte.sbr
|
||||
.\Debug\cuddAddNeg.sbr
|
||||
.\Debug\cuddAddWalsh.sbr
|
||||
.\Debug\cuddAndAbs.sbr
|
||||
.\Debug\cuddAnneal.sbr
|
||||
.\Debug\cuddApa.sbr
|
||||
.\Debug\cuddAPI.sbr
|
||||
.\Debug\cuddApprox.sbr
|
||||
.\Debug\cuddBddAbs.sbr
|
||||
.\Debug\cuddBddCorr.sbr
|
||||
.\Debug\cuddBddIte.sbr
|
||||
.\Debug\cuddBridge.sbr
|
||||
.\Debug\cuddCache.sbr
|
||||
.\Debug\cuddCheck.sbr
|
||||
.\Debug\cuddClip.sbr
|
||||
.\Debug\cuddCof.sbr
|
||||
.\Debug\cuddCompose.sbr
|
||||
.\Debug\cuddDecomp.sbr
|
||||
.\Debug\cuddEssent.sbr
|
||||
.\Debug\cuddExact.sbr
|
||||
.\Debug\cuddExport.sbr
|
||||
.\Debug\cuddGenCof.sbr
|
||||
.\Debug\cuddGenetic.sbr
|
||||
.\Debug\cuddGroup.sbr
|
||||
.\Debug\cuddHarwell.sbr
|
||||
.\Debug\cuddInit.sbr
|
||||
.\Debug\cuddInteract.sbr
|
||||
.\Debug\cuddLCache.sbr
|
||||
.\Debug\cuddLevelQ.sbr
|
||||
.\Debug\cuddLinear.sbr
|
||||
.\Debug\cuddLiteral.sbr
|
||||
.\Debug\cuddMatMult.sbr
|
||||
.\Debug\cuddPriority.sbr
|
||||
.\Debug\cuddRead.sbr
|
||||
.\Debug\cuddRef.sbr
|
||||
.\Debug\cuddReorder.sbr
|
||||
.\Debug\cuddSat.sbr
|
||||
.\Debug\cuddSign.sbr
|
||||
.\Debug\cuddSolve.sbr
|
||||
.\Debug\cuddSplit.sbr
|
||||
.\Debug\cuddSubsetHB.sbr
|
||||
.\Debug\cuddSubsetSP.sbr
|
||||
.\Debug\cuddSymmetry.sbr
|
||||
.\Debug\cuddTable.sbr
|
||||
.\Debug\cuddUtil.sbr
|
||||
.\Debug\cuddWindow.sbr
|
||||
.\Debug\cuddZddCount.sbr
|
||||
.\Debug\cuddZddFuncs.sbr
|
||||
.\Debug\cuddZddGroup.sbr
|
||||
.\Debug\cuddZddIsop.sbr
|
||||
.\Debug\cuddZddLin.sbr
|
||||
.\Debug\cuddZddMisc.sbr
|
||||
.\Debug\cuddZddPort.sbr
|
||||
.\Debug\cuddZddReord.sbr
|
||||
.\Debug\cuddZddSetop.sbr
|
||||
.\Debug\cuddZddSymm.sbr
|
||||
.\Debug\cuddZddUtil.sbr
|
||||
.\Debug\epd.sbr
|
||||
.\Debug\mtrBasic.sbr
|
||||
.\Debug\mtrGroup.sbr
|
||||
.\Debug\parseCore.sbr
|
||||
.\Debug\parseEqn.sbr
|
||||
.\Debug\parseStack.sbr
|
||||
.\Debug\dsdApi.sbr
|
||||
.\Debug\dsdCheck.sbr
|
||||
.\Debug\dsdLocal.sbr
|
||||
.\Debug\dsdMan.sbr
|
||||
.\Debug\dsdProc.sbr
|
||||
.\Debug\dsdTree.sbr
|
||||
.\Debug\reoApi.sbr
|
||||
.\Debug\reoCore.sbr
|
||||
.\Debug\reoProfile.sbr
|
||||
.\Debug\reoSift.sbr
|
||||
.\Debug\reoSwap.sbr
|
||||
.\Debug\reoTest.sbr
|
||||
.\Debug\reoTransfer.sbr
|
||||
.\Debug\reoUnits.sbr
|
||||
.\Debug\msatActivity.sbr
|
||||
.\Debug\msatClause.sbr
|
||||
.\Debug\msatClauseVec.sbr
|
||||
.\Debug\msatMem.sbr
|
||||
.\Debug\msatOrderH.sbr
|
||||
.\Debug\msatQueue.sbr
|
||||
.\Debug\msatRead.sbr
|
||||
.\Debug\msatSolverApi.sbr
|
||||
.\Debug\msatSolverCore.sbr
|
||||
.\Debug\msatSolverIo.sbr
|
||||
.\Debug\msatSolverSearch.sbr
|
||||
.\Debug\msatSort.sbr
|
||||
.\Debug\msatVec.sbr
|
||||
.\Debug\fraigApi.sbr
|
||||
.\Debug\fraigCanon.sbr
|
||||
.\Debug\fraigChoice.sbr
|
||||
.\Debug\fraigFanout.sbr
|
||||
.\Debug\fraigFeed.sbr
|
||||
.\Debug\fraigMan.sbr
|
||||
.\Debug\fraigMem.sbr
|
||||
.\Debug\fraigNode.sbr
|
||||
.\Debug\fraigPrime.sbr
|
||||
.\Debug\fraigSat.sbr
|
||||
.\Debug\fraigTable.sbr
|
||||
.\Debug\fraigUtil.sbr
|
||||
.\Debug\fraigVec.sbr
|
||||
.\Debug\csat_apis.sbr
|
||||
.\Debug\satInter.sbr
|
||||
.\Debug\satMem.sbr
|
||||
.\Debug\satSolver.sbr
|
||||
.\Debug\satStore.sbr
|
||||
.\Debug\satTrace.sbr
|
||||
.\Debug\satUtil.sbr
|
||||
.\Debug\pr.sbr
|
||||
.\Debug\fxu.sbr
|
||||
.\Debug\fxuCreate.sbr
|
||||
.\Debug\fxuHeapD.sbr
|
||||
.\Debug\fxuHeapS.sbr
|
||||
.\Debug\fxuList.sbr
|
||||
.\Debug\fxuMatrix.sbr
|
||||
.\Debug\fxuPair.sbr
|
||||
.\Debug\fxuPrint.sbr
|
||||
.\Debug\fxuReduce.sbr
|
||||
.\Debug\fxuSelect.sbr
|
||||
.\Debug\fxuSingle.sbr
|
||||
.\Debug\fxuUpdate.sbr
|
||||
.\Debug\rwrDec.sbr
|
||||
.\Debug\rwrEva.sbr
|
||||
.\Debug\rwrExp.sbr
|
||||
.\Debug\rwrLib.sbr
|
||||
.\Debug\rwrMan.sbr
|
||||
.\Debug\rwrPrint.sbr
|
||||
.\Debug\rwrTemp.sbr
|
||||
.\Debug\rwrUtil.sbr
|
||||
.\Debug\cutApi.sbr
|
||||
.\Debug\cutCut.sbr
|
||||
.\Debug\cutExpand.sbr
|
||||
.\Debug\cutMan.sbr
|
||||
.\Debug\cutMerge.sbr
|
||||
.\Debug\cutNode.sbr
|
||||
.\Debug\cutOracle.sbr
|
||||
.\Debug\cutPre22.sbr
|
||||
.\Debug\cutSeq.sbr
|
||||
.\Debug\cutTruth.sbr
|
||||
.\Debug\decAbc.sbr
|
||||
.\Debug\decFactor.sbr
|
||||
.\Debug\decMan.sbr
|
||||
.\Debug\decPrint.sbr
|
||||
.\Debug\decUtil.sbr
|
||||
.\Debug\simMan.sbr
|
||||
.\Debug\simSat.sbr
|
||||
.\Debug\simSeq.sbr
|
||||
.\Debug\simSupp.sbr
|
||||
.\Debug\simSwitch.sbr
|
||||
.\Debug\simSym.sbr
|
||||
.\Debug\simSymSat.sbr
|
||||
.\Debug\simSymSim.sbr
|
||||
.\Debug\simSymStr.sbr
|
||||
.\Debug\simUtils.sbr
|
||||
.\Debug\retArea.sbr
|
||||
.\Debug\retCore.sbr
|
||||
.\Debug\retDelay.sbr
|
||||
.\Debug\retFlow.sbr
|
||||
.\Debug\retIncrem.sbr
|
||||
.\Debug\retInit.sbr
|
||||
.\Debug\retLvalue.sbr
|
||||
.\Debug\kitBdd.sbr
|
||||
.\Debug\kitFactor.sbr
|
||||
.\Debug\kitGraph.sbr
|
||||
.\Debug\kitHop.sbr
|
||||
.\Debug\kitIsop.sbr
|
||||
.\Debug\kitSop.sbr
|
||||
.\Debug\kitTruth.sbr
|
||||
.\Debug\resCore.sbr
|
||||
.\Debug\resDivs.sbr
|
||||
.\Debug\resFilter.sbr
|
||||
.\Debug\resSat.sbr
|
||||
.\Debug\resSim.sbr
|
||||
.\Debug\resStrash.sbr
|
||||
.\Debug\resUpdate.sbr
|
||||
.\Debug\resWin.sbr
|
||||
.\Debug\bdcCore.sbr
|
||||
.\Debug\bdcDec.sbr
|
||||
.\Debug\bdcTable.sbr
|
||||
.\Debug\fpga.sbr
|
||||
.\Debug\fpgaCore.sbr
|
||||
.\Debug\fpgaCreate.sbr
|
||||
.\Debug\fpgaCut.sbr
|
||||
.\Debug\fpgaCutUtils.sbr
|
||||
.\Debug\fpgaFanout.sbr
|
||||
.\Debug\fpgaLib.sbr
|
||||
.\Debug\fpgaMatch.sbr
|
||||
.\Debug\fpgaSwitch.sbr
|
||||
.\Debug\fpgaTime.sbr
|
||||
.\Debug\fpgaTruth.sbr
|
||||
.\Debug\fpgaUtils.sbr
|
||||
.\Debug\fpgaVec.sbr
|
||||
.\Debug\mapper.sbr
|
||||
.\Debug\mapperCanon.sbr
|
||||
.\Debug\mapperCore.sbr
|
||||
.\Debug\mapperCreate.sbr
|
||||
.\Debug\mapperCut.sbr
|
||||
.\Debug\mapperCutUtils.sbr
|
||||
.\Debug\mapperFanout.sbr
|
||||
.\Debug\mapperLib.sbr
|
||||
.\Debug\mapperMatch.sbr
|
||||
.\Debug\mapperRefs.sbr
|
||||
.\Debug\mapperSuper.sbr
|
||||
.\Debug\mapperSwitch.sbr
|
||||
.\Debug\mapperTable.sbr
|
||||
.\Debug\mapperTime.sbr
|
||||
.\Debug\mapperTree.sbr
|
||||
.\Debug\mapperTruth.sbr
|
||||
.\Debug\mapperUtils.sbr
|
||||
.\Debug\mapperVec.sbr
|
||||
.\Debug\mio.sbr
|
||||
.\Debug\mioApi.sbr
|
||||
.\Debug\mioFunc.sbr
|
||||
.\Debug\mioRead.sbr
|
||||
.\Debug\mioUtils.sbr
|
||||
.\Debug\super.sbr
|
||||
.\Debug\superAnd.sbr
|
||||
.\Debug\superGate.sbr
|
||||
.\Debug\superWrite.sbr
|
||||
.\Debug\ifCore.sbr
|
||||
.\Debug\ifCut.sbr
|
||||
.\Debug\ifMan.sbr
|
||||
.\Debug\ifMap.sbr
|
||||
.\Debug\ifPrepro.sbr
|
||||
.\Debug\ifReduce.sbr
|
||||
.\Debug\ifSeq.sbr
|
||||
.\Debug\ifTime.sbr
|
||||
.\Debug\ifTruth.sbr
|
||||
.\Debug\ifUtil.sbr
|
||||
.\Debug\extraBddAuto.sbr
|
||||
.\Debug\extraBddKmap.sbr
|
||||
.\Debug\extraBddMisc.sbr
|
||||
.\Debug\extraBddSymm.sbr
|
||||
.\Debug\extraBddUnate.sbr
|
||||
.\Debug\extraUtilBitMatrix.sbr
|
||||
.\Debug\extraUtilCanon.sbr
|
||||
.\Debug\extraUtilFile.sbr
|
||||
.\Debug\extraUtilMemory.sbr
|
||||
.\Debug\extraUtilMisc.sbr
|
||||
.\Debug\extraUtilProgress.sbr
|
||||
.\Debug\extraUtilReader.sbr
|
||||
.\Debug\extraUtilTruth.sbr
|
||||
.\Debug\extraUtilUtil.sbr
|
||||
.\Debug\st.sbr
|
||||
.\Debug\stmm.sbr
|
||||
.\Debug\mvc.sbr
|
||||
.\Debug\mvcApi.sbr
|
||||
.\Debug\mvcCompare.sbr
|
||||
.\Debug\mvcContain.sbr
|
||||
.\Debug\mvcCover.sbr
|
||||
.\Debug\mvcCube.sbr
|
||||
.\Debug\mvcDivide.sbr
|
||||
.\Debug\mvcDivisor.sbr
|
||||
.\Debug\mvcList.sbr
|
||||
.\Debug\mvcLits.sbr
|
||||
.\Debug\mvcMan.sbr
|
||||
.\Debug\mvcOpAlg.sbr
|
||||
.\Debug\mvcOpBool.sbr
|
||||
.\Debug\mvcPrint.sbr
|
||||
.\Debug\mvcSort.sbr
|
||||
.\Debug\mvcUtils.sbr
|
||||
.\Debug\cofactor.sbr
|
||||
.\Debug\cols.sbr
|
||||
.\Debug\compl.sbr
|
||||
.\Debug\contain.sbr
|
||||
.\Debug\cubehack.sbr
|
||||
.\Debug\cubestr.sbr
|
||||
.\Debug\cvrin.sbr
|
||||
.\Debug\cvrm.sbr
|
||||
.\Debug\cvrmisc.sbr
|
||||
.\Debug\cvrout.sbr
|
||||
.\Debug\dominate.sbr
|
||||
.\Debug\equiv.sbr
|
||||
.\Debug\espresso.sbr
|
||||
.\Debug\essen.sbr
|
||||
.\Debug\exact.sbr
|
||||
.\Debug\expand.sbr
|
||||
.\Debug\gasp.sbr
|
||||
.\Debug\gimpel.sbr
|
||||
.\Debug\globals.sbr
|
||||
.\Debug\hack.sbr
|
||||
.\Debug\indep.sbr
|
||||
.\Debug\irred.sbr
|
||||
.\Debug\map.sbr
|
||||
.\Debug\matrix.sbr
|
||||
.\Debug\mincov.sbr
|
||||
.\Debug\opo.sbr
|
||||
.\Debug\pair.sbr
|
||||
.\Debug\part.sbr
|
||||
.\Debug\primes.sbr
|
||||
.\Debug\reduce.sbr
|
||||
.\Debug\rows.sbr
|
||||
.\Debug\set.sbr
|
||||
.\Debug\setc.sbr
|
||||
.\Debug\sharp.sbr
|
||||
.\Debug\sminterf.sbr
|
||||
.\Debug\solution.sbr
|
||||
.\Debug\sparse.sbr
|
||||
.\Debug\unate.sbr
|
||||
.\Debug\verify.sbr
|
||||
.\Debug\nmApi.sbr
|
||||
.\Debug\nmTable.sbr
|
||||
.\Debug\ioWriteVerilog.sbr
|
||||
.\Debug\ioReadVerilog.sbr]
|
||||
Creating command line "bscmake.exe @C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSPDDD.tmp"
|
||||
Creating browse info file...
|
||||
<h3>Output Window</h3>
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
abc.exe - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
4
abc.rc
4
abc.rc
|
|
@ -118,6 +118,8 @@ alias fflitmin "compress2rs; ren; sop; ps -f"
|
|||
alias t0 "r res.blif; aig; mfs"
|
||||
alias t "r res2.blif; aig; mfs"
|
||||
|
||||
alias tt "rh a/quip_opt/nut_002_opt.blif"
|
||||
alias tt "rh a/quip_opt/nut_001_opt.blif"
|
||||
alias ttb "wh a/quip_opt/nut_001_opt.blif 1.blif"
|
||||
alias ttv "wh a/quip_opt/nut_001_opt.blif 1.v"
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,903 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: abclib - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSP137A.tmp" with contents
|
||||
[
|
||||
/nologo /MLd /W3 /Gm /GX /ZI /Od /I "src\base\abc" /I "src\base\abci" /I "src\base\abcs" /I "src\base\seq" /I "src\base\cmd" /I "src\base\io" /I "src\base\main" /I "src\bdd\cudd" /I "src\bdd\epd" /I "src\bdd\mtr" /I "src\bdd\parse" /I "src\bdd\dsd" /I "src\bdd\reo" /I "src\sop\ft" /I "src\sat\asat" /I "src\sat\bsat" /I "src\sat\msat" /I "src\sat\fraig" /I "src\opt\cut" /I "src\opt\dec" /I "src\opt\fxu" /I "src\opt\sim" /I "src\opt\rwr" /I "src\opt\kit" /I "src\map\fpga" /I "src\map\if" /I "src\map\mapper" /I "src\map\mio" /I "src\map\super" /I "src\misc\extra" /I "src\misc\st" /I "src\misc\mvc" /I "src\misc\util" /I "src\misc\npn" /I "src\misc\vec" /I "src\misc\espresso" /I "src\misc\nm" /I "src\misc\hash" /I "src\aig\ivy" /I "src\aig\hop" /I "src\aig\rwt" /I "src\aig\deco" /I "src\aig\mem" /I "src\temp\esop" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "__STDC__" /D "HAVE_ASSERT_H" /FR"abclib\DebugLib/" /Fp"abclib\DebugLib/abclib.pch" /YX /Fo"abclib\DebugLib/" /Fd"abclib\DebugLib/" /FD /GZ /c
|
||||
"C:\_projects\abc\src\sat\asat\jfront.c"
|
||||
]
|
||||
Creating command line "cl.exe @C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSP137A.tmp"
|
||||
Creating temporary file "C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSP137B.tmp" with contents
|
||||
[
|
||||
/nologo /out:"abclib\abclib_debug.lib"
|
||||
.\abclib\DebugLib\abcAig.obj
|
||||
.\abclib\DebugLib\abcCheck.obj
|
||||
.\abclib\DebugLib\abcDfs.obj
|
||||
.\abclib\DebugLib\abcFanio.obj
|
||||
.\abclib\DebugLib\abcFunc.obj
|
||||
.\abclib\DebugLib\abcLatch.obj
|
||||
.\abclib\DebugLib\abcLib.obj
|
||||
.\abclib\DebugLib\abcMinBase.obj
|
||||
.\abclib\DebugLib\abcNames.obj
|
||||
.\abclib\DebugLib\abcNetlist.obj
|
||||
.\abclib\DebugLib\abcNtk.obj
|
||||
.\abclib\DebugLib\abcObj.obj
|
||||
.\abclib\DebugLib\abcRefs.obj
|
||||
.\abclib\DebugLib\abcShow.obj
|
||||
.\abclib\DebugLib\abcSop.obj
|
||||
.\abclib\DebugLib\abcUtil.obj
|
||||
.\abclib\DebugLib\abc.obj
|
||||
.\abclib\DebugLib\abcAttach.obj
|
||||
.\abclib\DebugLib\abcAuto.obj
|
||||
.\abclib\DebugLib\abcBalance.obj
|
||||
.\abclib\DebugLib\abcBmc.obj
|
||||
.\abclib\DebugLib\abcClpBdd.obj
|
||||
.\abclib\DebugLib\abcClpSop.obj
|
||||
.\abclib\DebugLib\abcCut.obj
|
||||
.\abclib\DebugLib\abcDebug.obj
|
||||
.\abclib\DebugLib\abcDress.obj
|
||||
.\abclib\DebugLib\abcDsd.obj
|
||||
.\abclib\DebugLib\abcEspresso.obj
|
||||
.\abclib\DebugLib\abcExtract.obj
|
||||
.\abclib\DebugLib\abcFpga.obj
|
||||
.\abclib\DebugLib\abcFpgaFast.obj
|
||||
.\abclib\DebugLib\abcFraig.obj
|
||||
.\abclib\DebugLib\abcFxu.obj
|
||||
.\abclib\DebugLib\abcGen.obj
|
||||
.\abclib\DebugLib\abcIf.obj
|
||||
.\abclib\DebugLib\abcIvy.obj
|
||||
.\abclib\DebugLib\abcLut.obj
|
||||
.\abclib\DebugLib\abcMap.obj
|
||||
.\abclib\DebugLib\abcMini.obj
|
||||
.\abclib\DebugLib\abcMiter.obj
|
||||
.\abclib\DebugLib\abcMulti.obj
|
||||
.\abclib\DebugLib\abcMv.obj
|
||||
.\abclib\DebugLib\abcNtbdd.obj
|
||||
.\abclib\DebugLib\abcOrder.obj
|
||||
.\abclib\DebugLib\abcPrint.obj
|
||||
.\abclib\DebugLib\abcProve.obj
|
||||
.\abclib\DebugLib\abcReconv.obj
|
||||
.\abclib\DebugLib\abcRefactor.obj
|
||||
.\abclib\DebugLib\abcRenode.obj
|
||||
.\abclib\DebugLib\abcReorder.obj
|
||||
.\abclib\DebugLib\abcRestruct.obj
|
||||
.\abclib\DebugLib\abcResub.obj
|
||||
.\abclib\DebugLib\abcRewrite.obj
|
||||
.\abclib\DebugLib\abcRr.obj
|
||||
.\abclib\DebugLib\abcSat.obj
|
||||
.\abclib\DebugLib\abcStrash.obj
|
||||
.\abclib\DebugLib\abcSweep.obj
|
||||
.\abclib\DebugLib\abcSymm.obj
|
||||
.\abclib\DebugLib\abcTiming.obj
|
||||
.\abclib\DebugLib\abcUnate.obj
|
||||
.\abclib\DebugLib\abcUnreach.obj
|
||||
.\abclib\DebugLib\abcVerify.obj
|
||||
.\abclib\DebugLib\abcXsim.obj
|
||||
.\abclib\DebugLib\cmd.obj
|
||||
.\abclib\DebugLib\cmdAlias.obj
|
||||
.\abclib\DebugLib\cmdApi.obj
|
||||
.\abclib\DebugLib\cmdFlag.obj
|
||||
.\abclib\DebugLib\cmdHist.obj
|
||||
.\abclib\DebugLib\cmdUtils.obj
|
||||
.\abclib\DebugLib\io.obj
|
||||
.\abclib\DebugLib\ioReadAiger.obj
|
||||
.\abclib\DebugLib\ioReadBaf.obj
|
||||
.\abclib\DebugLib\ioReadBench.obj
|
||||
.\abclib\DebugLib\ioReadBlif.obj
|
||||
.\abclib\DebugLib\ioReadBlifAig.obj
|
||||
.\abclib\DebugLib\ioReadEdif.obj
|
||||
.\abclib\DebugLib\ioReadEqn.obj
|
||||
.\abclib\DebugLib\ioReadPla.obj
|
||||
.\abclib\DebugLib\ioUtil.obj
|
||||
.\abclib\DebugLib\ioWriteAiger.obj
|
||||
.\abclib\DebugLib\ioWriteBaf.obj
|
||||
.\abclib\DebugLib\ioWriteBench.obj
|
||||
.\abclib\DebugLib\ioWriteBlif.obj
|
||||
.\abclib\DebugLib\ioWriteCnf.obj
|
||||
.\abclib\DebugLib\ioWriteDot.obj
|
||||
.\abclib\DebugLib\ioWriteEqn.obj
|
||||
.\abclib\DebugLib\ioWriteGml.obj
|
||||
.\abclib\DebugLib\ioWriteList.obj
|
||||
.\abclib\DebugLib\ioWritePla.obj
|
||||
.\abclib\DebugLib\ioWriteVer.obj
|
||||
.\abclib\DebugLib\ioWriteVerAux.obj
|
||||
.\abclib\DebugLib\libSupport.obj
|
||||
.\abclib\DebugLib\main.obj
|
||||
.\abclib\DebugLib\mainFrame.obj
|
||||
.\abclib\DebugLib\mainInit.obj
|
||||
.\abclib\DebugLib\mainUtils.obj
|
||||
.\abclib\DebugLib\verCore.obj
|
||||
.\abclib\DebugLib\verFormula.obj
|
||||
.\abclib\DebugLib\verParse.obj
|
||||
.\abclib\DebugLib\verStream.obj
|
||||
.\abclib\DebugLib\verWords.obj
|
||||
.\abclib\DebugLib\cuddAddAbs.obj
|
||||
.\abclib\DebugLib\cuddAddApply.obj
|
||||
.\abclib\DebugLib\cuddAddFind.obj
|
||||
.\abclib\DebugLib\cuddAddInv.obj
|
||||
.\abclib\DebugLib\cuddAddIte.obj
|
||||
.\abclib\DebugLib\cuddAddNeg.obj
|
||||
.\abclib\DebugLib\cuddAddWalsh.obj
|
||||
.\abclib\DebugLib\cuddAndAbs.obj
|
||||
.\abclib\DebugLib\cuddAnneal.obj
|
||||
.\abclib\DebugLib\cuddApa.obj
|
||||
.\abclib\DebugLib\cuddAPI.obj
|
||||
.\abclib\DebugLib\cuddApprox.obj
|
||||
.\abclib\DebugLib\cuddBddAbs.obj
|
||||
.\abclib\DebugLib\cuddBddCorr.obj
|
||||
.\abclib\DebugLib\cuddBddIte.obj
|
||||
.\abclib\DebugLib\cuddBridge.obj
|
||||
.\abclib\DebugLib\cuddCache.obj
|
||||
.\abclib\DebugLib\cuddCheck.obj
|
||||
.\abclib\DebugLib\cuddClip.obj
|
||||
.\abclib\DebugLib\cuddCof.obj
|
||||
.\abclib\DebugLib\cuddCompose.obj
|
||||
.\abclib\DebugLib\cuddDecomp.obj
|
||||
.\abclib\DebugLib\cuddEssent.obj
|
||||
.\abclib\DebugLib\cuddExact.obj
|
||||
.\abclib\DebugLib\cuddExport.obj
|
||||
.\abclib\DebugLib\cuddGenCof.obj
|
||||
.\abclib\DebugLib\cuddGenetic.obj
|
||||
.\abclib\DebugLib\cuddGroup.obj
|
||||
.\abclib\DebugLib\cuddHarwell.obj
|
||||
.\abclib\DebugLib\cuddInit.obj
|
||||
.\abclib\DebugLib\cuddInteract.obj
|
||||
.\abclib\DebugLib\cuddLCache.obj
|
||||
.\abclib\DebugLib\cuddLevelQ.obj
|
||||
.\abclib\DebugLib\cuddLinear.obj
|
||||
.\abclib\DebugLib\cuddLiteral.obj
|
||||
.\abclib\DebugLib\cuddMatMult.obj
|
||||
.\abclib\DebugLib\cuddPriority.obj
|
||||
.\abclib\DebugLib\cuddRead.obj
|
||||
.\abclib\DebugLib\cuddRef.obj
|
||||
.\abclib\DebugLib\cuddReorder.obj
|
||||
.\abclib\DebugLib\cuddSat.obj
|
||||
.\abclib\DebugLib\cuddSign.obj
|
||||
.\abclib\DebugLib\cuddSolve.obj
|
||||
.\abclib\DebugLib\cuddSplit.obj
|
||||
.\abclib\DebugLib\cuddSubsetHB.obj
|
||||
.\abclib\DebugLib\cuddSubsetSP.obj
|
||||
.\abclib\DebugLib\cuddSymmetry.obj
|
||||
.\abclib\DebugLib\cuddTable.obj
|
||||
.\abclib\DebugLib\cuddUtil.obj
|
||||
.\abclib\DebugLib\cuddWindow.obj
|
||||
.\abclib\DebugLib\cuddZddCount.obj
|
||||
.\abclib\DebugLib\cuddZddFuncs.obj
|
||||
.\abclib\DebugLib\cuddZddGroup.obj
|
||||
.\abclib\DebugLib\cuddZddIsop.obj
|
||||
.\abclib\DebugLib\cuddZddLin.obj
|
||||
.\abclib\DebugLib\cuddZddMisc.obj
|
||||
.\abclib\DebugLib\cuddZddPort.obj
|
||||
.\abclib\DebugLib\cuddZddReord.obj
|
||||
.\abclib\DebugLib\cuddZddSetop.obj
|
||||
.\abclib\DebugLib\cuddZddSymm.obj
|
||||
.\abclib\DebugLib\cuddZddUtil.obj
|
||||
.\abclib\DebugLib\epd.obj
|
||||
.\abclib\DebugLib\mtrBasic.obj
|
||||
.\abclib\DebugLib\mtrGroup.obj
|
||||
.\abclib\DebugLib\parseCore.obj
|
||||
.\abclib\DebugLib\parseEqn.obj
|
||||
.\abclib\DebugLib\parseStack.obj
|
||||
.\abclib\DebugLib\dsdApi.obj
|
||||
.\abclib\DebugLib\dsdCheck.obj
|
||||
.\abclib\DebugLib\dsdLocal.obj
|
||||
.\abclib\DebugLib\dsdMan.obj
|
||||
.\abclib\DebugLib\dsdProc.obj
|
||||
.\abclib\DebugLib\dsdTree.obj
|
||||
.\abclib\DebugLib\reoApi.obj
|
||||
.\abclib\DebugLib\reoCore.obj
|
||||
.\abclib\DebugLib\reoProfile.obj
|
||||
.\abclib\DebugLib\reoSift.obj
|
||||
.\abclib\DebugLib\reoSwap.obj
|
||||
.\abclib\DebugLib\reoTest.obj
|
||||
.\abclib\DebugLib\reoTransfer.obj
|
||||
.\abclib\DebugLib\reoUnits.obj
|
||||
.\abclib\DebugLib\added.obj
|
||||
.\abclib\DebugLib\asatmem.obj
|
||||
.\abclib\DebugLib\solver.obj
|
||||
.\abclib\DebugLib\msatActivity.obj
|
||||
.\abclib\DebugLib\msatClause.obj
|
||||
.\abclib\DebugLib\msatClauseVec.obj
|
||||
.\abclib\DebugLib\msatMem.obj
|
||||
.\abclib\DebugLib\msatOrderH.obj
|
||||
.\abclib\DebugLib\msatQueue.obj
|
||||
.\abclib\DebugLib\msatRead.obj
|
||||
.\abclib\DebugLib\msatSolverApi.obj
|
||||
.\abclib\DebugLib\msatSolverCore.obj
|
||||
.\abclib\DebugLib\msatSolverIo.obj
|
||||
.\abclib\DebugLib\msatSolverSearch.obj
|
||||
.\abclib\DebugLib\msatSort.obj
|
||||
.\abclib\DebugLib\msatVec.obj
|
||||
.\abclib\DebugLib\fraigApi.obj
|
||||
.\abclib\DebugLib\fraigCanon.obj
|
||||
.\abclib\DebugLib\fraigChoice.obj
|
||||
.\abclib\DebugLib\fraigFanout.obj
|
||||
.\abclib\DebugLib\fraigFeed.obj
|
||||
.\abclib\DebugLib\fraigMan.obj
|
||||
.\abclib\DebugLib\fraigMem.obj
|
||||
.\abclib\DebugLib\fraigNode.obj
|
||||
.\abclib\DebugLib\fraigPrime.obj
|
||||
.\abclib\DebugLib\fraigSat.obj
|
||||
.\abclib\DebugLib\fraigTable.obj
|
||||
.\abclib\DebugLib\fraigUtil.obj
|
||||
.\abclib\DebugLib\fraigVec.obj
|
||||
.\abclib\DebugLib\csat_apis.obj
|
||||
.\abclib\DebugLib\satMem.obj
|
||||
.\abclib\DebugLib\satSolver.obj
|
||||
.\abclib\DebugLib\satUtil.obj
|
||||
.\abclib\DebugLib\fxu.obj
|
||||
.\abclib\DebugLib\fxuCreate.obj
|
||||
.\abclib\DebugLib\fxuHeapD.obj
|
||||
.\abclib\DebugLib\fxuHeapS.obj
|
||||
.\abclib\DebugLib\fxuList.obj
|
||||
.\abclib\DebugLib\fxuMatrix.obj
|
||||
.\abclib\DebugLib\fxuPair.obj
|
||||
.\abclib\DebugLib\fxuPrint.obj
|
||||
.\abclib\DebugLib\fxuReduce.obj
|
||||
.\abclib\DebugLib\fxuSelect.obj
|
||||
.\abclib\DebugLib\fxuSingle.obj
|
||||
.\abclib\DebugLib\fxuUpdate.obj
|
||||
.\abclib\DebugLib\rwrDec.obj
|
||||
.\abclib\DebugLib\rwrEva.obj
|
||||
.\abclib\DebugLib\rwrExp.obj
|
||||
.\abclib\DebugLib\rwrLib.obj
|
||||
.\abclib\DebugLib\rwrMan.obj
|
||||
.\abclib\DebugLib\rwrPrint.obj
|
||||
.\abclib\DebugLib\rwrTemp.obj
|
||||
.\abclib\DebugLib\rwrUtil.obj
|
||||
.\abclib\DebugLib\cutApi.obj
|
||||
.\abclib\DebugLib\cutCut.obj
|
||||
.\abclib\DebugLib\cutExpand.obj
|
||||
.\abclib\DebugLib\cutMan.obj
|
||||
.\abclib\DebugLib\cutMerge.obj
|
||||
.\abclib\DebugLib\cutNode.obj
|
||||
.\abclib\DebugLib\cutOracle.obj
|
||||
.\abclib\DebugLib\cutPre22.obj
|
||||
.\abclib\DebugLib\cutSeq.obj
|
||||
.\abclib\DebugLib\cutTruth.obj
|
||||
.\abclib\DebugLib\decAbc.obj
|
||||
.\abclib\DebugLib\decFactor.obj
|
||||
.\abclib\DebugLib\decMan.obj
|
||||
.\abclib\DebugLib\decPrint.obj
|
||||
.\abclib\DebugLib\decUtil.obj
|
||||
.\abclib\DebugLib\simMan.obj
|
||||
.\abclib\DebugLib\simSat.obj
|
||||
.\abclib\DebugLib\simSeq.obj
|
||||
.\abclib\DebugLib\simSupp.obj
|
||||
.\abclib\DebugLib\simSwitch.obj
|
||||
.\abclib\DebugLib\simSym.obj
|
||||
.\abclib\DebugLib\simSymSat.obj
|
||||
.\abclib\DebugLib\simSymSim.obj
|
||||
.\abclib\DebugLib\simSymStr.obj
|
||||
.\abclib\DebugLib\simUtils.obj
|
||||
.\abclib\DebugLib\retArea.obj
|
||||
.\abclib\DebugLib\retCore.obj
|
||||
.\abclib\DebugLib\retDelay.obj
|
||||
.\abclib\DebugLib\retFlow.obj
|
||||
.\abclib\DebugLib\retIncrem.obj
|
||||
.\abclib\DebugLib\retInit.obj
|
||||
.\abclib\DebugLib\retLvalue.obj
|
||||
.\abclib\DebugLib\kitBdd.obj
|
||||
.\abclib\DebugLib\kitFactor.obj
|
||||
.\abclib\DebugLib\kitGraph.obj
|
||||
.\abclib\DebugLib\kitHop.obj
|
||||
.\abclib\DebugLib\kitIsop.obj
|
||||
.\abclib\DebugLib\kitSop.obj
|
||||
.\abclib\DebugLib\kitTruth.obj
|
||||
.\abclib\DebugLib\fpga.obj
|
||||
.\abclib\DebugLib\fpgaCore.obj
|
||||
.\abclib\DebugLib\fpgaCreate.obj
|
||||
.\abclib\DebugLib\fpgaCut.obj
|
||||
.\abclib\DebugLib\fpgaCutUtils.obj
|
||||
.\abclib\DebugLib\fpgaFanout.obj
|
||||
.\abclib\DebugLib\fpgaLib.obj
|
||||
.\abclib\DebugLib\fpgaMatch.obj
|
||||
.\abclib\DebugLib\fpgaSwitch.obj
|
||||
.\abclib\DebugLib\fpgaTime.obj
|
||||
.\abclib\DebugLib\fpgaTruth.obj
|
||||
.\abclib\DebugLib\fpgaUtils.obj
|
||||
.\abclib\DebugLib\fpgaVec.obj
|
||||
.\abclib\DebugLib\mapper.obj
|
||||
.\abclib\DebugLib\mapperCanon.obj
|
||||
.\abclib\DebugLib\mapperCore.obj
|
||||
.\abclib\DebugLib\mapperCreate.obj
|
||||
.\abclib\DebugLib\mapperCut.obj
|
||||
.\abclib\DebugLib\mapperCutUtils.obj
|
||||
.\abclib\DebugLib\mapperFanout.obj
|
||||
.\abclib\DebugLib\mapperLib.obj
|
||||
.\abclib\DebugLib\mapperMatch.obj
|
||||
.\abclib\DebugLib\mapperRefs.obj
|
||||
.\abclib\DebugLib\mapperSuper.obj
|
||||
.\abclib\DebugLib\mapperSwitch.obj
|
||||
.\abclib\DebugLib\mapperTable.obj
|
||||
.\abclib\DebugLib\mapperTime.obj
|
||||
.\abclib\DebugLib\mapperTree.obj
|
||||
.\abclib\DebugLib\mapperTruth.obj
|
||||
.\abclib\DebugLib\mapperUtils.obj
|
||||
.\abclib\DebugLib\mapperVec.obj
|
||||
.\abclib\DebugLib\mio.obj
|
||||
.\abclib\DebugLib\mioApi.obj
|
||||
.\abclib\DebugLib\mioFunc.obj
|
||||
.\abclib\DebugLib\mioRead.obj
|
||||
.\abclib\DebugLib\mioUtils.obj
|
||||
.\abclib\DebugLib\super.obj
|
||||
.\abclib\DebugLib\superAnd.obj
|
||||
.\abclib\DebugLib\superGate.obj
|
||||
.\abclib\DebugLib\superWrite.obj
|
||||
.\abclib\DebugLib\ifCore.obj
|
||||
.\abclib\DebugLib\ifCut.obj
|
||||
.\abclib\DebugLib\ifMan.obj
|
||||
.\abclib\DebugLib\ifMap.obj
|
||||
.\abclib\DebugLib\ifPrepro.obj
|
||||
.\abclib\DebugLib\ifReduce.obj
|
||||
.\abclib\DebugLib\ifSeq.obj
|
||||
.\abclib\DebugLib\ifTime.obj
|
||||
.\abclib\DebugLib\ifTruth.obj
|
||||
.\abclib\DebugLib\ifUtil.obj
|
||||
.\abclib\DebugLib\extraBddAuto.obj
|
||||
.\abclib\DebugLib\extraBddKmap.obj
|
||||
.\abclib\DebugLib\extraBddMisc.obj
|
||||
.\abclib\DebugLib\extraBddSymm.obj
|
||||
.\abclib\DebugLib\extraBddUnate.obj
|
||||
.\abclib\DebugLib\extraUtilBitMatrix.obj
|
||||
.\abclib\DebugLib\extraUtilCanon.obj
|
||||
.\abclib\DebugLib\extraUtilFile.obj
|
||||
.\abclib\DebugLib\extraUtilMemory.obj
|
||||
.\abclib\DebugLib\extraUtilMisc.obj
|
||||
.\abclib\DebugLib\extraUtilProgress.obj
|
||||
.\abclib\DebugLib\extraUtilReader.obj
|
||||
.\abclib\DebugLib\extraUtilTruth.obj
|
||||
.\abclib\DebugLib\extraUtilUtil.obj
|
||||
.\abclib\DebugLib\st.obj
|
||||
.\abclib\DebugLib\stmm.obj
|
||||
.\abclib\DebugLib\mvc.obj
|
||||
.\abclib\DebugLib\mvcApi.obj
|
||||
.\abclib\DebugLib\mvcCompare.obj
|
||||
.\abclib\DebugLib\mvcContain.obj
|
||||
.\abclib\DebugLib\mvcCover.obj
|
||||
.\abclib\DebugLib\mvcCube.obj
|
||||
.\abclib\DebugLib\mvcDivide.obj
|
||||
.\abclib\DebugLib\mvcDivisor.obj
|
||||
.\abclib\DebugLib\mvcList.obj
|
||||
.\abclib\DebugLib\mvcLits.obj
|
||||
.\abclib\DebugLib\mvcMan.obj
|
||||
.\abclib\DebugLib\mvcOpAlg.obj
|
||||
.\abclib\DebugLib\mvcOpBool.obj
|
||||
.\abclib\DebugLib\mvcPrint.obj
|
||||
.\abclib\DebugLib\mvcSort.obj
|
||||
.\abclib\DebugLib\mvcUtils.obj
|
||||
.\abclib\DebugLib\cofactor.obj
|
||||
.\abclib\DebugLib\cols.obj
|
||||
.\abclib\DebugLib\compl.obj
|
||||
.\abclib\DebugLib\contain.obj
|
||||
.\abclib\DebugLib\cubehack.obj
|
||||
.\abclib\DebugLib\cubestr.obj
|
||||
.\abclib\DebugLib\cvrin.obj
|
||||
.\abclib\DebugLib\cvrm.obj
|
||||
.\abclib\DebugLib\cvrmisc.obj
|
||||
.\abclib\DebugLib\cvrout.obj
|
||||
.\abclib\DebugLib\dominate.obj
|
||||
.\abclib\DebugLib\equiv.obj
|
||||
.\abclib\DebugLib\espresso.obj
|
||||
.\abclib\DebugLib\essen.obj
|
||||
.\abclib\DebugLib\exact.obj
|
||||
.\abclib\DebugLib\expand.obj
|
||||
.\abclib\DebugLib\gasp.obj
|
||||
.\abclib\DebugLib\gimpel.obj
|
||||
.\abclib\DebugLib\globals.obj
|
||||
.\abclib\DebugLib\hack.obj
|
||||
.\abclib\DebugLib\indep.obj
|
||||
.\abclib\DebugLib\irred.obj
|
||||
.\abclib\DebugLib\map.obj
|
||||
.\abclib\DebugLib\matrix.obj
|
||||
.\abclib\DebugLib\mincov.obj
|
||||
.\abclib\DebugLib\opo.obj
|
||||
.\abclib\DebugLib\pair.obj
|
||||
.\abclib\DebugLib\part.obj
|
||||
.\abclib\DebugLib\primes.obj
|
||||
.\abclib\DebugLib\reduce.obj
|
||||
.\abclib\DebugLib\rows.obj
|
||||
.\abclib\DebugLib\set.obj
|
||||
.\abclib\DebugLib\setc.obj
|
||||
.\abclib\DebugLib\sharp.obj
|
||||
.\abclib\DebugLib\sminterf.obj
|
||||
.\abclib\DebugLib\solution.obj
|
||||
.\abclib\DebugLib\sparse.obj
|
||||
.\abclib\DebugLib\unate.obj
|
||||
.\abclib\DebugLib\verify.obj
|
||||
.\abclib\DebugLib\nmApi.obj
|
||||
.\abclib\DebugLib\nmTable.obj
|
||||
.\abclib\DebugLib\hopBalance.obj
|
||||
.\abclib\DebugLib\hopCheck.obj
|
||||
.\abclib\DebugLib\hopDfs.obj
|
||||
.\abclib\DebugLib\hopMan.obj
|
||||
.\abclib\DebugLib\hopMem.obj
|
||||
.\abclib\DebugLib\hopObj.obj
|
||||
.\abclib\DebugLib\hopOper.obj
|
||||
.\abclib\DebugLib\hopTable.obj
|
||||
.\abclib\DebugLib\hopUtil.obj
|
||||
.\abclib\DebugLib\ivyBalance.obj
|
||||
.\abclib\DebugLib\ivyCanon.obj
|
||||
.\abclib\DebugLib\ivyCheck.obj
|
||||
.\abclib\DebugLib\ivyCut.obj
|
||||
.\abclib\DebugLib\ivyCutTrav.obj
|
||||
.\abclib\DebugLib\ivyDfs.obj
|
||||
.\abclib\DebugLib\ivyDsd.obj
|
||||
.\abclib\DebugLib\ivyFanout.obj
|
||||
.\abclib\DebugLib\ivyFastMap.obj
|
||||
.\abclib\DebugLib\ivyFraig.obj
|
||||
.\abclib\DebugLib\ivyHaig.obj
|
||||
.\abclib\DebugLib\ivyMan.obj
|
||||
.\abclib\DebugLib\ivyMem.obj
|
||||
.\abclib\DebugLib\ivyMulti.obj
|
||||
.\abclib\DebugLib\ivyObj.obj
|
||||
.\abclib\DebugLib\ivyOper.obj
|
||||
.\abclib\DebugLib\ivyResyn.obj
|
||||
.\abclib\DebugLib\ivyRwr.obj
|
||||
.\abclib\DebugLib\ivySeq.obj
|
||||
.\abclib\DebugLib\ivyShow.obj
|
||||
.\abclib\DebugLib\ivyTable.obj
|
||||
.\abclib\DebugLib\ivyUtil.obj
|
||||
.\abclib\DebugLib\rwtDec.obj
|
||||
.\abclib\DebugLib\rwtMan.obj
|
||||
.\abclib\DebugLib\rwtUtil.obj
|
||||
.\abclib\DebugLib\mem.obj
|
||||
.\abclib\DebugLib\jfront.obj
|
||||
]
|
||||
Creating command line "link.exe -lib @C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSP137B.tmp"
|
||||
<h3>Output Window</h3>
|
||||
Compiling...
|
||||
jfront.c
|
||||
Creating library...
|
||||
Creating temporary file "C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSP137C.tmp" with contents
|
||||
[
|
||||
/nologo /o"abclib\DebugLib/abclib.bsc"
|
||||
.\abclib\DebugLib\abcAig.sbr
|
||||
.\abclib\DebugLib\abcCheck.sbr
|
||||
.\abclib\DebugLib\abcDfs.sbr
|
||||
.\abclib\DebugLib\abcFanio.sbr
|
||||
.\abclib\DebugLib\abcFunc.sbr
|
||||
.\abclib\DebugLib\abcLatch.sbr
|
||||
.\abclib\DebugLib\abcLib.sbr
|
||||
.\abclib\DebugLib\abcMinBase.sbr
|
||||
.\abclib\DebugLib\abcNames.sbr
|
||||
.\abclib\DebugLib\abcNetlist.sbr
|
||||
.\abclib\DebugLib\abcNtk.sbr
|
||||
.\abclib\DebugLib\abcObj.sbr
|
||||
.\abclib\DebugLib\abcRefs.sbr
|
||||
.\abclib\DebugLib\abcShow.sbr
|
||||
.\abclib\DebugLib\abcSop.sbr
|
||||
.\abclib\DebugLib\abcUtil.sbr
|
||||
.\abclib\DebugLib\abc.sbr
|
||||
.\abclib\DebugLib\abcAttach.sbr
|
||||
.\abclib\DebugLib\abcAuto.sbr
|
||||
.\abclib\DebugLib\abcBalance.sbr
|
||||
.\abclib\DebugLib\abcBmc.sbr
|
||||
.\abclib\DebugLib\abcClpBdd.sbr
|
||||
.\abclib\DebugLib\abcClpSop.sbr
|
||||
.\abclib\DebugLib\abcCut.sbr
|
||||
.\abclib\DebugLib\abcDebug.sbr
|
||||
.\abclib\DebugLib\abcDress.sbr
|
||||
.\abclib\DebugLib\abcDsd.sbr
|
||||
.\abclib\DebugLib\abcEspresso.sbr
|
||||
.\abclib\DebugLib\abcExtract.sbr
|
||||
.\abclib\DebugLib\abcFpga.sbr
|
||||
.\abclib\DebugLib\abcFpgaFast.sbr
|
||||
.\abclib\DebugLib\abcFraig.sbr
|
||||
.\abclib\DebugLib\abcFxu.sbr
|
||||
.\abclib\DebugLib\abcGen.sbr
|
||||
.\abclib\DebugLib\abcIf.sbr
|
||||
.\abclib\DebugLib\abcIvy.sbr
|
||||
.\abclib\DebugLib\abcLut.sbr
|
||||
.\abclib\DebugLib\abcMap.sbr
|
||||
.\abclib\DebugLib\abcMini.sbr
|
||||
.\abclib\DebugLib\abcMiter.sbr
|
||||
.\abclib\DebugLib\abcMulti.sbr
|
||||
.\abclib\DebugLib\abcMv.sbr
|
||||
.\abclib\DebugLib\abcNtbdd.sbr
|
||||
.\abclib\DebugLib\abcOrder.sbr
|
||||
.\abclib\DebugLib\abcPrint.sbr
|
||||
.\abclib\DebugLib\abcProve.sbr
|
||||
.\abclib\DebugLib\abcReconv.sbr
|
||||
.\abclib\DebugLib\abcRefactor.sbr
|
||||
.\abclib\DebugLib\abcRenode.sbr
|
||||
.\abclib\DebugLib\abcReorder.sbr
|
||||
.\abclib\DebugLib\abcRestruct.sbr
|
||||
.\abclib\DebugLib\abcResub.sbr
|
||||
.\abclib\DebugLib\abcRewrite.sbr
|
||||
.\abclib\DebugLib\abcRr.sbr
|
||||
.\abclib\DebugLib\abcSat.sbr
|
||||
.\abclib\DebugLib\abcStrash.sbr
|
||||
.\abclib\DebugLib\abcSweep.sbr
|
||||
.\abclib\DebugLib\abcSymm.sbr
|
||||
.\abclib\DebugLib\abcTiming.sbr
|
||||
.\abclib\DebugLib\abcUnate.sbr
|
||||
.\abclib\DebugLib\abcUnreach.sbr
|
||||
.\abclib\DebugLib\abcVerify.sbr
|
||||
.\abclib\DebugLib\abcXsim.sbr
|
||||
.\abclib\DebugLib\cmd.sbr
|
||||
.\abclib\DebugLib\cmdAlias.sbr
|
||||
.\abclib\DebugLib\cmdApi.sbr
|
||||
.\abclib\DebugLib\cmdFlag.sbr
|
||||
.\abclib\DebugLib\cmdHist.sbr
|
||||
.\abclib\DebugLib\cmdUtils.sbr
|
||||
.\abclib\DebugLib\io.sbr
|
||||
.\abclib\DebugLib\ioReadAiger.sbr
|
||||
.\abclib\DebugLib\ioReadBaf.sbr
|
||||
.\abclib\DebugLib\ioReadBench.sbr
|
||||
.\abclib\DebugLib\ioReadBlif.sbr
|
||||
.\abclib\DebugLib\ioReadBlifAig.sbr
|
||||
.\abclib\DebugLib\ioReadEdif.sbr
|
||||
.\abclib\DebugLib\ioReadEqn.sbr
|
||||
.\abclib\DebugLib\ioReadPla.sbr
|
||||
.\abclib\DebugLib\ioUtil.sbr
|
||||
.\abclib\DebugLib\ioWriteAiger.sbr
|
||||
.\abclib\DebugLib\ioWriteBaf.sbr
|
||||
.\abclib\DebugLib\ioWriteBench.sbr
|
||||
.\abclib\DebugLib\ioWriteBlif.sbr
|
||||
.\abclib\DebugLib\ioWriteCnf.sbr
|
||||
.\abclib\DebugLib\ioWriteDot.sbr
|
||||
.\abclib\DebugLib\ioWriteEqn.sbr
|
||||
.\abclib\DebugLib\ioWriteGml.sbr
|
||||
.\abclib\DebugLib\ioWriteList.sbr
|
||||
.\abclib\DebugLib\ioWritePla.sbr
|
||||
.\abclib\DebugLib\ioWriteVer.sbr
|
||||
.\abclib\DebugLib\ioWriteVerAux.sbr
|
||||
.\abclib\DebugLib\libSupport.sbr
|
||||
.\abclib\DebugLib\main.sbr
|
||||
.\abclib\DebugLib\mainFrame.sbr
|
||||
.\abclib\DebugLib\mainInit.sbr
|
||||
.\abclib\DebugLib\mainUtils.sbr
|
||||
.\abclib\DebugLib\verCore.sbr
|
||||
.\abclib\DebugLib\verFormula.sbr
|
||||
.\abclib\DebugLib\verParse.sbr
|
||||
.\abclib\DebugLib\verStream.sbr
|
||||
.\abclib\DebugLib\verWords.sbr
|
||||
.\abclib\DebugLib\cuddAddAbs.sbr
|
||||
.\abclib\DebugLib\cuddAddApply.sbr
|
||||
.\abclib\DebugLib\cuddAddFind.sbr
|
||||
.\abclib\DebugLib\cuddAddInv.sbr
|
||||
.\abclib\DebugLib\cuddAddIte.sbr
|
||||
.\abclib\DebugLib\cuddAddNeg.sbr
|
||||
.\abclib\DebugLib\cuddAddWalsh.sbr
|
||||
.\abclib\DebugLib\cuddAndAbs.sbr
|
||||
.\abclib\DebugLib\cuddAnneal.sbr
|
||||
.\abclib\DebugLib\cuddApa.sbr
|
||||
.\abclib\DebugLib\cuddAPI.sbr
|
||||
.\abclib\DebugLib\cuddApprox.sbr
|
||||
.\abclib\DebugLib\cuddBddAbs.sbr
|
||||
.\abclib\DebugLib\cuddBddCorr.sbr
|
||||
.\abclib\DebugLib\cuddBddIte.sbr
|
||||
.\abclib\DebugLib\cuddBridge.sbr
|
||||
.\abclib\DebugLib\cuddCache.sbr
|
||||
.\abclib\DebugLib\cuddCheck.sbr
|
||||
.\abclib\DebugLib\cuddClip.sbr
|
||||
.\abclib\DebugLib\cuddCof.sbr
|
||||
.\abclib\DebugLib\cuddCompose.sbr
|
||||
.\abclib\DebugLib\cuddDecomp.sbr
|
||||
.\abclib\DebugLib\cuddEssent.sbr
|
||||
.\abclib\DebugLib\cuddExact.sbr
|
||||
.\abclib\DebugLib\cuddExport.sbr
|
||||
.\abclib\DebugLib\cuddGenCof.sbr
|
||||
.\abclib\DebugLib\cuddGenetic.sbr
|
||||
.\abclib\DebugLib\cuddGroup.sbr
|
||||
.\abclib\DebugLib\cuddHarwell.sbr
|
||||
.\abclib\DebugLib\cuddInit.sbr
|
||||
.\abclib\DebugLib\cuddInteract.sbr
|
||||
.\abclib\DebugLib\cuddLCache.sbr
|
||||
.\abclib\DebugLib\cuddLevelQ.sbr
|
||||
.\abclib\DebugLib\cuddLinear.sbr
|
||||
.\abclib\DebugLib\cuddLiteral.sbr
|
||||
.\abclib\DebugLib\cuddMatMult.sbr
|
||||
.\abclib\DebugLib\cuddPriority.sbr
|
||||
.\abclib\DebugLib\cuddRead.sbr
|
||||
.\abclib\DebugLib\cuddRef.sbr
|
||||
.\abclib\DebugLib\cuddReorder.sbr
|
||||
.\abclib\DebugLib\cuddSat.sbr
|
||||
.\abclib\DebugLib\cuddSign.sbr
|
||||
.\abclib\DebugLib\cuddSolve.sbr
|
||||
.\abclib\DebugLib\cuddSplit.sbr
|
||||
.\abclib\DebugLib\cuddSubsetHB.sbr
|
||||
.\abclib\DebugLib\cuddSubsetSP.sbr
|
||||
.\abclib\DebugLib\cuddSymmetry.sbr
|
||||
.\abclib\DebugLib\cuddTable.sbr
|
||||
.\abclib\DebugLib\cuddUtil.sbr
|
||||
.\abclib\DebugLib\cuddWindow.sbr
|
||||
.\abclib\DebugLib\cuddZddCount.sbr
|
||||
.\abclib\DebugLib\cuddZddFuncs.sbr
|
||||
.\abclib\DebugLib\cuddZddGroup.sbr
|
||||
.\abclib\DebugLib\cuddZddIsop.sbr
|
||||
.\abclib\DebugLib\cuddZddLin.sbr
|
||||
.\abclib\DebugLib\cuddZddMisc.sbr
|
||||
.\abclib\DebugLib\cuddZddPort.sbr
|
||||
.\abclib\DebugLib\cuddZddReord.sbr
|
||||
.\abclib\DebugLib\cuddZddSetop.sbr
|
||||
.\abclib\DebugLib\cuddZddSymm.sbr
|
||||
.\abclib\DebugLib\cuddZddUtil.sbr
|
||||
.\abclib\DebugLib\epd.sbr
|
||||
.\abclib\DebugLib\mtrBasic.sbr
|
||||
.\abclib\DebugLib\mtrGroup.sbr
|
||||
.\abclib\DebugLib\parseCore.sbr
|
||||
.\abclib\DebugLib\parseEqn.sbr
|
||||
.\abclib\DebugLib\parseStack.sbr
|
||||
.\abclib\DebugLib\dsdApi.sbr
|
||||
.\abclib\DebugLib\dsdCheck.sbr
|
||||
.\abclib\DebugLib\dsdLocal.sbr
|
||||
.\abclib\DebugLib\dsdMan.sbr
|
||||
.\abclib\DebugLib\dsdProc.sbr
|
||||
.\abclib\DebugLib\dsdTree.sbr
|
||||
.\abclib\DebugLib\reoApi.sbr
|
||||
.\abclib\DebugLib\reoCore.sbr
|
||||
.\abclib\DebugLib\reoProfile.sbr
|
||||
.\abclib\DebugLib\reoSift.sbr
|
||||
.\abclib\DebugLib\reoSwap.sbr
|
||||
.\abclib\DebugLib\reoTest.sbr
|
||||
.\abclib\DebugLib\reoTransfer.sbr
|
||||
.\abclib\DebugLib\reoUnits.sbr
|
||||
.\abclib\DebugLib\added.sbr
|
||||
.\abclib\DebugLib\asatmem.sbr
|
||||
.\abclib\DebugLib\solver.sbr
|
||||
.\abclib\DebugLib\msatActivity.sbr
|
||||
.\abclib\DebugLib\msatClause.sbr
|
||||
.\abclib\DebugLib\msatClauseVec.sbr
|
||||
.\abclib\DebugLib\msatMem.sbr
|
||||
.\abclib\DebugLib\msatOrderH.sbr
|
||||
.\abclib\DebugLib\msatQueue.sbr
|
||||
.\abclib\DebugLib\msatRead.sbr
|
||||
.\abclib\DebugLib\msatSolverApi.sbr
|
||||
.\abclib\DebugLib\msatSolverCore.sbr
|
||||
.\abclib\DebugLib\msatSolverIo.sbr
|
||||
.\abclib\DebugLib\msatSolverSearch.sbr
|
||||
.\abclib\DebugLib\msatSort.sbr
|
||||
.\abclib\DebugLib\msatVec.sbr
|
||||
.\abclib\DebugLib\fraigApi.sbr
|
||||
.\abclib\DebugLib\fraigCanon.sbr
|
||||
.\abclib\DebugLib\fraigChoice.sbr
|
||||
.\abclib\DebugLib\fraigFanout.sbr
|
||||
.\abclib\DebugLib\fraigFeed.sbr
|
||||
.\abclib\DebugLib\fraigMan.sbr
|
||||
.\abclib\DebugLib\fraigMem.sbr
|
||||
.\abclib\DebugLib\fraigNode.sbr
|
||||
.\abclib\DebugLib\fraigPrime.sbr
|
||||
.\abclib\DebugLib\fraigSat.sbr
|
||||
.\abclib\DebugLib\fraigTable.sbr
|
||||
.\abclib\DebugLib\fraigUtil.sbr
|
||||
.\abclib\DebugLib\fraigVec.sbr
|
||||
.\abclib\DebugLib\csat_apis.sbr
|
||||
.\abclib\DebugLib\satMem.sbr
|
||||
.\abclib\DebugLib\satSolver.sbr
|
||||
.\abclib\DebugLib\satUtil.sbr
|
||||
.\abclib\DebugLib\fxu.sbr
|
||||
.\abclib\DebugLib\fxuCreate.sbr
|
||||
.\abclib\DebugLib\fxuHeapD.sbr
|
||||
.\abclib\DebugLib\fxuHeapS.sbr
|
||||
.\abclib\DebugLib\fxuList.sbr
|
||||
.\abclib\DebugLib\fxuMatrix.sbr
|
||||
.\abclib\DebugLib\fxuPair.sbr
|
||||
.\abclib\DebugLib\fxuPrint.sbr
|
||||
.\abclib\DebugLib\fxuReduce.sbr
|
||||
.\abclib\DebugLib\fxuSelect.sbr
|
||||
.\abclib\DebugLib\fxuSingle.sbr
|
||||
.\abclib\DebugLib\fxuUpdate.sbr
|
||||
.\abclib\DebugLib\rwrDec.sbr
|
||||
.\abclib\DebugLib\rwrEva.sbr
|
||||
.\abclib\DebugLib\rwrExp.sbr
|
||||
.\abclib\DebugLib\rwrLib.sbr
|
||||
.\abclib\DebugLib\rwrMan.sbr
|
||||
.\abclib\DebugLib\rwrPrint.sbr
|
||||
.\abclib\DebugLib\rwrTemp.sbr
|
||||
.\abclib\DebugLib\rwrUtil.sbr
|
||||
.\abclib\DebugLib\cutApi.sbr
|
||||
.\abclib\DebugLib\cutCut.sbr
|
||||
.\abclib\DebugLib\cutExpand.sbr
|
||||
.\abclib\DebugLib\cutMan.sbr
|
||||
.\abclib\DebugLib\cutMerge.sbr
|
||||
.\abclib\DebugLib\cutNode.sbr
|
||||
.\abclib\DebugLib\cutOracle.sbr
|
||||
.\abclib\DebugLib\cutPre22.sbr
|
||||
.\abclib\DebugLib\cutSeq.sbr
|
||||
.\abclib\DebugLib\cutTruth.sbr
|
||||
.\abclib\DebugLib\decAbc.sbr
|
||||
.\abclib\DebugLib\decFactor.sbr
|
||||
.\abclib\DebugLib\decMan.sbr
|
||||
.\abclib\DebugLib\decPrint.sbr
|
||||
.\abclib\DebugLib\decUtil.sbr
|
||||
.\abclib\DebugLib\simMan.sbr
|
||||
.\abclib\DebugLib\simSat.sbr
|
||||
.\abclib\DebugLib\simSeq.sbr
|
||||
.\abclib\DebugLib\simSupp.sbr
|
||||
.\abclib\DebugLib\simSwitch.sbr
|
||||
.\abclib\DebugLib\simSym.sbr
|
||||
.\abclib\DebugLib\simSymSat.sbr
|
||||
.\abclib\DebugLib\simSymSim.sbr
|
||||
.\abclib\DebugLib\simSymStr.sbr
|
||||
.\abclib\DebugLib\simUtils.sbr
|
||||
.\abclib\DebugLib\retArea.sbr
|
||||
.\abclib\DebugLib\retCore.sbr
|
||||
.\abclib\DebugLib\retDelay.sbr
|
||||
.\abclib\DebugLib\retFlow.sbr
|
||||
.\abclib\DebugLib\retIncrem.sbr
|
||||
.\abclib\DebugLib\retInit.sbr
|
||||
.\abclib\DebugLib\retLvalue.sbr
|
||||
.\abclib\DebugLib\kitBdd.sbr
|
||||
.\abclib\DebugLib\kitFactor.sbr
|
||||
.\abclib\DebugLib\kitGraph.sbr
|
||||
.\abclib\DebugLib\kitHop.sbr
|
||||
.\abclib\DebugLib\kitIsop.sbr
|
||||
.\abclib\DebugLib\kitSop.sbr
|
||||
.\abclib\DebugLib\kitTruth.sbr
|
||||
.\abclib\DebugLib\fpga.sbr
|
||||
.\abclib\DebugLib\fpgaCore.sbr
|
||||
.\abclib\DebugLib\fpgaCreate.sbr
|
||||
.\abclib\DebugLib\fpgaCut.sbr
|
||||
.\abclib\DebugLib\fpgaCutUtils.sbr
|
||||
.\abclib\DebugLib\fpgaFanout.sbr
|
||||
.\abclib\DebugLib\fpgaLib.sbr
|
||||
.\abclib\DebugLib\fpgaMatch.sbr
|
||||
.\abclib\DebugLib\fpgaSwitch.sbr
|
||||
.\abclib\DebugLib\fpgaTime.sbr
|
||||
.\abclib\DebugLib\fpgaTruth.sbr
|
||||
.\abclib\DebugLib\fpgaUtils.sbr
|
||||
.\abclib\DebugLib\fpgaVec.sbr
|
||||
.\abclib\DebugLib\mapper.sbr
|
||||
.\abclib\DebugLib\mapperCanon.sbr
|
||||
.\abclib\DebugLib\mapperCore.sbr
|
||||
.\abclib\DebugLib\mapperCreate.sbr
|
||||
.\abclib\DebugLib\mapperCut.sbr
|
||||
.\abclib\DebugLib\mapperCutUtils.sbr
|
||||
.\abclib\DebugLib\mapperFanout.sbr
|
||||
.\abclib\DebugLib\mapperLib.sbr
|
||||
.\abclib\DebugLib\mapperMatch.sbr
|
||||
.\abclib\DebugLib\mapperRefs.sbr
|
||||
.\abclib\DebugLib\mapperSuper.sbr
|
||||
.\abclib\DebugLib\mapperSwitch.sbr
|
||||
.\abclib\DebugLib\mapperTable.sbr
|
||||
.\abclib\DebugLib\mapperTime.sbr
|
||||
.\abclib\DebugLib\mapperTree.sbr
|
||||
.\abclib\DebugLib\mapperTruth.sbr
|
||||
.\abclib\DebugLib\mapperUtils.sbr
|
||||
.\abclib\DebugLib\mapperVec.sbr
|
||||
.\abclib\DebugLib\mio.sbr
|
||||
.\abclib\DebugLib\mioApi.sbr
|
||||
.\abclib\DebugLib\mioFunc.sbr
|
||||
.\abclib\DebugLib\mioRead.sbr
|
||||
.\abclib\DebugLib\mioUtils.sbr
|
||||
.\abclib\DebugLib\super.sbr
|
||||
.\abclib\DebugLib\superAnd.sbr
|
||||
.\abclib\DebugLib\superGate.sbr
|
||||
.\abclib\DebugLib\superWrite.sbr
|
||||
.\abclib\DebugLib\ifCore.sbr
|
||||
.\abclib\DebugLib\ifCut.sbr
|
||||
.\abclib\DebugLib\ifMan.sbr
|
||||
.\abclib\DebugLib\ifMap.sbr
|
||||
.\abclib\DebugLib\ifPrepro.sbr
|
||||
.\abclib\DebugLib\ifReduce.sbr
|
||||
.\abclib\DebugLib\ifSeq.sbr
|
||||
.\abclib\DebugLib\ifTime.sbr
|
||||
.\abclib\DebugLib\ifTruth.sbr
|
||||
.\abclib\DebugLib\ifUtil.sbr
|
||||
.\abclib\DebugLib\extraBddAuto.sbr
|
||||
.\abclib\DebugLib\extraBddKmap.sbr
|
||||
.\abclib\DebugLib\extraBddMisc.sbr
|
||||
.\abclib\DebugLib\extraBddSymm.sbr
|
||||
.\abclib\DebugLib\extraBddUnate.sbr
|
||||
.\abclib\DebugLib\extraUtilBitMatrix.sbr
|
||||
.\abclib\DebugLib\extraUtilCanon.sbr
|
||||
.\abclib\DebugLib\extraUtilFile.sbr
|
||||
.\abclib\DebugLib\extraUtilMemory.sbr
|
||||
.\abclib\DebugLib\extraUtilMisc.sbr
|
||||
.\abclib\DebugLib\extraUtilProgress.sbr
|
||||
.\abclib\DebugLib\extraUtilReader.sbr
|
||||
.\abclib\DebugLib\extraUtilTruth.sbr
|
||||
.\abclib\DebugLib\extraUtilUtil.sbr
|
||||
.\abclib\DebugLib\st.sbr
|
||||
.\abclib\DebugLib\stmm.sbr
|
||||
.\abclib\DebugLib\mvc.sbr
|
||||
.\abclib\DebugLib\mvcApi.sbr
|
||||
.\abclib\DebugLib\mvcCompare.sbr
|
||||
.\abclib\DebugLib\mvcContain.sbr
|
||||
.\abclib\DebugLib\mvcCover.sbr
|
||||
.\abclib\DebugLib\mvcCube.sbr
|
||||
.\abclib\DebugLib\mvcDivide.sbr
|
||||
.\abclib\DebugLib\mvcDivisor.sbr
|
||||
.\abclib\DebugLib\mvcList.sbr
|
||||
.\abclib\DebugLib\mvcLits.sbr
|
||||
.\abclib\DebugLib\mvcMan.sbr
|
||||
.\abclib\DebugLib\mvcOpAlg.sbr
|
||||
.\abclib\DebugLib\mvcOpBool.sbr
|
||||
.\abclib\DebugLib\mvcPrint.sbr
|
||||
.\abclib\DebugLib\mvcSort.sbr
|
||||
.\abclib\DebugLib\mvcUtils.sbr
|
||||
.\abclib\DebugLib\cofactor.sbr
|
||||
.\abclib\DebugLib\cols.sbr
|
||||
.\abclib\DebugLib\compl.sbr
|
||||
.\abclib\DebugLib\contain.sbr
|
||||
.\abclib\DebugLib\cubehack.sbr
|
||||
.\abclib\DebugLib\cubestr.sbr
|
||||
.\abclib\DebugLib\cvrin.sbr
|
||||
.\abclib\DebugLib\cvrm.sbr
|
||||
.\abclib\DebugLib\cvrmisc.sbr
|
||||
.\abclib\DebugLib\cvrout.sbr
|
||||
.\abclib\DebugLib\dominate.sbr
|
||||
.\abclib\DebugLib\equiv.sbr
|
||||
.\abclib\DebugLib\espresso.sbr
|
||||
.\abclib\DebugLib\essen.sbr
|
||||
.\abclib\DebugLib\exact.sbr
|
||||
.\abclib\DebugLib\expand.sbr
|
||||
.\abclib\DebugLib\gasp.sbr
|
||||
.\abclib\DebugLib\gimpel.sbr
|
||||
.\abclib\DebugLib\globals.sbr
|
||||
.\abclib\DebugLib\hack.sbr
|
||||
.\abclib\DebugLib\indep.sbr
|
||||
.\abclib\DebugLib\irred.sbr
|
||||
.\abclib\DebugLib\map.sbr
|
||||
.\abclib\DebugLib\matrix.sbr
|
||||
.\abclib\DebugLib\mincov.sbr
|
||||
.\abclib\DebugLib\opo.sbr
|
||||
.\abclib\DebugLib\pair.sbr
|
||||
.\abclib\DebugLib\part.sbr
|
||||
.\abclib\DebugLib\primes.sbr
|
||||
.\abclib\DebugLib\reduce.sbr
|
||||
.\abclib\DebugLib\rows.sbr
|
||||
.\abclib\DebugLib\set.sbr
|
||||
.\abclib\DebugLib\setc.sbr
|
||||
.\abclib\DebugLib\sharp.sbr
|
||||
.\abclib\DebugLib\sminterf.sbr
|
||||
.\abclib\DebugLib\solution.sbr
|
||||
.\abclib\DebugLib\sparse.sbr
|
||||
.\abclib\DebugLib\unate.sbr
|
||||
.\abclib\DebugLib\verify.sbr
|
||||
.\abclib\DebugLib\nmApi.sbr
|
||||
.\abclib\DebugLib\nmTable.sbr
|
||||
.\abclib\DebugLib\hopBalance.sbr
|
||||
.\abclib\DebugLib\hopCheck.sbr
|
||||
.\abclib\DebugLib\hopDfs.sbr
|
||||
.\abclib\DebugLib\hopMan.sbr
|
||||
.\abclib\DebugLib\hopMem.sbr
|
||||
.\abclib\DebugLib\hopObj.sbr
|
||||
.\abclib\DebugLib\hopOper.sbr
|
||||
.\abclib\DebugLib\hopTable.sbr
|
||||
.\abclib\DebugLib\hopUtil.sbr
|
||||
.\abclib\DebugLib\ivyBalance.sbr
|
||||
.\abclib\DebugLib\ivyCanon.sbr
|
||||
.\abclib\DebugLib\ivyCheck.sbr
|
||||
.\abclib\DebugLib\ivyCut.sbr
|
||||
.\abclib\DebugLib\ivyCutTrav.sbr
|
||||
.\abclib\DebugLib\ivyDfs.sbr
|
||||
.\abclib\DebugLib\ivyDsd.sbr
|
||||
.\abclib\DebugLib\ivyFanout.sbr
|
||||
.\abclib\DebugLib\ivyFastMap.sbr
|
||||
.\abclib\DebugLib\ivyFraig.sbr
|
||||
.\abclib\DebugLib\ivyHaig.sbr
|
||||
.\abclib\DebugLib\ivyMan.sbr
|
||||
.\abclib\DebugLib\ivyMem.sbr
|
||||
.\abclib\DebugLib\ivyMulti.sbr
|
||||
.\abclib\DebugLib\ivyObj.sbr
|
||||
.\abclib\DebugLib\ivyOper.sbr
|
||||
.\abclib\DebugLib\ivyResyn.sbr
|
||||
.\abclib\DebugLib\ivyRwr.sbr
|
||||
.\abclib\DebugLib\ivySeq.sbr
|
||||
.\abclib\DebugLib\ivyShow.sbr
|
||||
.\abclib\DebugLib\ivyTable.sbr
|
||||
.\abclib\DebugLib\ivyUtil.sbr
|
||||
.\abclib\DebugLib\rwtDec.sbr
|
||||
.\abclib\DebugLib\rwtMan.sbr
|
||||
.\abclib\DebugLib\rwtUtil.sbr
|
||||
.\abclib\DebugLib\mem.sbr
|
||||
.\abclib\DebugLib\jfront.sbr]
|
||||
Creating command line "bscmake.exe @C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSP137C.tmp"
|
||||
Creating browse info file...
|
||||
<h3>Output Window</h3>
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
abclib_debug.lib - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: abctestlib - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSP1389.tmp" with contents
|
||||
[
|
||||
/nologo /MLd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"Debug/" /Fp"Debug/abctestlib.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c
|
||||
"C:\_projects\abc\demo.c"
|
||||
]
|
||||
Creating command line "cl.exe @C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSP1389.tmp"
|
||||
Creating temporary file "C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSP138A.tmp" with contents
|
||||
[
|
||||
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib C:\_projects\abc\abclib\abclib_debug.lib /nologo /subsystem:console /incremental:yes /pdb:"Debug/abctestlib.pdb" /debug /machine:I386 /out:"_TEST/abctestlib.exe" /pdbtype:sept
|
||||
.\Debug\demo.obj
|
||||
]
|
||||
Creating command line "link.exe @C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSP138A.tmp"
|
||||
<h3>Output Window</h3>
|
||||
Compiling...
|
||||
demo.c
|
||||
Linking...
|
||||
Creating command line "bscmake.exe /nologo /o"Debug/abctestlib.bsc" .\Debug\demo.sbr"
|
||||
Creating browse info file...
|
||||
<h3>Output Window</h3>
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
abctestlib.exe - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -351,7 +351,7 @@ void Hop_ObjPrintVerilog( FILE * pFile, Hop_Obj_t * pObj, Vec_Vec_t * vLevels, i
|
|||
// constant case
|
||||
if ( Hop_ObjIsConst1(pObj) )
|
||||
{
|
||||
fprintf( pFile, "%d", !fCompl );
|
||||
fprintf( pFile, "1\'b%d", !fCompl );
|
||||
return;
|
||||
}
|
||||
// PI case
|
||||
|
|
|
|||
|
|
@ -140,6 +140,9 @@ bool Abc_NtkDoCheck( Abc_Ntk_t * pNtk )
|
|||
if ( !Abc_NtkCheckPos( pNtk ) )
|
||||
return 0;
|
||||
|
||||
if ( Abc_NtkHasBlackbox(pNtk) )
|
||||
return 1;
|
||||
|
||||
// check the connectivity of objects
|
||||
Abc_NtkForEachObj( pNtk, pObj, i )
|
||||
if ( !Abc_NtkCheckObj( pNtk, pObj ) )
|
||||
|
|
@ -236,41 +239,27 @@ bool Abc_NtkCheckNames( Abc_Ntk_t * pNtk )
|
|||
Vec_Int_t * vNameIds;
|
||||
char * pName;
|
||||
int i, NameId;
|
||||
/*
|
||||
if ( Abc_NtkIsNetlist(pNtk) )
|
||||
{
|
||||
|
||||
// check that each net has a name
|
||||
Abc_NtkForEachNet( pNtk, pObj, i )
|
||||
if ( Abc_NtkIsNetlist(pNtk) )
|
||||
return 1;
|
||||
|
||||
// check that each CI/CO has a name
|
||||
Abc_NtkForEachCi( pNtk, pObj, i )
|
||||
{
|
||||
pObj = Abc_ObjFanout0Ntk(pObj);
|
||||
if ( Nm_ManFindNameById(pObj->pNtk->pManName, pObj->Id) == NULL )
|
||||
{
|
||||
if ( Nm_ManFindNameById(pObj->pNtk->pManName, pObj->Id) )
|
||||
{
|
||||
fprintf( stdout, "NetworkCheck: Net \"%s\" has different name in the name table and at the data pointer.\n", pObj->pData );
|
||||
return 0;
|
||||
}
|
||||
fprintf( stdout, "NetworkCheck: CI with ID %d is in the network but not in the name table.\n", pObj->Id );
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
*/
|
||||
Abc_NtkForEachCo( pNtk, pObj, i )
|
||||
{
|
||||
// check that each CI/CO has a name
|
||||
Abc_NtkForEachCi( pNtk, pObj, i )
|
||||
pObj = Abc_ObjFanin0Ntk(pObj);
|
||||
if ( Nm_ManFindNameById(pObj->pNtk->pManName, pObj->Id) == NULL )
|
||||
{
|
||||
pObj = Abc_ObjFanout0Ntk(pObj);
|
||||
if ( Nm_ManFindNameById(pObj->pNtk->pManName, pObj->Id) == NULL )
|
||||
{
|
||||
fprintf( stdout, "NetworkCheck: CI with ID %d is in the network but not in the name table.\n", pObj->Id );
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
Abc_NtkForEachCo( pNtk, pObj, i )
|
||||
{
|
||||
pObj = Abc_ObjFanin0Ntk(pObj);
|
||||
if ( Nm_ManFindNameById(pObj->pNtk->pManName, pObj->Id) == NULL )
|
||||
{
|
||||
fprintf( stdout, "NetworkCheck: CO with ID %d is in the network but not in the name table.\n", pObj->Id );
|
||||
return 0;
|
||||
}
|
||||
fprintf( stdout, "NetworkCheck: CO with ID %d is in the network but not in the name table.\n", pObj->Id );
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -265,7 +265,7 @@ Abc_Ntk_t * Abc_NtkConvertBlackboxes( Abc_Ntk_t * pNtk )
|
|||
Abc_ObjForEachFanin( pObj, pTerm, k )
|
||||
{
|
||||
pNet = Abc_ObjFanin0(pTerm);
|
||||
if ( pNet->pCopy )
|
||||
if ( pNet->pCopy && !Abc_ObjIsCi(Abc_ObjFanin0(pNet)) )
|
||||
{
|
||||
Abc_NodeSetTravIdCurrent( pTerm );
|
||||
continue;
|
||||
|
|
@ -315,13 +315,14 @@ Abc_Ntk_t * Abc_NtkConvertBlackboxes( Abc_Ntk_t * pNtk )
|
|||
***********************************************************************/
|
||||
Abc_Ntk_t * Abc_NtkInsertNewLogic( Abc_Ntk_t * pNtkH, Abc_Ntk_t * pNtkL )
|
||||
{
|
||||
Abc_Lib_t * pDesign;
|
||||
Abc_Ntk_t * pNtkNew;
|
||||
Abc_Obj_t * pObjH, * pObjL, * pNetH, * pNetL, * pTermH;
|
||||
int i, k;
|
||||
|
||||
assert( Abc_NtkIsNetlist(pNtkH) );
|
||||
assert( Abc_NtkWhiteboxNum(pNtkH) == 0 );
|
||||
assert( Abc_NtkBlackboxNum(pNtkL) > 0 );
|
||||
assert( Abc_NtkBlackboxNum(pNtkH) > 0 );
|
||||
|
||||
assert( Abc_NtkIsNetlist(pNtkL) );
|
||||
assert( Abc_NtkWhiteboxNum(pNtkL) == 0 );
|
||||
|
|
@ -343,38 +344,73 @@ Abc_Ntk_t * Abc_NtkInsertNewLogic( Abc_Ntk_t * pNtkH, Abc_Ntk_t * pNtkL )
|
|||
pNetL = Abc_NtkFindNet( pNtkL, Abc_ObjName(pNetH) );
|
||||
if ( pNetL == NULL || !Abc_ObjIsPi( Abc_ObjFanin0(pNetL) ) )
|
||||
{
|
||||
printf( "There is no PI corresponding to the PI %s.\n", Abc_ObjName(pNetH) );
|
||||
printf( "Error in Abc_NtkInsertNewLogic(): There is no PI corresponding to the PI %s.\n", Abc_ObjName(pNetH) );
|
||||
Abc_NtkDelete( pNtkNew );
|
||||
return NULL;
|
||||
}
|
||||
// duplicate
|
||||
if ( pNetL->pCopy )
|
||||
{
|
||||
printf( "Error in Abc_NtkInsertNewLogic(): Primary input %s is repeated twice.\n", Abc_ObjName(pNetH) );
|
||||
Abc_NtkDelete( pNtkNew );
|
||||
return NULL;
|
||||
}
|
||||
// create the new net
|
||||
pNetL->pCopy = Abc_NtkFindOrCreateNet( pNtkNew, Abc_ObjName(pNetH) );
|
||||
Abc_NtkDupObj( pNtkNew, Abc_ObjFanin0(pNetL), 0 );
|
||||
}
|
||||
Abc_NtkForEachPo( pNtkH, pObjH, i )
|
||||
{
|
||||
pNetH = Abc_ObjFanin0(pObjH);
|
||||
pNetL = Abc_NtkFindNet( pNtkL, Abc_ObjName(pNetH) );
|
||||
if ( pNetL == NULL || !Abc_ObjIsPo( Abc_ObjFanout0(pNetL) ) )
|
||||
{
|
||||
printf( "There is no PO corresponding to the PO %s.\n", Abc_ObjName(pNetH) );
|
||||
Abc_NtkDelete( pNtkNew );
|
||||
return NULL;
|
||||
}
|
||||
// duplicate
|
||||
pNetL->pCopy = Abc_NtkFindOrCreateNet( pNtkNew, Abc_ObjName(pNetH) );
|
||||
Abc_NtkDupObj( pNtkNew, Abc_ObjFanout0(pNetL), 0 );
|
||||
}
|
||||
|
||||
// make sure every BB has a PI/PO in the processed network
|
||||
Abc_NtkForEachBlackbox( pNtkH, pObjH, i )
|
||||
{
|
||||
// duplicate the box
|
||||
Abc_NtkDupObj( pNtkNew, pObjH, 1 );
|
||||
// look and fanins/fanouts of the box
|
||||
Abc_NtkDupBox( pNtkNew, pObjH, 0 );
|
||||
pObjH->pCopy->pData = pObjH->pData;
|
||||
// create PIs
|
||||
Abc_ObjForEachFanout( pObjH, pTermH, k )
|
||||
{
|
||||
pNetH = Abc_ObjFanout0( pTermH );
|
||||
pNetL = Abc_NtkFindNet( pNtkL, Abc_ObjName(pNetH) );
|
||||
if ( pNetL == NULL || !Abc_ObjIsPi( Abc_ObjFanin0(pNetL) ) )
|
||||
{
|
||||
printf( "Error in Abc_NtkInsertNewLogic(): There is no PI corresponding to the inpout %s of blackbox %s.\n", Abc_ObjName(pNetH), Abc_ObjName(pObjH) );
|
||||
Abc_NtkDelete( pNtkNew );
|
||||
return NULL;
|
||||
}
|
||||
if ( pNetL->pCopy )
|
||||
{
|
||||
printf( "Error in Abc_NtkInsertNewLogic(): Box output %s is repeated twice.\n", Abc_ObjName(pNetH) );
|
||||
Abc_NtkDelete( pNtkNew );
|
||||
return NULL;
|
||||
}
|
||||
// create net and map the PI
|
||||
pNetL->pCopy = Abc_NtkFindOrCreateNet( pNtkNew, Abc_ObjName(pNetH) );
|
||||
Abc_ObjFanin0(pNetL)->pCopy = pTermH->pCopy;
|
||||
}
|
||||
}
|
||||
|
||||
Abc_NtkForEachPo( pNtkH, pObjH, i )
|
||||
{
|
||||
pNetH = Abc_ObjFanin0(pObjH);
|
||||
pNetL = Abc_NtkFindNet( pNtkL, Abc_ObjName(pNetH) );
|
||||
if ( pNetL == NULL || !Abc_ObjIsPo( Abc_ObjFanout0(pNetL) ) )
|
||||
{
|
||||
printf( "Error in Abc_NtkInsertNewLogic(): There is no PO corresponding to the PO %s.\n", Abc_ObjName(pNetH) );
|
||||
Abc_NtkDelete( pNtkNew );
|
||||
return NULL;
|
||||
}
|
||||
if ( pNetL->pCopy )
|
||||
continue;
|
||||
// create the new net
|
||||
pNetL->pCopy = Abc_NtkFindOrCreateNet( pNtkNew, Abc_ObjName(pNetH) );
|
||||
Abc_NtkDupObj( pNtkNew, Abc_ObjFanout0(pNetL), 0 );
|
||||
}
|
||||
Abc_NtkForEachBlackbox( pNtkH, pObjH, i )
|
||||
{
|
||||
Abc_ObjForEachFanin( pObjH, pTermH, k )
|
||||
{
|
||||
char * pName;
|
||||
pNetH = Abc_ObjFanin0( pTermH );
|
||||
pName = Abc_ObjName(pNetH);
|
||||
pNetL = Abc_NtkFindNet( pNtkL, Abc_ObjName(pNetH) );
|
||||
if ( pNetL == NULL || !Abc_ObjIsPo( Abc_ObjFanout0(pNetL) ) )
|
||||
{
|
||||
|
|
@ -382,39 +418,39 @@ Abc_Ntk_t * Abc_NtkInsertNewLogic( Abc_Ntk_t * pNtkH, Abc_Ntk_t * pNtkL )
|
|||
Abc_NtkDelete( pNtkNew );
|
||||
return NULL;
|
||||
}
|
||||
// duplicate
|
||||
pNetL->pCopy = Abc_NtkFindOrCreateNet( pNtkNew, Abc_ObjName(pNetH) );
|
||||
Abc_NtkDupObj( pNtkNew, Abc_ObjFanout0(pNetL), 0 );
|
||||
// connect
|
||||
Abc_ObjAddFanin( pObjH->pCopy, Abc_ObjFanout0(pNetL)->pCopy );
|
||||
}
|
||||
Abc_ObjForEachFanout( pObjH, pTermH, k )
|
||||
{
|
||||
pNetH = Abc_ObjFanout0( pTermH );
|
||||
pNetL = Abc_NtkFindNet( pNtkL, Abc_ObjName(pNetH) );
|
||||
if ( pNetL == NULL || !Abc_ObjIsPi( Abc_ObjFanin0(pNetL) ) )
|
||||
// create net and map the PO
|
||||
if ( pNetL->pCopy )
|
||||
{
|
||||
printf( "There is no PI corresponding to the inpout %s of blackbox %s.\n", Abc_ObjName(pNetH), Abc_ObjName(pObjH) );
|
||||
Abc_NtkDelete( pNtkNew );
|
||||
return NULL;
|
||||
if ( Abc_ObjFanout0(pNetL)->pCopy == NULL )
|
||||
Abc_ObjFanout0(pNetL)->pCopy = pTermH->pCopy;
|
||||
else
|
||||
Abc_ObjAddFanin( pTermH->pCopy, pNetL->pCopy );
|
||||
continue;
|
||||
}
|
||||
// duplicate
|
||||
pNetL->pCopy = Abc_NtkFindOrCreateNet( pNtkNew, Abc_ObjName(pNetH) );
|
||||
Abc_NtkDupObj( pNtkNew, Abc_ObjFanin0(pNetL), 0 );
|
||||
// connect
|
||||
Abc_ObjAddFanin( Abc_ObjFanin0(pNetL)->pCopy, pObjH->pCopy );
|
||||
Abc_ObjFanout0(pNetL)->pCopy = pTermH->pCopy;
|
||||
}
|
||||
}
|
||||
|
||||
// duplicate other objects of the logic network
|
||||
Abc_NtkForEachObj( pNtkL, pObjL, i )
|
||||
if ( pObjL->pCopy )
|
||||
Abc_NtkDupObj( pNtkNew, pObjL, 0 );
|
||||
if ( pObjL->pCopy == NULL && !Abc_ObjIsPo(pObjL) ) // skip POs feeding into PIs
|
||||
Abc_NtkDupObj( pNtkNew, pObjL, Abc_ObjIsNet(pObjL) );
|
||||
|
||||
// connect objects
|
||||
Abc_NtkForEachObj( pNtkL, pObjL, i )
|
||||
Abc_ObjForEachFanin( pObjL, pNetL, k )
|
||||
Abc_ObjAddFanin( pObjL->pCopy, pNetL->pCopy );
|
||||
if ( pObjL->pCopy )
|
||||
Abc_ObjAddFanin( pObjL->pCopy, pNetL->pCopy );
|
||||
|
||||
// transfer the design
|
||||
pDesign = pNtkH->pDesign; pNtkH->pDesign = NULL;
|
||||
assert( Vec_PtrEntry( pDesign->vModules, 0 ) == pNtkH );
|
||||
Vec_PtrWriteEntry( pDesign->vModules, 0, pNtkNew );
|
||||
pNtkNew->pDesign = pDesign;
|
||||
|
||||
//Abc_NtkPrintStats( stdout, pNtkH, 0 );
|
||||
//Abc_NtkPrintStats( stdout, pNtkNew, 0 );
|
||||
|
||||
// check integrity
|
||||
if ( !Abc_NtkCheck( pNtkNew ) )
|
||||
|
|
|
|||
|
|
@ -329,7 +329,15 @@ Abc_Obj_t * Abc_NtkDupObj( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pObj, int fCopyName
|
|||
else if ( Abc_ObjIsCo(pObj) )
|
||||
{
|
||||
if ( !Abc_NtkIsNetlist(pNtkNew) )
|
||||
Abc_ObjAssignName( pObjNew, Abc_ObjName(Abc_ObjFanin0Ntk(pObj)), NULL );
|
||||
{
|
||||
if ( Abc_ObjIsPo(pObj) )
|
||||
Abc_ObjAssignName( pObjNew, Abc_ObjName(Abc_ObjFanin0Ntk(pObj)), NULL );
|
||||
else
|
||||
{
|
||||
assert( Abc_ObjIsLatch(Abc_ObjFanout0(pObj)) );
|
||||
Abc_ObjAssignName( pObjNew, Abc_ObjName(pObj), NULL );
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ( Abc_ObjIsBox(pObj) || Abc_ObjIsNet(pObj) )
|
||||
Abc_ObjAssignName( pObjNew, Abc_ObjName(pObj), NULL );
|
||||
|
|
|
|||
|
|
@ -62,7 +62,8 @@ void Abc_NtkPrintStats( FILE * pFile, Abc_Ntk_t * pNtk, int fFactored )
|
|||
{
|
||||
fprintf( pFile, " net = %5d", Abc_NtkNetNum(pNtk) );
|
||||
fprintf( pFile, " nd = %5d", Abc_NtkNodeNum(pNtk) );
|
||||
fprintf( pFile, " box = %5d", Abc_NtkBoxNum(pNtk) );
|
||||
fprintf( pFile, " wbox = %3d", Abc_NtkWhiteboxNum(pNtk) );
|
||||
fprintf( pFile, " bbox = %3d", Abc_NtkBlackboxNum(pNtk) );
|
||||
}
|
||||
else if ( Abc_NtkIsStrash(pNtk) )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ void Io_Init( Abc_Frame_t * pAbc )
|
|||
Cmd_CommandAdd( pAbc, "I/O", "read_eqn", IoCommandReadEqn, 1 );
|
||||
Cmd_CommandAdd( pAbc, "I/O", "read_pla", IoCommandReadPla, 1 );
|
||||
Cmd_CommandAdd( pAbc, "I/O", "read_truth", IoCommandReadTruth, 1 );
|
||||
// Cmd_CommandAdd( pAbc, "I/O", "read_verilog", IoCommandReadVerilog, 1 );
|
||||
Cmd_CommandAdd( pAbc, "I/O", "read_verilog", IoCommandReadVerilog, 1 );
|
||||
// Cmd_CommandAdd( pAbc, "I/O", "read_ver", IoCommandReadVer, 1 );
|
||||
// Cmd_CommandAdd( pAbc, "I/O", "read_verlib", IoCommandReadVerLib, 0 );
|
||||
|
||||
|
|
@ -103,7 +103,7 @@ void Io_Init( Abc_Frame_t * pAbc )
|
|||
Cmd_CommandAdd( pAbc, "I/O", "write_gml", IoCommandWriteGml, 0 );
|
||||
// Cmd_CommandAdd( pAbc, "I/O", "write_list", IoCommandWriteList, 0 );
|
||||
Cmd_CommandAdd( pAbc, "I/O", "write_pla", IoCommandWritePla, 0 );
|
||||
// Cmd_CommandAdd( pAbc, "I/O", "write_verilog", IoCommandWriteVerilog, 0 );
|
||||
Cmd_CommandAdd( pAbc, "I/O", "write_verilog", IoCommandWriteVerilog, 0 );
|
||||
// Cmd_CommandAdd( pAbc, "I/O", "write_verlib", IoCommandWriteVerLib, 0 );
|
||||
}
|
||||
|
||||
|
|
@ -995,7 +995,7 @@ int IoCommandWriteHie( Abc_Frame_t * pAbc, int argc, char **argv )
|
|||
pFileName = argv[globalUtilOptind+1];
|
||||
// call the corresponding file writer
|
||||
// Io_Write( pAbc->pNtkCur, pFileName, Io_ReadFileType(pFileName) );
|
||||
Io_WriteHie( pAbc->pNtkCur, pFileName, Io_ReadFileType(pFileName), pBaseName );
|
||||
Io_WriteHie( pAbc->pNtkCur, pBaseName, pFileName );
|
||||
return 0;
|
||||
|
||||
usage:
|
||||
|
|
|
|||
|
|
@ -82,10 +82,10 @@ extern Abc_Ntk_t * Io_ReadBench( char * pFileName, int fCheck );
|
|||
extern Abc_Ntk_t * Io_ReadEdif( char * pFileName, int fCheck );
|
||||
/*=== abcReadEqn.c ============================================================*/
|
||||
extern Abc_Ntk_t * Io_ReadEqn( char * pFileName, int fCheck );
|
||||
/*=== abcReadVerilog.c ========================================================*/
|
||||
extern Abc_Ntk_t * Io_ReadVerilog( char * pFileName, int fCheck );
|
||||
/*=== abcReadPla.c ============================================================*/
|
||||
extern Abc_Ntk_t * Io_ReadPla( char * pFileName, int fCheck );
|
||||
/*=== abcReadVerilog.c ========================================================*/
|
||||
extern Abc_Ntk_t * Io_ReadVerilog( char * pFileName, int fCheck );
|
||||
/*=== abcWriteAiger.c =========================================================*/
|
||||
extern void Io_WriteAiger( Abc_Ntk_t * pNtk, char * pFileName );
|
||||
/*=== abcWriteBaf.c ===========================================================*/
|
||||
|
|
@ -114,14 +114,14 @@ extern void Io_WriteList( Abc_Ntk_t * pNtk, char * pFileName, int
|
|||
/*=== abcWritePla.c ===========================================================*/
|
||||
extern int Io_WritePla( Abc_Ntk_t * pNtk, char * FileName );
|
||||
/*=== abcWriteVerilog.c =======================================================*/
|
||||
extern void Io_WriteVerilog( Abc_Ntk_t * pNtk, char * FileName, int fVerLibStyle );
|
||||
extern void Io_WriteVerilog( Abc_Ntk_t * pNtk, char * FileName );
|
||||
/*=== abcUtil.c ===============================================================*/
|
||||
extern Io_FileType_t Io_ReadFileType( char * pFileName );
|
||||
extern Abc_Ntk_t * Io_ReadNetlist( char * pFileName, Io_FileType_t FileType, int fCheck );
|
||||
extern Abc_Ntk_t * Io_Read( char * pFileName, Io_FileType_t FileType, int fCheck );
|
||||
extern Abc_Ntk_t * Io_ReadHie( char * pFileName, Io_FileType_t FileType, int fCheck );
|
||||
extern void Io_Write( Abc_Ntk_t * pNtk, char * pFileName, Io_FileType_t FileType );
|
||||
extern void Io_WriteHie( Abc_Ntk_t * pNtk, char * pFileName, Io_FileType_t FileType, char * pBaseName );
|
||||
extern void Io_WriteHie( Abc_Ntk_t * pNtk, char * pBaseName, char * pFileName );
|
||||
extern Abc_Obj_t * Io_ReadCreatePi( Abc_Ntk_t * pNtk, char * pName );
|
||||
extern Abc_Obj_t * Io_ReadCreatePo( Abc_Ntk_t * pNtk, char * pName );
|
||||
extern Abc_Obj_t * Io_ReadCreateAssert( Abc_Ntk_t * pNtk, char * pName );
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
PackageName [Command processing package.]
|
||||
|
||||
Synopsis [Procedures to read a subset of structural Verilog from IWLS 2005 benchmark.]
|
||||
Synopsis [Procedure to read network from file.]
|
||||
|
||||
Author [Alan Mishchenko]
|
||||
|
||||
|
|
@ -24,99 +24,7 @@
|
|||
/// DECLARATIONS ///
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
typedef struct Io_ReadVer_t_ Io_ReadVer_t; // all reading info
|
||||
struct Io_ReadVer_t_
|
||||
{
|
||||
// general info about file
|
||||
char * pFileName; // the name of the file
|
||||
Extra_FileReader_t* pReader; // the input file reader
|
||||
// current processing info
|
||||
st_table * tKeywords; // mapping of keywords into codes
|
||||
Abc_Ntk_t * pNtk; // the primary network
|
||||
// the error message
|
||||
FILE * Output; // the output stream
|
||||
char sError[1000]; // the error string generated during parsing
|
||||
int LineCur; // the line currently being parsed
|
||||
Vec_Ptr_t * vSkipped; // temporary storage for skipped objects
|
||||
};
|
||||
|
||||
// verilog keyword types
|
||||
typedef enum {
|
||||
VER_NONE = 0,
|
||||
VER_MODULE = -1,
|
||||
VER_ENDMODULE = -2,
|
||||
VER_INPUT = -3,
|
||||
VER_OUTPUT = -4,
|
||||
VER_INOUT = -5,
|
||||
VER_WIRE = -6,
|
||||
VER_ASSIGN = -7
|
||||
} Ver_KeywordType_t;
|
||||
|
||||
// the list of verilog keywords
|
||||
static char * s_Keywords[10] =
|
||||
{
|
||||
NULL, // unused
|
||||
"module", // -1
|
||||
"endmodule", // -2
|
||||
"input", // -3
|
||||
"output", // -4
|
||||
"inout", // -5
|
||||
"wire", // -6
|
||||
"assign" // -7
|
||||
};
|
||||
|
||||
// the list of gates in the Cadence library
|
||||
static char * s_CadenceGates[40][5] =
|
||||
{
|
||||
{ "INVX1", "1", "1", "0 1\n", NULL }, // 0
|
||||
{ "INVX2", "1", "1", "0 1\n", NULL }, // 1
|
||||
{ "INVX4", "1", "1", "0 1\n", NULL }, // 2
|
||||
{ "INVX8", "1", "1", "0 1\n", NULL }, // 3
|
||||
{ "BUFX1", "1", "1", "1 1\n", NULL }, // 4
|
||||
{ "BUFX3", "1", "1", "1 1\n", NULL }, // 5
|
||||
{ "NOR2X1", "2", "1", "00 1\n", NULL }, // 6
|
||||
{ "NOR3X1", "3", "1", "000 1\n", NULL }, // 7
|
||||
{ "NOR4X1", "4", "1", "0000 1\n", NULL }, // 8
|
||||
{ "NAND2X1", "2", "1", "11 0\n", NULL }, // 9
|
||||
{ "NAND2X2", "2", "1", "11 0\n", NULL }, // 10
|
||||
{ "NAND3X1", "3", "1", "111 0\n", NULL }, // 11
|
||||
{ "NAND4X1", "4", "1", "1111 0\n", NULL }, // 12
|
||||
{ "OR2X1", "2", "1", "00 0\n", NULL }, // 13
|
||||
{ "OR4X1", "4", "1", "0000 0\n", NULL }, // 14
|
||||
{ "AND2X1", "2", "1", "11 1\n", NULL }, // 15
|
||||
{ "XOR2X1", "2", "1", "01 1\n10 1\n", NULL }, // 16
|
||||
{ "MX2X1", "3", "1", "01- 1\n1-1 1\n", NULL }, // 17
|
||||
{ "OAI21X1", "3", "1", "00- 1\n--0 1\n", NULL }, // 18
|
||||
{ "OAI22X1", "4", "1", "00-- 1\n--00 1\n", NULL }, // 19
|
||||
{ "OAI33X1", "6", "1", "000--- 1\n---000 1\n", NULL }, // 20
|
||||
{ "AOI21X1", "3", "1", "11- 0\n--1 0\n", NULL }, // 21
|
||||
{ "AOI22X1", "4", "1", "11-- 0\n--11 0\n", NULL }, // 22
|
||||
{ "CLKBUFX1", "1", "1", "1 1\n", NULL }, // 23
|
||||
{ "CLKBUFX2", "1", "1", "1 1\n", NULL }, // 24
|
||||
{ "CLKBUFX3", "1", "1", "1 1\n", NULL }, // 25
|
||||
{ "ADDHX1", "2", "2", "11 1\n", "01 1\n10 1\n" }, // 26
|
||||
{ "ADDFX1", "3", "2", "11- 1\n-11 1\n1-1 1\n", "001 1\n010 1\n100 1\n111 1\n" }, // 27
|
||||
{ "DFFSRX1", "1", "1", NULL, NULL }, // 28
|
||||
{ "DFFX1", "1", "1", NULL, NULL }, // 29
|
||||
{ "SDFFSRX1", "1", "1", NULL, NULL }, // 30
|
||||
{ "TLATSRX1", "1", "1", NULL, NULL }, // 31
|
||||
{ "TLATX1", "1", "1", NULL, NULL }, // 32
|
||||
{ "TBUFX1", "1", "1", NULL, NULL }, // 33
|
||||
{ "TBUFX2", "1", "1", NULL, NULL }, // 34
|
||||
{ "TBUFX4", "1", "1", NULL, NULL }, // 35
|
||||
{ "TBUFX8", "1", "1", NULL, NULL }, // 36
|
||||
{ "TINVX1", "1", "1", NULL, NULL } // 37
|
||||
};
|
||||
|
||||
static Io_ReadVer_t * Io_ReadVerFile( char * pFileName );
|
||||
static Abc_Ntk_t * Io_ReadVerNetwork( Io_ReadVer_t * p );
|
||||
static bool Io_ReadVerNetworkAssign( Io_ReadVer_t * p, Abc_Ntk_t * pNtk, Vec_Ptr_t * vTokens );
|
||||
static bool Io_ReadVerNetworkSignal( Io_ReadVer_t * p, Abc_Ntk_t * pNtk, Vec_Ptr_t * vTokens, int LineType );
|
||||
static bool Io_ReadVerNetworkGateSimple( Io_ReadVer_t * p, Abc_Ntk_t * pNtk, Vec_Ptr_t * vTokens, int LineType );
|
||||
static bool Io_ReadVerNetworkGateComplex( Io_ReadVer_t * p, Abc_Ntk_t * pNtk, Vec_Ptr_t * vTokens, int LineType );
|
||||
static bool Io_ReadVerNetworkLatch( Io_ReadVer_t * p, Abc_Ntk_t * pNtk, Vec_Ptr_t * vTokens );
|
||||
static void Io_ReadVerPrintErrorMessage( Io_ReadVer_t * p );
|
||||
static void Io_ReadVerFree( Io_ReadVer_t * p );
|
||||
extern Abc_Lib_t * Ver_ParseFile( char * pFileName, Abc_Lib_t * pGateLib, int fCheck, int fUseMemMan );
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
/// FUNCTION DEFINITIONS ///
|
||||
|
|
@ -124,9 +32,9 @@ static void Io_ReadVerFree( Io_ReadVer_t * p );
|
|||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Reads the network from a Verilog file.]
|
||||
Synopsis [Reads hierarchical design from the Verilog file.]
|
||||
|
||||
Description [Works only for IWLS 2005 benchmarks.]
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
|
|
@ -135,618 +43,30 @@ static void Io_ReadVerFree( Io_ReadVer_t * p );
|
|||
***********************************************************************/
|
||||
Abc_Ntk_t * Io_ReadVerilog( char * pFileName, int fCheck )
|
||||
{
|
||||
Io_ReadVer_t * p;
|
||||
Abc_Ntk_t * pNtk;
|
||||
Abc_Lib_t * pDesign;
|
||||
|
||||
// start the file
|
||||
p = Io_ReadVerFile( pFileName );
|
||||
if ( p == NULL )
|
||||
// parse the verilog file
|
||||
pDesign = Ver_ParseFile( pFileName, NULL, 1, fCheck );
|
||||
if ( pDesign == NULL )
|
||||
return NULL;
|
||||
|
||||
// read the network
|
||||
pNtk = Io_ReadVerNetwork( p );
|
||||
Io_ReadVerFree( p );
|
||||
if ( pNtk == NULL )
|
||||
return NULL;
|
||||
// extract the master network
|
||||
pNtk = Vec_PtrEntryLast( pDesign->vModules );
|
||||
pNtk->pDesign = pDesign;
|
||||
pDesign->pManFunc = NULL;
|
||||
|
||||
// make sure that everything is okay with the network structure
|
||||
if ( fCheck && !Abc_NtkCheckRead( pNtk ) )
|
||||
// verify the design for cyclic dependence
|
||||
assert( Vec_PtrSize(pDesign->vModules) > 0 );
|
||||
if ( Vec_PtrSize(pDesign->vModules) == 1 )
|
||||
{
|
||||
printf( "Io_ReadVerilog: The network check has failed.\n" );
|
||||
Abc_NtkDelete( pNtk );
|
||||
return NULL;
|
||||
}
|
||||
return pNtk;
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Starts the reading data structure.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
Io_ReadVer_t * Io_ReadVerFile( char * pFileName )
|
||||
{
|
||||
Extra_FileReader_t * pReader;
|
||||
Io_ReadVer_t * p;
|
||||
int i;
|
||||
|
||||
// start the reader
|
||||
pReader = Extra_FileReaderAlloc( pFileName, "/", ";", " \t\r\n,()" );
|
||||
if ( pReader == NULL )
|
||||
return NULL;
|
||||
|
||||
// start the reading data structure
|
||||
p = ALLOC( Io_ReadVer_t, 1 );
|
||||
memset( p, 0, sizeof(Io_ReadVer_t) );
|
||||
p->pFileName = pFileName;
|
||||
p->pReader = pReader;
|
||||
p->Output = stdout;
|
||||
p->vSkipped = Vec_PtrAlloc( 100 );
|
||||
|
||||
// insert the keywords and gate names into the hash table
|
||||
p->tKeywords = st_init_table(strcmp, st_strhash);
|
||||
for ( i = 0; i < 10; i++ )
|
||||
if ( s_Keywords[i] )
|
||||
st_insert( p->tKeywords, (char *)s_Keywords[i], (char *)-i );
|
||||
for ( i = 0; i < 40; i++ )
|
||||
if ( s_CadenceGates[i][0] )
|
||||
st_insert( p->tKeywords, (char *)s_CadenceGates[i][0], (char *)i );
|
||||
return p;
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Frees the data structure.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
void Io_ReadVerFree( Io_ReadVer_t * p )
|
||||
{
|
||||
Extra_FileReaderFree( p->pReader );
|
||||
Vec_PtrFree( p->vSkipped );
|
||||
st_free_table( p->tKeywords );
|
||||
FREE( p );
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Prints the error message including the file name and line number.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
void Io_ReadVerPrintErrorMessage( Io_ReadVer_t * p )
|
||||
{
|
||||
if ( p->LineCur == 0 ) // the line number is not given
|
||||
fprintf( p->Output, "%s: %s\n", p->pFileName, p->sError );
|
||||
else // print the error message with the line number
|
||||
fprintf( p->Output, "%s (line %d): %s\n", p->pFileName, p->LineCur, p->sError );
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Reads the verilog file.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
Abc_Ntk_t * Io_ReadVerNetwork( Io_ReadVer_t * p )
|
||||
{
|
||||
char Buffer[1000];
|
||||
ProgressBar * pProgress;
|
||||
Ver_KeywordType_t LineType;
|
||||
Vec_Ptr_t * vTokens;
|
||||
Abc_Ntk_t * pNtk;
|
||||
char * pModelName;
|
||||
int i;
|
||||
|
||||
// read the model name
|
||||
vTokens = Extra_FileReaderGetTokens( p->pReader );
|
||||
if ( vTokens == NULL || strcmp( vTokens->pArray[0], "module" ) )
|
||||
{
|
||||
p->LineCur = 0;
|
||||
sprintf( p->sError, "Wrong input file format." );
|
||||
Io_ReadVerPrintErrorMessage( p );
|
||||
return NULL;
|
||||
}
|
||||
pModelName = vTokens->pArray[1];
|
||||
|
||||
// allocate the empty network
|
||||
pNtk = Abc_NtkAlloc( ABC_NTK_NETLIST, ABC_FUNC_SOP, 1 );
|
||||
pNtk->pName = Extra_UtilStrsav( pModelName );
|
||||
pNtk->pSpec = Extra_UtilStrsav( p->pFileName );
|
||||
|
||||
// create constant nodes and nets
|
||||
Abc_NtkFindOrCreateNet( pNtk, "1'b0" );
|
||||
Abc_NtkFindOrCreateNet( pNtk, "1'b1" );
|
||||
Io_ReadCreateConst( pNtk, "1'b0", 0 );
|
||||
Io_ReadCreateConst( pNtk, "1'b1", 1 );
|
||||
|
||||
// read the inputs/outputs
|
||||
pProgress = Extra_ProgressBarStart( stdout, Extra_FileReaderGetFileSize(p->pReader) );
|
||||
for ( i = 0; vTokens = Extra_FileReaderGetTokens(p->pReader); i++ )
|
||||
{
|
||||
Extra_ProgressBarUpdate( pProgress, Extra_FileReaderGetCurPosition(p->pReader), NULL );
|
||||
|
||||
// get the line type
|
||||
if ( !st_lookup( p->tKeywords, vTokens->pArray[0], (char **)&LineType ) )
|
||||
{
|
||||
p->LineCur = Extra_FileReaderGetLineNumber( p->pReader, 0 );
|
||||
sprintf( p->sError, "The first token \"%s\" cannot be recognized.", vTokens->pArray[0] );
|
||||
Io_ReadVerPrintErrorMessage( p );
|
||||
return NULL;
|
||||
}
|
||||
// consider Verilog directives
|
||||
if ( LineType < 0 )
|
||||
{
|
||||
if ( LineType == VER_ENDMODULE )
|
||||
break;
|
||||
if ( LineType == VER_ASSIGN )
|
||||
{
|
||||
if ( !Io_ReadVerNetworkAssign( p, pNtk, vTokens ) )
|
||||
return NULL;
|
||||
continue;
|
||||
}
|
||||
if ( !Io_ReadVerNetworkSignal( p, pNtk, vTokens, LineType ) )
|
||||
return NULL;
|
||||
continue;
|
||||
}
|
||||
// proces single output gates
|
||||
if ( LineType < 26 )
|
||||
{
|
||||
if ( !Io_ReadVerNetworkGateSimple( p, pNtk, vTokens, LineType ) )
|
||||
return NULL;
|
||||
continue;
|
||||
}
|
||||
// process complex gates
|
||||
if ( LineType < 28 )
|
||||
{
|
||||
if ( !Io_ReadVerNetworkGateComplex( p, pNtk, vTokens, LineType ) )
|
||||
return NULL;
|
||||
continue;
|
||||
|
||||
}
|
||||
// process the latches
|
||||
if ( LineType < 33 )
|
||||
{
|
||||
if ( !Io_ReadVerNetworkLatch( p, pNtk, vTokens ) )
|
||||
return NULL;
|
||||
continue;
|
||||
}
|
||||
// add the tri-state element to the skipped ones
|
||||
sprintf( Buffer, "%s %s", vTokens->pArray[0], vTokens->pArray[1] );
|
||||
Vec_PtrPush( p->vSkipped, Extra_UtilStrsav(Buffer) );
|
||||
}
|
||||
Extra_ProgressBarStop( pProgress );
|
||||
|
||||
if ( p->vSkipped->nSize > 0 )
|
||||
{
|
||||
printf( "IoReadVerilog() skipped %d tri-state elements:\n", p->vSkipped->nSize );
|
||||
for ( i = 0; i < p->vSkipped->nSize; i++ )
|
||||
{
|
||||
if ( i < 2 )
|
||||
printf( "%s,\n", p->vSkipped->pArray[i] );
|
||||
else
|
||||
{
|
||||
printf( "%s, etc.\n", p->vSkipped->pArray[i] );
|
||||
break;
|
||||
}
|
||||
}
|
||||
for ( i = 0; i < p->vSkipped->nSize; i++ )
|
||||
free( p->vSkipped->pArray[i] );
|
||||
}
|
||||
Abc_NtkFinalizeRead( pNtk );
|
||||
return pNtk;
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Reads one assign directive in the verilog file.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
bool Io_ReadVerNetworkAssign( Io_ReadVer_t * p, Abc_Ntk_t * pNtk, Vec_Ptr_t * vTokens )
|
||||
{
|
||||
assert( strcmp( vTokens->pArray[0], "assign" ) == 0 );
|
||||
// make sure the driving variable exists
|
||||
if ( !Abc_NtkFindNet( pNtk, vTokens->pArray[3] ) )
|
||||
{
|
||||
p->LineCur = Extra_FileReaderGetLineNumber( p->pReader, 0 );
|
||||
sprintf( p->sError, "Cannot find net \"%s\". The assign operator is handled only for assignment to a variable and a constant.", vTokens->pArray[3] );
|
||||
Io_ReadVerPrintErrorMessage( p );
|
||||
return 0;
|
||||
}
|
||||
// make sure the driven variable exists
|
||||
if ( !Abc_NtkFindNet( pNtk, vTokens->pArray[1] ) )
|
||||
{
|
||||
p->LineCur = Extra_FileReaderGetLineNumber( p->pReader, 0 );
|
||||
sprintf( p->sError, "Cannot find net \"%s\".", vTokens->pArray[1] );
|
||||
Io_ReadVerPrintErrorMessage( p );
|
||||
return 0;
|
||||
}
|
||||
// create a buffer
|
||||
Io_ReadCreateBuf( pNtk, vTokens->pArray[3], vTokens->pArray[1] );
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Reads one signal the verilog file.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
bool Io_ReadVerNetworkSignal( Io_ReadVer_t * p, Abc_Ntk_t * pNtk, Vec_Ptr_t * vTokens, int LineType )
|
||||
{
|
||||
Abc_Obj_t * pNet;
|
||||
char Buffer[1000];
|
||||
char * pToken;
|
||||
int nSignals, k, Start, s;
|
||||
|
||||
nSignals = 0;
|
||||
pToken = vTokens->pArray[1];
|
||||
if ( pToken[0] == '[' )
|
||||
{
|
||||
nSignals = atoi(pToken + 1) + 1;
|
||||
if ( nSignals < 1 || nSignals > 1024 )
|
||||
{
|
||||
p->LineCur = Extra_FileReaderGetLineNumber( p->pReader, 0 );
|
||||
sprintf( p->sError, "Incorrect number of signals in the expression \"%s\".", pToken );
|
||||
Io_ReadVerPrintErrorMessage( p );
|
||||
return 0;
|
||||
}
|
||||
if ( nSignals == 1 )
|
||||
nSignals = 0;
|
||||
Start = 2;
|
||||
printf( "Warning: The design is not hierarchical.\n" );
|
||||
Abc_LibFree( pDesign, pNtk );
|
||||
pNtk->pDesign = NULL;
|
||||
}
|
||||
else
|
||||
Start = 1;
|
||||
for ( k = Start; k < vTokens->nSize; k++ )
|
||||
{
|
||||
pToken = vTokens->pArray[k];
|
||||
// print the signal name
|
||||
if ( nSignals )
|
||||
{
|
||||
for ( s = 0; s < nSignals; s++ )
|
||||
{
|
||||
sprintf( Buffer, "%s[%d]", pToken, s );
|
||||
if ( LineType == VER_INPUT || LineType == VER_INOUT )
|
||||
Io_ReadCreatePi( pNtk, Buffer );
|
||||
if ( LineType == VER_OUTPUT || LineType == VER_INOUT )
|
||||
Io_ReadCreatePo( pNtk, Buffer );
|
||||
if ( LineType != VER_INPUT && LineType != VER_OUTPUT && LineType != VER_INOUT )
|
||||
pNet = Abc_NtkFindOrCreateNet( pNtk, Buffer );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( LineType == VER_INPUT || LineType == VER_INOUT )
|
||||
Io_ReadCreatePi( pNtk, pToken );
|
||||
if ( LineType == VER_OUTPUT || LineType == VER_INOUT )
|
||||
Io_ReadCreatePo( pNtk, pToken );
|
||||
if ( LineType != VER_INPUT && LineType != VER_OUTPUT && LineType != VER_INOUT )
|
||||
pNet = Abc_NtkFindOrCreateNet( pNtk, pToken );
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Reads a simple gate from the verilog file.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
bool Io_ReadVerNetworkGateSimple( Io_ReadVer_t * p, Abc_Ntk_t * pNtk, Vec_Ptr_t * vTokens, int LineType )
|
||||
{
|
||||
Abc_Obj_t * pNet, * pNode;
|
||||
char * pToken;
|
||||
int nFanins, k;
|
||||
|
||||
// create the node
|
||||
pNode = Abc_NtkCreateNode( pNtk );
|
||||
// add the fanin nets
|
||||
nFanins = s_CadenceGates[LineType][1][0] - '0';
|
||||
// skip the gate type and gate name
|
||||
for ( k = 2; k < vTokens->nSize - 1; k++ )
|
||||
{
|
||||
pToken = vTokens->pArray[k];
|
||||
if ( pToken[0] == '.' )
|
||||
continue;
|
||||
pNet = Abc_NtkFindNet( pNtk, pToken );
|
||||
if ( pNet )
|
||||
{
|
||||
Abc_ObjAddFanin( pNode, pNet );
|
||||
continue;
|
||||
}
|
||||
p->LineCur = Extra_FileReaderGetLineNumber( p->pReader, 0 );
|
||||
sprintf( p->sError, "Cannot find net \"%s\".", pToken );
|
||||
Io_ReadVerPrintErrorMessage( p );
|
||||
return 0;
|
||||
}
|
||||
if ( Abc_ObjFaninNum(pNode) != nFanins )
|
||||
{
|
||||
p->LineCur = Extra_FileReaderGetLineNumber( p->pReader, 0 );
|
||||
sprintf( p->sError, "Gate \"%s\" has a wrong number of inputs.", vTokens->pArray[1] );
|
||||
Io_ReadVerPrintErrorMessage( p );
|
||||
return 0;
|
||||
}
|
||||
|
||||
// add the fanout net
|
||||
pToken = vTokens->pArray[vTokens->nSize - 1];
|
||||
if ( pToken[0] == '.' )
|
||||
{
|
||||
p->LineCur = Extra_FileReaderGetLineNumber( p->pReader, 0 );
|
||||
sprintf( p->sError, "Gate \"%s\" does not have a fanout.", vTokens->pArray[1] );
|
||||
Io_ReadVerPrintErrorMessage( p );
|
||||
return 0;
|
||||
}
|
||||
pNet = Abc_NtkFindNet( pNtk, pToken );
|
||||
if ( pNet == NULL )
|
||||
{
|
||||
p->LineCur = Extra_FileReaderGetLineNumber( p->pReader, 0 );
|
||||
sprintf( p->sError, "Cannot find net \"%s\".", pToken );
|
||||
Io_ReadVerPrintErrorMessage( p );
|
||||
return 0;
|
||||
}
|
||||
Abc_ObjAddFanin( pNet, pNode );
|
||||
// set the function
|
||||
Abc_ObjSetData( pNode, Abc_SopRegister(pNtk->pManFunc, s_CadenceGates[LineType][3]) );
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Reads a complex gate from the verilog file.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
bool Io_ReadVerNetworkGateComplex( Io_ReadVer_t * p, Abc_Ntk_t * pNtk, Vec_Ptr_t * vTokens, int LineType )
|
||||
{
|
||||
Abc_Obj_t * pNode1, * pNode2, * pNet;
|
||||
char * pToken, * pToken1, * pToken2;
|
||||
int nFanins, k;
|
||||
|
||||
// create the nodes
|
||||
pNode1 = Abc_NtkCreateNode( pNtk );
|
||||
pNode2 = Abc_NtkCreateNode( pNtk );
|
||||
// skip the gate type and gate name
|
||||
// add the fanin nets
|
||||
nFanins = s_CadenceGates[LineType][1][0] - '0';
|
||||
for ( k = 2; k < vTokens->nSize; k++ )
|
||||
{
|
||||
pToken = vTokens->pArray[k];
|
||||
if ( pToken[0] == '.' )
|
||||
continue;
|
||||
pNet = Abc_NtkFindNet( pNtk, pToken );
|
||||
if ( pNet == NULL )
|
||||
{
|
||||
p->LineCur = Extra_FileReaderGetLineNumber( p->pReader, 0 );
|
||||
sprintf( p->sError, "Cannot find net \"%s\".", pToken );
|
||||
Io_ReadVerPrintErrorMessage( p );
|
||||
return 0;
|
||||
}
|
||||
Abc_ObjAddFanin( pNode1, pNet );
|
||||
Abc_ObjAddFanin( pNode2, pNet );
|
||||
if ( Abc_ObjFaninNum(pNode1) == nFanins )
|
||||
{
|
||||
k++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// find the tokens corresponding to the output
|
||||
pToken1 = pToken2 = NULL;
|
||||
for ( ; k < vTokens->nSize; k++ )
|
||||
{
|
||||
pToken = vTokens->pArray[k];
|
||||
if ( pToken[0] == '.' )
|
||||
continue;
|
||||
if ( pToken1 == NULL )
|
||||
pToken1 = pToken;
|
||||
else
|
||||
pToken2 = pToken;
|
||||
}
|
||||
// quit if one of the tokens is not given
|
||||
if ( pToken1 == NULL || pToken2 == NULL )
|
||||
{
|
||||
p->LineCur = Extra_FileReaderGetLineNumber( p->pReader, 0 );
|
||||
sprintf( p->sError, "An output of a two-output gate \"%s\" is not specified.", vTokens->pArray[1] );
|
||||
Io_ReadVerPrintErrorMessage( p );
|
||||
return 0;
|
||||
}
|
||||
|
||||
// add the fanout net
|
||||
pNet = Abc_NtkFindNet( pNtk, pToken1 );
|
||||
if ( pNet == NULL )
|
||||
{
|
||||
p->LineCur = Extra_FileReaderGetLineNumber( p->pReader, 0 );
|
||||
sprintf( p->sError, "Cannot find net \"%s\".", pToken1 );
|
||||
Io_ReadVerPrintErrorMessage( p );
|
||||
return 0;
|
||||
}
|
||||
Abc_ObjAddFanin( pNet, pNode1 );
|
||||
|
||||
// add the fanout net
|
||||
pNet = Abc_NtkFindNet( pNtk, pToken2 );
|
||||
if ( pNet == NULL )
|
||||
{
|
||||
p->LineCur = Extra_FileReaderGetLineNumber( p->pReader, 0 );
|
||||
sprintf( p->sError, "Cannot find net \"%s\".", pToken2 );
|
||||
Io_ReadVerPrintErrorMessage( p );
|
||||
return 0;
|
||||
}
|
||||
Abc_ObjAddFanin( pNet, pNode2 );
|
||||
Abc_ObjSetData( pNode1, Abc_SopRegister(pNtk->pManFunc, s_CadenceGates[LineType][3]) );
|
||||
Abc_ObjSetData( pNode2, Abc_SopRegister(pNtk->pManFunc, s_CadenceGates[LineType][4]) );
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Reads a latch from the verilog file.]
|
||||
|
||||
Description [This procedure treats T-latch as if it were D-latch.]
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
bool Io_ReadVerNetworkLatch( Io_ReadVer_t * p, Abc_Ntk_t * pNtk, Vec_Ptr_t * vTokens )
|
||||
{
|
||||
Abc_Obj_t * pLatch, * pNet;
|
||||
char * pLatchName;
|
||||
char * pToken, * pToken2, * pTokenRN, * pTokenSN, * pTokenSI, * pTokenSE, * pTokenD, * pTokenQ, * pTokenQN;
|
||||
int k, fRN1, fSN1;
|
||||
|
||||
// get the latch name
|
||||
pLatchName = vTokens->pArray[1];
|
||||
|
||||
// collect the FF signals
|
||||
pTokenRN = pTokenSN = pTokenSI = pTokenSE = pTokenD = pTokenQ = pTokenQN = NULL;
|
||||
for ( k = 2; k < vTokens->nSize-1; k++ )
|
||||
{
|
||||
pToken = vTokens->pArray[k];
|
||||
pToken2 = vTokens->pArray[k+1];
|
||||
if ( pToken[1] == 'R' && pToken[2] == 'N' && pToken[3] == 0 )
|
||||
pTokenRN = (pToken2[0] == '.')? NULL : pToken2;
|
||||
else if ( pToken[1] == 'S' && pToken[2] == 'N' && pToken[3] == 0 )
|
||||
pTokenSN = (pToken2[0] == '.')? NULL : pToken2;
|
||||
else if ( pToken[1] == 'S' && pToken[2] == 'I' && pToken[3] == 0 )
|
||||
pTokenSI = (pToken2[0] == '.')? NULL : pToken2;
|
||||
else if ( pToken[1] == 'S' && pToken[2] == 'E' && pToken[3] == 0 )
|
||||
pTokenSE = (pToken2[0] == '.')? NULL : pToken2;
|
||||
else if ( pToken[1] == 'D' && pToken[2] == 0 )
|
||||
pTokenD = (pToken2[0] == '.')? NULL : pToken2;
|
||||
else if ( pToken[1] == 'Q' && pToken[2] == 0 )
|
||||
pTokenQ = (pToken2[0] == '.')? NULL : pToken2;
|
||||
else if ( pToken[1] == 'Q' && pToken[2] == 'N' && pToken[3] == 0 )
|
||||
pTokenQN = (pToken2[0] == '.')? NULL : pToken2;
|
||||
else if ( pToken[1] == 'C' && pToken[2] == 'K' && pToken[3] == 0 ) {}
|
||||
else
|
||||
assert( 0 );
|
||||
if ( pToken2[0] != '.' )
|
||||
k++;
|
||||
}
|
||||
|
||||
if ( pTokenD == NULL )
|
||||
{
|
||||
p->LineCur = Extra_FileReaderGetLineNumber( p->pReader, 1 );
|
||||
sprintf( p->sError, "Cannot read pin D of the latch \"%s\".", pLatchName );
|
||||
Io_ReadVerPrintErrorMessage( p );
|
||||
return 0;
|
||||
}
|
||||
if ( pTokenQ == NULL && pTokenQN == NULL )
|
||||
{
|
||||
p->LineCur = Extra_FileReaderGetLineNumber( p->pReader, 1 );
|
||||
sprintf( p->sError, "Cannot read pins Q/QN of the latch \"%s\".", pLatchName );
|
||||
Io_ReadVerPrintErrorMessage( p );
|
||||
return 0;
|
||||
}
|
||||
if ( (pTokenRN == NULL) ^ (pTokenSN == NULL) )
|
||||
{
|
||||
p->LineCur = Extra_FileReaderGetLineNumber( p->pReader, 1 );
|
||||
sprintf( p->sError, "Cannot read pins RN/SN of the latch \"%s\".", pLatchName );
|
||||
Io_ReadVerPrintErrorMessage( p );
|
||||
return 0;
|
||||
}
|
||||
if ( Abc_NtkFindNet( pNtk, pTokenD ) == NULL )
|
||||
{
|
||||
p->LineCur = Extra_FileReaderGetLineNumber( p->pReader, 0 );
|
||||
sprintf( p->sError, "Cannot find latch input net \"%s\".", pTokenD );
|
||||
Io_ReadVerPrintErrorMessage( p );
|
||||
return 0;
|
||||
}
|
||||
|
||||
// create the latch
|
||||
pLatch = Io_ReadCreateLatch( pNtk, pTokenD, pLatchName );
|
||||
|
||||
// create the buffer if Q signal is available
|
||||
if ( pTokenQ )
|
||||
{
|
||||
pNet = Abc_NtkFindNet( pNtk, pTokenQ );
|
||||
if ( pNet == NULL )
|
||||
{
|
||||
p->LineCur = Extra_FileReaderGetLineNumber( p->pReader, 0 );
|
||||
sprintf( p->sError, "Cannot find latch output net \"%s\".", pTokenQ );
|
||||
Io_ReadVerPrintErrorMessage( p );
|
||||
return 0;
|
||||
}
|
||||
Io_ReadCreateBuf( pNtk, pLatchName, pTokenQ );
|
||||
}
|
||||
if ( pTokenQN )
|
||||
{
|
||||
pNet = Abc_NtkFindNet( pNtk, pTokenQN );
|
||||
if ( pNet == NULL )
|
||||
{
|
||||
p->LineCur = Extra_FileReaderGetLineNumber( p->pReader, 0 );
|
||||
sprintf( p->sError, "Cannot find latch output net \"%s\".", pTokenQN );
|
||||
Io_ReadVerPrintErrorMessage( p );
|
||||
return 0;
|
||||
}
|
||||
Io_ReadCreateInv( pNtk, pLatchName, pTokenQN );
|
||||
}
|
||||
|
||||
// set the initial value
|
||||
if ( pTokenRN == NULL && pTokenSN == NULL )
|
||||
Abc_LatchSetInitDc( pLatch );
|
||||
else
|
||||
{
|
||||
fRN1 = (strcmp( pTokenRN, "1'b1" ) == 0);
|
||||
fSN1 = (strcmp( pTokenSN, "1'b1" ) == 0);
|
||||
if ( fRN1 && fSN1 )
|
||||
Abc_LatchSetInitDc( pLatch );
|
||||
else if ( fRN1 )
|
||||
Abc_LatchSetInit1( pLatch );
|
||||
else if ( fSN1 )
|
||||
Abc_LatchSetInit0( pLatch );
|
||||
else
|
||||
{
|
||||
p->LineCur = Extra_FileReaderGetLineNumber( p->pReader, 0 );
|
||||
sprintf( p->sError, "Cannot read the initial value of latch \"%s\".", pLatchName );
|
||||
Io_ReadVerPrintErrorMessage( p );
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
Abc_NtkIsAcyclicHierarchy( pNtk );
|
||||
return pNtk;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -132,6 +132,8 @@ Abc_Ntk_t * Io_ReadNetlist( char * pFileName, Io_FileType_t FileType, int fCheck
|
|||
pNtk = Io_ReadEqn( pFileName, fCheck );
|
||||
else if ( FileType == IO_FILE_PLA )
|
||||
pNtk = Io_ReadPla( pFileName, fCheck );
|
||||
else if ( FileType == IO_FILE_VERILOG )
|
||||
pNtk = Io_ReadVerilog( pFileName, fCheck );
|
||||
else
|
||||
{
|
||||
fprintf( stderr, "Unknown file format.\n" );
|
||||
|
|
@ -142,6 +144,12 @@ Abc_Ntk_t * Io_ReadNetlist( char * pFileName, Io_FileType_t FileType, int fCheck
|
|||
fprintf( stdout, "Reading network from file has failed.\n" );
|
||||
return NULL;
|
||||
}
|
||||
if ( Abc_NtkBlackboxNum(pNtk) || Abc_NtkBlackboxNum(pNtk) )
|
||||
{
|
||||
fprintf( stdout, "The network contains hierarchy. Use \"read_hie\".\n" );
|
||||
Abc_NtkDelete( pNtk );
|
||||
return NULL;
|
||||
}
|
||||
return pNtk;
|
||||
}
|
||||
|
||||
|
|
@ -197,6 +205,8 @@ Abc_Ntk_t * Io_ReadHie( char * pFileName, Io_FileType_t FileType, int fCheck )
|
|||
pNtk = Io_ReadBlifMv( pFileName, 0, fCheck );
|
||||
// else if ( Io_ReadFileType(pFileName) == IO_FILE_BLIFMV )
|
||||
// pNtk = Io_ReadBlifMv( pFileName, 1, fCheck );
|
||||
else if ( Io_ReadFileType(pFileName) == IO_FILE_VERILOG )
|
||||
pNtk = Io_ReadVerilog( pFileName, fCheck );
|
||||
else
|
||||
{
|
||||
printf( "Wrong file type.\n" );
|
||||
|
|
@ -220,7 +230,7 @@ Abc_Ntk_t * Io_ReadHie( char * pFileName, Io_FileType_t FileType, int fCheck )
|
|||
// convert blackboxes
|
||||
if ( Abc_NtkBlackboxNum(pNtk) > 0 )
|
||||
{
|
||||
printf( "Hierarchical parser is converting %d blackboxes.\n", Abc_NtkBlackboxNum(pNtk) );
|
||||
printf( "Hierarchical parser converted %d blackboxes.\n", Abc_NtkBlackboxNum(pNtk) );
|
||||
pNtk = Abc_NtkConvertBlackboxes( pTemp = pNtk );
|
||||
Abc_NtkDelete( pTemp );
|
||||
if ( pNtk == NULL )
|
||||
|
|
@ -347,7 +357,7 @@ void Io_Write( Abc_Ntk_t * pNtk, char * pFileName, Io_FileType_t FileType )
|
|||
{
|
||||
if ( Abc_NtkIsSopNetlist(pNtkTemp) )
|
||||
Abc_NtkSopToAig( pNtkTemp );
|
||||
Io_WriteVerilog( pNtkTemp, pFileName, 1 );
|
||||
Io_WriteVerilog( pNtkTemp, pFileName );
|
||||
}
|
||||
else
|
||||
fprintf( stderr, "Unknown file format.\n" );
|
||||
|
|
@ -365,50 +375,64 @@ void Io_Write( Abc_Ntk_t * pNtk, char * pFileName, Io_FileType_t FileType )
|
|||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
void Io_WriteHie( Abc_Ntk_t * pNtk, char * pFileName, Io_FileType_t FileType, char * pBaseName )
|
||||
void Io_WriteHie( Abc_Ntk_t * pNtk, char * pBaseName, char * pFileName )
|
||||
{
|
||||
Abc_Ntk_t * pNtkTemp, * pNtkBase, * pNtkResult;
|
||||
Abc_Ntk_t * pNtkTemp, * pNtkResult, * pNtkBase = NULL;
|
||||
// check if the current network is available
|
||||
if ( pNtk == NULL )
|
||||
{
|
||||
fprintf( stdout, "Empty network.\n" );
|
||||
return;
|
||||
}
|
||||
// check if the file extension if given
|
||||
if ( FileType == IO_FILE_NONE || FileType == IO_FILE_UNKNOWN )
|
||||
{
|
||||
fprintf( stdout, "The generic file writer requires a known file extension.\n" );
|
||||
return;
|
||||
}
|
||||
// write the AIG formats
|
||||
if ( FileType == IO_FILE_BLIF )
|
||||
{
|
||||
|
||||
// read the base network
|
||||
assert( Abc_NtkIsStrash(pNtk) || Abc_NtkIsLogic(pNtk) );
|
||||
if ( Io_ReadFileType(pBaseName) == IO_FILE_BLIF )
|
||||
pNtkBase = Io_ReadBlifMv( pBaseName, 0, 1 );
|
||||
if ( Abc_NtkWhiteboxNum(pNtk) > 0 )
|
||||
{
|
||||
pNtkBase = Abc_NtkFlattenLogicHierarchy( pNtkTemp = pNtkBase );
|
||||
Abc_NtkDelete( pNtkTemp );
|
||||
}
|
||||
if ( Abc_NtkBlackboxNum(pNtk) > 0 )
|
||||
{
|
||||
pNtkResult = Abc_NtkLogicToNetlist( pNtk, 0 );
|
||||
pNtkResult = Abc_NtkInsertNewLogic( pNtkBase, pNtkTemp = pNtkResult );
|
||||
Abc_NtkDelete( pNtkTemp );
|
||||
printf( "Hierarchy writer reintroduced %d blackboxes.\n", Abc_NtkBlackboxNum(pNtk) );
|
||||
}
|
||||
else
|
||||
{
|
||||
printf( "Warning: The output network does not contain blackboxes.\n" );
|
||||
pNtkResult = Abc_NtkLogicToNetlist( pNtk, 0 );
|
||||
}
|
||||
Abc_NtkDelete( pNtkBase );
|
||||
if ( pNtkResult == NULL )
|
||||
else
|
||||
fprintf( stderr, "Unknown input file format.\n" );
|
||||
if ( pNtkBase == NULL )
|
||||
return;
|
||||
|
||||
if ( Abc_NtkWhiteboxNum(pNtkBase) > 0 )
|
||||
{
|
||||
pNtkBase = Abc_NtkFlattenLogicHierarchy( pNtkTemp = pNtkBase );
|
||||
if ( pNtkBase == NULL )
|
||||
return;
|
||||
Io_WriteBlif( pNtkResult, pFileName, 0 );
|
||||
Abc_NtkDelete( pNtkResult );
|
||||
Abc_NtkDelete( pNtkTemp );
|
||||
}
|
||||
|
||||
// reintroduce the boxes into the netlist
|
||||
if ( Abc_NtkBlackboxNum(pNtkBase) > 0 )
|
||||
{
|
||||
pNtkResult = Abc_NtkLogicToNetlist( pNtk, 0 );
|
||||
pNtkResult = Abc_NtkInsertNewLogic( pNtkBase, pNtkTemp = pNtkResult );
|
||||
Abc_NtkDelete( pNtkTemp );
|
||||
if ( pNtkResult )
|
||||
printf( "Hierarchy writer reintroduced %d blackboxes.\n", Abc_NtkBlackboxNum(pNtkBase) );
|
||||
}
|
||||
else
|
||||
{
|
||||
printf( "Warning: The output network does not contain blackboxes.\n" );
|
||||
pNtkResult = Abc_NtkLogicToNetlist( pNtk, 0 );
|
||||
}
|
||||
Abc_NtkDelete( pNtkBase );
|
||||
if ( pNtkResult == NULL )
|
||||
return;
|
||||
|
||||
// write the resulting network
|
||||
if ( Io_ReadFileType(pFileName) == IO_FILE_BLIF )
|
||||
Io_WriteBlif( pNtkResult, pFileName, 1 );
|
||||
else if ( Io_ReadFileType(pFileName) == IO_FILE_VERILOG )
|
||||
{
|
||||
if ( Abc_NtkIsSopNetlist(pNtkResult) )
|
||||
Abc_NtkSopToAig( pNtkResult );
|
||||
Io_WriteVerilog( pNtkResult, pFileName );
|
||||
}
|
||||
else
|
||||
fprintf( stderr, "Unknown file format.\n" );
|
||||
fprintf( stderr, "Unknown output file format.\n" );
|
||||
|
||||
Abc_NtkDelete( pNtkResult );
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
|
|
|||
|
|
@ -102,6 +102,7 @@ void Io_WriteBlif( Abc_Ntk_t * pNtk, char * FileName, int fWriteLatches )
|
|||
{
|
||||
pNtkTemp = pObj->pData;
|
||||
assert( pNtkTemp != NULL && Abc_NtkHasBlackbox(pNtkTemp) );
|
||||
fprintf( pFile, "\n\n", Abc_NtkName(pNtk) );
|
||||
Io_NtkWrite( pFile, pNtkTemp, fWriteLatches );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,444 +0,0 @@
|
|||
/**CFile****************************************************************
|
||||
|
||||
FileName [ioWriteVerilog.c]
|
||||
|
||||
SystemName [ABC: Logic synthesis and verification system.]
|
||||
|
||||
PackageName [Command processing package.]
|
||||
|
||||
Synopsis [Procedures to output a special subset of Verilog.]
|
||||
|
||||
Author [Alan Mishchenko]
|
||||
|
||||
Affiliation [UC Berkeley]
|
||||
|
||||
Date [Ver. 1.0. Started - June 20, 2005.]
|
||||
|
||||
Revision [$Id: ioWriteVerilog.c,v 1.00 2005/06/20 00:00:00 alanmi Exp $]
|
||||
|
||||
***********************************************************************/
|
||||
|
||||
#include "io.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
/// DECLARATIONS ///
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static void Io_WriteVerilogAuxInt( FILE * pFile, Abc_Ntk_t * pNtk );
|
||||
static void Io_WriteVerilogAuxPis( FILE * pFile, Abc_Ntk_t * pNtk, int Start );
|
||||
static void Io_WriteVerilogAuxPos( FILE * pFile, Abc_Ntk_t * pNtk, int Start );
|
||||
static void Io_WriteVerilogAuxWires( FILE * pFile, Abc_Ntk_t * pNtk, int Start );
|
||||
static void Io_WriteVerilogAuxNodes( FILE * pFile, Abc_Ntk_t * pNtk );
|
||||
static void Io_WriteVerilogAuxArgs( FILE * pFile, Abc_Obj_t * pObj, int nInMax, int fPadZeros );
|
||||
static int Io_WriteVerilogAuxCheckNtk( Abc_Ntk_t * pNtk );
|
||||
static char * Io_WriteVerilogAuxGetName( Abc_Obj_t * pObj );
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
/// FUNCTION DEFINITIONS ///
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Write verilog.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
void Io_WriteVerilogAux( Abc_Ntk_t * pNtk, char * pFileName )
|
||||
{
|
||||
FILE * pFile;
|
||||
|
||||
if ( !Abc_NtkIsSopNetlist(pNtk) || !Io_WriteVerilogAuxCheckNtk(pNtk) )
|
||||
{
|
||||
printf( "Io_WriteVerilogAux(): Can write Verilog for a very special subset of logic networks.\n" );
|
||||
printf( "The current network is not in the subset; writing Verilog is not performed.\n" );
|
||||
return;
|
||||
}
|
||||
|
||||
if ( Abc_NtkLatchNum(pNtk) > 0 )
|
||||
printf( "Io_WriteVerilogAux(): Warning: only combinational portion is being written.\n" );
|
||||
|
||||
// start the output stream
|
||||
pFile = fopen( pFileName, "w" );
|
||||
if ( pFile == NULL )
|
||||
{
|
||||
fprintf( stdout, "Io_WriteVerilogAux(): Cannot open the output file \"%s\".\n", pFileName );
|
||||
return;
|
||||
}
|
||||
|
||||
// write the equations for the network
|
||||
Io_WriteVerilogAuxInt( pFile, pNtk );
|
||||
fprintf( pFile, "\n" );
|
||||
fclose( pFile );
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Writes verilog.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
void Io_WriteVerilogAuxInt( FILE * pFile, Abc_Ntk_t * pNtk )
|
||||
{
|
||||
// write inputs and outputs
|
||||
fprintf( pFile, "// Benchmark \"%s\" written by ABC on %s\n", pNtk->pName, Extra_TimeStamp() );
|
||||
fprintf( pFile, "module %s (\n ", Abc_NtkName(pNtk) );
|
||||
Io_WriteVerilogAuxPis( pFile, pNtk, 3 );
|
||||
fprintf( pFile, ",\n " );
|
||||
Io_WriteVerilogAuxPos( pFile, pNtk, 3 );
|
||||
fprintf( pFile, " );\n" );
|
||||
// write inputs, outputs and wires
|
||||
fprintf( pFile, " input" );
|
||||
Io_WriteVerilogAuxPis( pFile, pNtk, 5 );
|
||||
fprintf( pFile, ";\n" );
|
||||
fprintf( pFile, " output" );
|
||||
Io_WriteVerilogAuxPos( pFile, pNtk, 5 );
|
||||
fprintf( pFile, ";\n" );
|
||||
fprintf( pFile, " wire" );
|
||||
Io_WriteVerilogAuxWires( pFile, pNtk, 4 );
|
||||
fprintf( pFile, ";\n" );
|
||||
// write the nodes
|
||||
Io_WriteVerilogAuxNodes( pFile, pNtk );
|
||||
// finalize the file
|
||||
fprintf( pFile, "endmodule\n\n" );
|
||||
fclose( pFile );
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Writes the primary inputs.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
void Io_WriteVerilogAuxPis( FILE * pFile, Abc_Ntk_t * pNtk, int Start )
|
||||
{
|
||||
Abc_Obj_t * pTerm, * pNet;
|
||||
int LineLength;
|
||||
int AddedLength;
|
||||
int NameCounter;
|
||||
int i;
|
||||
|
||||
LineLength = Start;
|
||||
NameCounter = 0;
|
||||
Abc_NtkForEachCi( pNtk, pTerm, i )
|
||||
{
|
||||
pNet = Abc_ObjFanout0(pTerm);
|
||||
// get the line length after this name is written
|
||||
AddedLength = strlen(Abc_ObjName(pNet)) + 2;
|
||||
if ( NameCounter && LineLength + AddedLength + 3 > IO_WRITE_LINE_LENGTH )
|
||||
{ // write the line extender
|
||||
fprintf( pFile, "\n " );
|
||||
// reset the line length
|
||||
LineLength = 3;
|
||||
NameCounter = 0;
|
||||
}
|
||||
fprintf( pFile, " %s%s", Abc_ObjName(pNet), (i==Abc_NtkCiNum(pNtk)-1)? "" : "," );
|
||||
LineLength += AddedLength;
|
||||
NameCounter++;
|
||||
}
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Writes the primary outputs.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
void Io_WriteVerilogAuxPos( FILE * pFile, Abc_Ntk_t * pNtk, int Start )
|
||||
{
|
||||
Abc_Obj_t * pTerm, * pNet;
|
||||
int LineLength;
|
||||
int AddedLength;
|
||||
int NameCounter;
|
||||
int i;
|
||||
|
||||
LineLength = Start;
|
||||
NameCounter = 0;
|
||||
Abc_NtkForEachCo( pNtk, pTerm, i )
|
||||
{
|
||||
pNet = Abc_ObjFanin0(pTerm);
|
||||
// get the line length after this name is written
|
||||
AddedLength = strlen(Abc_ObjName(pNet)) + 2;
|
||||
if ( NameCounter && LineLength + AddedLength + 3 > IO_WRITE_LINE_LENGTH )
|
||||
{ // write the line extender
|
||||
fprintf( pFile, "\n " );
|
||||
// reset the line length
|
||||
LineLength = 3;
|
||||
NameCounter = 0;
|
||||
}
|
||||
fprintf( pFile, " %s%s", Abc_ObjName(pNet), (i==Abc_NtkCoNum(pNtk)-1)? "" : "," );
|
||||
LineLength += AddedLength;
|
||||
NameCounter++;
|
||||
}
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Writes the wires.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
void Io_WriteVerilogAuxWires( FILE * pFile, Abc_Ntk_t * pNtk, int Start )
|
||||
{
|
||||
Abc_Obj_t * pTerm, * pNet;
|
||||
int LineLength;
|
||||
int AddedLength;
|
||||
int NameCounter;
|
||||
int i, Counter, nNodes;
|
||||
|
||||
// count the number of wires
|
||||
nNodes = 0;
|
||||
Abc_NtkForEachNode( pNtk, pTerm, i )
|
||||
{
|
||||
if ( i == 0 )
|
||||
continue;
|
||||
pNet = Abc_ObjFanout0(pTerm);
|
||||
if ( Abc_ObjIsCo(Abc_ObjFanout0(pNet)) )
|
||||
continue;
|
||||
nNodes++;
|
||||
}
|
||||
|
||||
// write the wires
|
||||
Counter = 0;
|
||||
LineLength = Start;
|
||||
NameCounter = 0;
|
||||
Abc_NtkForEachNode( pNtk, pTerm, i )
|
||||
{
|
||||
if ( i == 0 )
|
||||
continue;
|
||||
pNet = Abc_ObjFanout0(pTerm);
|
||||
if ( Abc_ObjIsCo(Abc_ObjFanout0(pNet)) )
|
||||
continue;
|
||||
Counter++;
|
||||
// get the line length after this name is written
|
||||
AddedLength = strlen(Abc_ObjName(pNet)) + 2;
|
||||
if ( NameCounter && LineLength + AddedLength + 3 > IO_WRITE_LINE_LENGTH )
|
||||
{ // write the line extender
|
||||
fprintf( pFile, "\n " );
|
||||
// reset the line length
|
||||
LineLength = 3;
|
||||
NameCounter = 0;
|
||||
}
|
||||
fprintf( pFile, " %s%s", Io_WriteVerilogAuxGetName(pNet), (Counter==nNodes)? "" : "," );
|
||||
LineLength += AddedLength;
|
||||
NameCounter++;
|
||||
}
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Writes the wires.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
void Io_WriteVerilogAuxNodes( FILE * pFile, Abc_Ntk_t * pNtk )
|
||||
{
|
||||
Abc_Obj_t * pObj;
|
||||
int i, nCubes, nFanins, Counter, nDigits, fPadZeros;
|
||||
char * pName;
|
||||
|
||||
nDigits = Extra_Base10Log( Abc_NtkNodeNum(pNtk) );
|
||||
Counter = 1;
|
||||
Abc_NtkForEachNode( pNtk, pObj, i )
|
||||
{
|
||||
nFanins = Abc_ObjFaninNum(pObj);
|
||||
nCubes = Abc_SopGetCubeNum(pObj->pData);
|
||||
if ( Abc_SopIsAndType(pObj->pData) )
|
||||
pName = "ts_and", fPadZeros = 1;
|
||||
else if ( Abc_SopIsExorType(pObj->pData) )
|
||||
pName = "ts_xor", fPadZeros = 1;
|
||||
else // if ( Abc_SopIsOrType(pObj->pData) )
|
||||
pName = "ts_or", fPadZeros = 0;
|
||||
|
||||
assert( nCubes < 2 );
|
||||
if ( nCubes == 0 )
|
||||
{
|
||||
fprintf( pFile, " ts_gnd g%0*d ", nDigits, Counter++ );
|
||||
Io_WriteVerilogAuxArgs( pFile, pObj, 0, fPadZeros );
|
||||
}
|
||||
else if ( nCubes == 1 && nFanins == 0 )
|
||||
{
|
||||
fprintf( pFile, " ts_vdd g%0*d ", nDigits, Counter++ );
|
||||
Io_WriteVerilogAuxArgs( pFile, pObj, 0, fPadZeros );
|
||||
}
|
||||
else if ( nFanins == 1 && Abc_SopIsInv(pObj->pData) )
|
||||
{
|
||||
fprintf( pFile, " ts_inv g%0*d ", nDigits, Counter++ );
|
||||
Io_WriteVerilogAuxArgs( pFile, pObj, 1, fPadZeros );
|
||||
}
|
||||
else if ( nFanins == 1 )
|
||||
{
|
||||
fprintf( pFile, " ts_buf g%0*d ", nDigits, Counter++ );
|
||||
Io_WriteVerilogAuxArgs( pFile, pObj, 1, fPadZeros );
|
||||
}
|
||||
else if ( nFanins <= 4 )
|
||||
{
|
||||
fprintf( pFile, " %s%d g%0*d ", pName, 4, nDigits, Counter++ );
|
||||
Io_WriteVerilogAuxArgs( pFile, pObj, 4, fPadZeros );
|
||||
}
|
||||
else if ( nFanins <= 6 )
|
||||
{
|
||||
fprintf( pFile, " %s%d g%0*d ", pName, 6, nDigits, Counter++ );
|
||||
Io_WriteVerilogAuxArgs( pFile, pObj, 6, fPadZeros );
|
||||
}
|
||||
else if ( nFanins == 7 )
|
||||
{
|
||||
fprintf( pFile, " %s%d g%0*d ", pName, 7, nDigits, Counter++ );
|
||||
Io_WriteVerilogAuxArgs( pFile, pObj, 7, fPadZeros );
|
||||
}
|
||||
else if ( nFanins == 8 )
|
||||
{
|
||||
fprintf( pFile, " %s%d g%0*d ", pName, 8, nDigits, Counter++ );
|
||||
Io_WriteVerilogAuxArgs( pFile, pObj, 8, fPadZeros );
|
||||
}
|
||||
else if ( nFanins <= 16 )
|
||||
{
|
||||
fprintf( pFile, " %s%d g%0*d ", pName, 16, nDigits, Counter++ );
|
||||
Io_WriteVerilogAuxArgs( pFile, pObj, 16, fPadZeros );
|
||||
}
|
||||
else if ( nFanins <= 32 )
|
||||
{
|
||||
fprintf( pFile, " %s%d g%0*d ", pName, 32, nDigits, Counter++ );
|
||||
Io_WriteVerilogAuxArgs( pFile, pObj, 32, fPadZeros );
|
||||
}
|
||||
else if ( nFanins <= 64 )
|
||||
{
|
||||
fprintf( pFile, " %s%d g%0*d ", pName, 64, nDigits, Counter++ );
|
||||
Io_WriteVerilogAuxArgs( pFile, pObj, 64, fPadZeros );
|
||||
}
|
||||
else if ( nFanins <= 128 )
|
||||
{
|
||||
fprintf( pFile, " %s%d g%0*d ", pName, 128, nDigits, Counter++ );
|
||||
Io_WriteVerilogAuxArgs( pFile, pObj, 128, fPadZeros );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Writes the inputs.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
void Io_WriteVerilogAuxArgs( FILE * pFile, Abc_Obj_t * pObj, int nInMax, int fPadZeros )
|
||||
{
|
||||
Abc_Obj_t * pFanin;
|
||||
int i, Counter = 2;
|
||||
fprintf( pFile, "(.z (%s)", Io_WriteVerilogAuxGetName(Abc_ObjFanout0(pObj)) );
|
||||
Abc_ObjForEachFanin( pObj, pFanin, i )
|
||||
{
|
||||
if ( Counter++ % 4 == 0 )
|
||||
fprintf( pFile, "\n " );
|
||||
fprintf( pFile, " .i%d (%s)", i+1, Io_WriteVerilogAuxGetName(Abc_ObjFanin(pObj,i)) );
|
||||
}
|
||||
for ( ; i < nInMax; i++ )
|
||||
{
|
||||
if ( Counter++ % 4 == 0 )
|
||||
fprintf( pFile, "\n " );
|
||||
fprintf( pFile, " .i%d (%s)", i+1, fPadZeros? "1\'b0" : "1\'b1" );
|
||||
}
|
||||
fprintf( pFile, ");\n" );
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis []
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
int Io_WriteVerilogAuxCheckNtk( Abc_Ntk_t * pNtk )
|
||||
{
|
||||
Abc_Obj_t * pObj;
|
||||
char * pSop;
|
||||
int i, k, nFanins;
|
||||
Abc_NtkForEachNode( pNtk, pObj, i )
|
||||
{
|
||||
if ( Abc_SopGetCubeNum(pObj->pData) > 1 )
|
||||
{
|
||||
printf( "Node %s contains a cover with more than one cube.\n", Abc_ObjName(pObj) );
|
||||
return 0;
|
||||
}
|
||||
nFanins = Abc_ObjFaninNum(pObj);
|
||||
if ( nFanins < 2 )
|
||||
continue;
|
||||
pSop = pObj->pData;
|
||||
for ( k = 0; k < nFanins; k++ )
|
||||
if ( pSop[k] != '1' )
|
||||
{
|
||||
printf( "Node %s contains a cover with non-positive literals.\n", Abc_ObjName(pObj) );
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Prepares the name for writing the Verilog file.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
char * Io_WriteVerilogAuxGetName( Abc_Obj_t * pObj )
|
||||
{
|
||||
static char Buffer[20];
|
||||
char * pName;
|
||||
pName = Abc_ObjName(pObj);
|
||||
if ( pName[0] != '[' )
|
||||
return pName;
|
||||
// replace opening bracket by the escape sign and closing bracket by space
|
||||
// as a result of this transformation, the length of the name does not change
|
||||
strcpy( Buffer, pName );
|
||||
Buffer[0] = '\\';
|
||||
Buffer[strlen(Buffer)-1] = ' ';
|
||||
return Buffer;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
/// END OF FILE ///
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
|
@ -26,18 +26,15 @@
|
|||
/// DECLARATIONS ///
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static void Io_WriteVerilogInt( FILE * pFile, Abc_Ntk_t * pNtk, int fVerLibStyle );
|
||||
static void Io_WriteVerilogInt( FILE * pFile, Abc_Ntk_t * pNtk );
|
||||
static void Io_WriteVerilogPis( FILE * pFile, Abc_Ntk_t * pNtk, int Start );
|
||||
static void Io_WriteVerilogPos( FILE * pFile, Abc_Ntk_t * pNtk, int Start );
|
||||
static void Io_WriteVerilogWires( FILE * pFile, Abc_Ntk_t * pNtk, int Start );
|
||||
static void Io_WriteVerilogRegs( FILE * pFile, Abc_Ntk_t * pNtk, int Start );
|
||||
static void Io_WriteVerilogGates( FILE * pFile, Abc_Ntk_t * pNtk );
|
||||
static void Io_WriteVerilogNodes( FILE * pFile, Abc_Ntk_t * pNtk );
|
||||
static void Io_WriteVerilogLatches( FILE * pFile, Abc_Ntk_t * pNtk );
|
||||
static void Io_WriteVerilogVerLibStyle( FILE * pFile, Abc_Ntk_t * pNtk );
|
||||
static int Io_WriteVerilogCheckNtk( Abc_Ntk_t * pNtk );
|
||||
static void Io_WriteVerilogObjects( FILE * pFile, Abc_Ntk_t * pNtk );
|
||||
static int Io_WriteVerilogWiresCount( Abc_Ntk_t * pNtk );
|
||||
static char * Io_WriteVerilogGetName( Abc_Obj_t * pObj );
|
||||
static int Io_WriteVerilogWiresCount( Abc_Ntk_t * pNtk );
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
/// FUNCTION DEFINITIONS ///
|
||||
|
|
@ -54,29 +51,17 @@ static int Io_WriteVerilogWiresCount( Abc_Ntk_t * pNtk );
|
|||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
void Io_WriteVerilog( Abc_Ntk_t * pNtk, char * pFileName, int fVerLibStyle )
|
||||
void Io_WriteVerilog( Abc_Ntk_t * pNtk, char * pFileName )
|
||||
{
|
||||
Abc_Ntk_t * pNetlist;
|
||||
FILE * pFile;
|
||||
int i;
|
||||
// can only write nodes represented using local AIGs
|
||||
if ( !Abc_NtkIsAigNetlist(pNtk) )
|
||||
{
|
||||
printf( "Io_WriteVerilog(): Can produce Verilog for AIG netlists only.\n" );
|
||||
return;
|
||||
}
|
||||
if ( Abc_NtkLatchNum(pNtk) > 0 )
|
||||
{
|
||||
printf( "Io_WriteVerilog(): Currently cannot write verilog for sequential networks.\n" );
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
if ( !(Abc_NtkIsNetlist(pNtk) && (Abc_NtkHasMapping(pNtk) || Io_WriteVerilogCheckNtk(pNtk))) )
|
||||
{
|
||||
printf( "Io_WriteVerilog(): Can produce Verilog for a subset of logic networks.\n" );
|
||||
printf( "The network should be either an AIG or a network after technology mapping.\n" );
|
||||
printf( "The current network is not in the subset; the output files is not written.\n" );
|
||||
return;
|
||||
}
|
||||
*/
|
||||
// start the output stream
|
||||
pFile = fopen( pFileName, "w" );
|
||||
if ( pFile == NULL )
|
||||
|
|
@ -87,52 +72,28 @@ void Io_WriteVerilog( Abc_Ntk_t * pNtk, char * pFileName, int fVerLibStyle )
|
|||
|
||||
// write the equations for the network
|
||||
fprintf( pFile, "// Benchmark \"%s\" written by ABC on %s\n", pNtk->pName, Extra_TimeStamp() );
|
||||
Io_WriteVerilogInt( pFile, pNtk, fVerLibStyle );
|
||||
fprintf( pFile, "\n" );
|
||||
fclose( pFile );
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Write verilog.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
void Io_WriteVerilogLibrary( Abc_Lib_t * pLibrary, char * pFileName )
|
||||
{
|
||||
FILE * pFile;
|
||||
Abc_Ntk_t * pNtk, * pNetlist;
|
||||
int i;
|
||||
|
||||
// start the output stream
|
||||
pFile = fopen( pFileName, "w" );
|
||||
if ( pFile == NULL )
|
||||
{
|
||||
fprintf( stdout, "Io_WriteVerilogLibrary(): Cannot open the output file \"%s\".\n", pFileName );
|
||||
return;
|
||||
}
|
||||
|
||||
fprintf( pFile, "// Verilog library \"%s\" written by ABC on %s\n", pFileName, Extra_TimeStamp() );
|
||||
fprintf( pFile, "\n" );
|
||||
// write modules
|
||||
Vec_PtrForEachEntry( pLibrary->vModules, pNtk, i )
|
||||
if ( pNtk->pDesign )
|
||||
{
|
||||
// create netlist
|
||||
// pNetlist = Abc_NtkLogicToNetlist( pNtk, 0 );
|
||||
assert( Abc_NtkIsNetlist(pNtk) );
|
||||
pNetlist = pNtk;
|
||||
// write the equations for the network
|
||||
Io_WriteVerilogInt( pFile, pNetlist, 1 );
|
||||
fprintf( pFile, "\n" );
|
||||
// delete the netlist
|
||||
// Abc_NtkDelete( pNetlist );
|
||||
Vec_PtrForEachEntry( pNtk->pDesign->vModules, pNetlist, i )
|
||||
{
|
||||
assert( Abc_NtkIsNetlist(pNetlist) );
|
||||
if ( pNetlist == pNtk )
|
||||
continue;
|
||||
Io_WriteVerilogInt( pFile, pNetlist );
|
||||
fprintf( pFile, "\n" );
|
||||
}
|
||||
// write the network last
|
||||
Io_WriteVerilogInt( pFile, pNtk );
|
||||
}
|
||||
else
|
||||
{
|
||||
Io_WriteVerilogInt( pFile, pNtk );
|
||||
}
|
||||
|
||||
fprintf( pFile, "\n" );
|
||||
fclose( pFile );
|
||||
}
|
||||
|
||||
|
|
@ -147,44 +108,54 @@ void Io_WriteVerilogLibrary( Abc_Lib_t * pLibrary, char * pFileName )
|
|||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
void Io_WriteVerilogInt( FILE * pFile, Abc_Ntk_t * pNtk, int fVerLibStyle )
|
||||
void Io_WriteVerilogInt( FILE * pFile, Abc_Ntk_t * pNtk )
|
||||
{
|
||||
// write inputs and outputs
|
||||
// fprintf( pFile, "module %s ( gclk,\n ", Abc_NtkName(pNtk) );
|
||||
fprintf( pFile, "module %s ( \n ", Abc_NtkName(pNtk) );
|
||||
Io_WriteVerilogPis( pFile, pNtk, 3 );
|
||||
fprintf( pFile, ",\n " );
|
||||
Io_WriteVerilogPos( pFile, pNtk, 3 );
|
||||
if ( Abc_NtkPiNum(pNtk) > 0 )
|
||||
{
|
||||
Io_WriteVerilogPis( pFile, pNtk, 3 );
|
||||
fprintf( pFile, ",\n " );
|
||||
}
|
||||
if ( Abc_NtkPoNum(pNtk) > 0 )
|
||||
Io_WriteVerilogPos( pFile, pNtk, 3 );
|
||||
fprintf( pFile, " );\n" );
|
||||
// write inputs, outputs, registers, and wires
|
||||
// fprintf( pFile, " input gclk," );
|
||||
fprintf( pFile, " input " );
|
||||
Io_WriteVerilogPis( pFile, pNtk, 10 );
|
||||
fprintf( pFile, ";\n" );
|
||||
fprintf( pFile, " output" );
|
||||
Io_WriteVerilogPos( pFile, pNtk, 5 );
|
||||
fprintf( pFile, ";\n" );
|
||||
if ( Abc_NtkLatchNum(pNtk) > 0 )
|
||||
if ( Abc_NtkPiNum(pNtk) > 0 )
|
||||
{
|
||||
fprintf( pFile, " reg" );
|
||||
Io_WriteVerilogRegs( pFile, pNtk, 4 );
|
||||
fprintf( pFile, ";\n" );
|
||||
// fprintf( pFile, " input gclk," );
|
||||
fprintf( pFile, " input " );
|
||||
Io_WriteVerilogPis( pFile, pNtk, 10 );
|
||||
fprintf( pFile, ";\n" );
|
||||
}
|
||||
if ( Io_WriteVerilogWiresCount(pNtk) > 0 )
|
||||
if ( Abc_NtkPoNum(pNtk) > 0 )
|
||||
{
|
||||
fprintf( pFile, " wire" );
|
||||
Io_WriteVerilogWires( pFile, pNtk, 4 );
|
||||
fprintf( pFile, ";\n" );
|
||||
fprintf( pFile, " output" );
|
||||
Io_WriteVerilogPos( pFile, pNtk, 5 );
|
||||
fprintf( pFile, ";\n" );
|
||||
}
|
||||
// if this is not a blackbox, write internal signals
|
||||
if ( !Abc_NtkHasBlackbox(pNtk) )
|
||||
{
|
||||
if ( Abc_NtkLatchNum(pNtk) > 0 )
|
||||
{
|
||||
fprintf( pFile, " reg" );
|
||||
Io_WriteVerilogRegs( pFile, pNtk, 4 );
|
||||
fprintf( pFile, ";\n" );
|
||||
}
|
||||
if ( Io_WriteVerilogWiresCount(pNtk) > 0 )
|
||||
{
|
||||
fprintf( pFile, " wire" );
|
||||
Io_WriteVerilogWires( pFile, pNtk, 4 );
|
||||
fprintf( pFile, ";\n" );
|
||||
}
|
||||
// write nodes
|
||||
Io_WriteVerilogObjects( pFile, pNtk );
|
||||
// write registers
|
||||
if ( Abc_NtkLatchNum(pNtk) > 0 )
|
||||
Io_WriteVerilogLatches( pFile, pNtk );
|
||||
}
|
||||
// write nodes
|
||||
if ( fVerLibStyle )
|
||||
Io_WriteVerilogVerLibStyle( pFile, pNtk );
|
||||
else if ( Abc_NtkHasMapping(pNtk) )
|
||||
Io_WriteVerilogGates( pFile, pNtk );
|
||||
else
|
||||
Io_WriteVerilogNodes( pFile, pNtk );
|
||||
// write registers
|
||||
Io_WriteVerilogLatches( pFile, pNtk );
|
||||
// finalize the file
|
||||
fprintf( pFile, "endmodule\n\n" );
|
||||
}
|
||||
|
|
@ -267,34 +238,6 @@ void Io_WriteVerilogPos( FILE * pFile, Abc_Ntk_t * pNtk, int Start )
|
|||
}
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Counts the number of wires.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
int Io_WriteVerilogWiresCount( Abc_Ntk_t * pNtk )
|
||||
{
|
||||
Abc_Obj_t * pTerm, * pNet;
|
||||
int i, nNodes;
|
||||
nNodes = Abc_NtkLatchNum(pNtk);
|
||||
Abc_NtkForEachNode( pNtk, pTerm, i )
|
||||
{
|
||||
if ( i == 0 )
|
||||
continue;
|
||||
pNet = Abc_ObjFanout0(pTerm);
|
||||
if ( Abc_ObjIsCo(Abc_ObjFanout0(pNet)) )
|
||||
continue;
|
||||
nNodes++;
|
||||
}
|
||||
return nNodes;
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Writes the wires.]
|
||||
|
|
@ -308,11 +251,11 @@ int Io_WriteVerilogWiresCount( Abc_Ntk_t * pNtk )
|
|||
***********************************************************************/
|
||||
void Io_WriteVerilogWires( FILE * pFile, Abc_Ntk_t * pNtk, int Start )
|
||||
{
|
||||
Abc_Obj_t * pTerm, * pNet;
|
||||
Abc_Obj_t * pObj, * pNet, * pBox, * pTerm;
|
||||
int LineLength;
|
||||
int AddedLength;
|
||||
int NameCounter;
|
||||
int i, Counter, nNodes;
|
||||
int i, k, Counter, nNodes;
|
||||
|
||||
// count the number of wires
|
||||
nNodes = Io_WriteVerilogWiresCount( pNtk );
|
||||
|
|
@ -321,12 +264,12 @@ void Io_WriteVerilogWires( FILE * pFile, Abc_Ntk_t * pNtk, int Start )
|
|||
Counter = 0;
|
||||
LineLength = Start;
|
||||
NameCounter = 0;
|
||||
Abc_NtkForEachNode( pNtk, pTerm, i )
|
||||
Abc_NtkForEachNode( pNtk, pObj, i )
|
||||
{
|
||||
if ( i == 0 )
|
||||
continue;
|
||||
pNet = Abc_ObjFanout0(pTerm);
|
||||
if ( Abc_ObjIsCo(Abc_ObjFanout0(pNet)) )
|
||||
pNet = Abc_ObjFanout0(pObj);
|
||||
if ( Abc_ObjFanoutNum(pNet) > 0 && Abc_ObjIsCo(Abc_ObjFanout0(pNet)) )
|
||||
continue;
|
||||
Counter++;
|
||||
// get the line length after this name is written
|
||||
|
|
@ -342,9 +285,9 @@ void Io_WriteVerilogWires( FILE * pFile, Abc_Ntk_t * pNtk, int Start )
|
|||
LineLength += AddedLength;
|
||||
NameCounter++;
|
||||
}
|
||||
Abc_NtkForEachLatch( pNtk, pTerm, i )
|
||||
Abc_NtkForEachLatch( pNtk, pObj, i )
|
||||
{
|
||||
pNet = Abc_ObjFanin0(Abc_ObjFanin0(pTerm));
|
||||
pNet = Abc_ObjFanin0(Abc_ObjFanin0(pObj));
|
||||
Counter++;
|
||||
// get the line length after this name is written
|
||||
AddedLength = strlen(Io_WriteVerilogGetName(pNet)) + 2;
|
||||
|
|
@ -359,6 +302,47 @@ void Io_WriteVerilogWires( FILE * pFile, Abc_Ntk_t * pNtk, int Start )
|
|||
LineLength += AddedLength;
|
||||
NameCounter++;
|
||||
}
|
||||
Abc_NtkForEachBox( pNtk, pBox, i )
|
||||
{
|
||||
if ( Abc_ObjIsLatch(pBox) )
|
||||
continue;
|
||||
Abc_ObjForEachFanin( pBox, pTerm, k )
|
||||
{
|
||||
pNet = Abc_ObjFanin0(pTerm);
|
||||
Counter++;
|
||||
// get the line length after this name is written
|
||||
AddedLength = strlen(Io_WriteVerilogGetName(pNet)) + 2;
|
||||
if ( NameCounter && LineLength + AddedLength + 3 > IO_WRITE_LINE_LENGTH )
|
||||
{ // write the line extender
|
||||
fprintf( pFile, "\n " );
|
||||
// reset the line length
|
||||
LineLength = 3;
|
||||
NameCounter = 0;
|
||||
}
|
||||
fprintf( pFile, " %s%s", Io_WriteVerilogGetName(pNet), (Counter==nNodes)? "" : "," );
|
||||
LineLength += AddedLength;
|
||||
NameCounter++;
|
||||
}
|
||||
Abc_ObjForEachFanout( pBox, pTerm, k )
|
||||
{
|
||||
pNet = Abc_ObjFanout0(pTerm);
|
||||
if ( Abc_ObjFanoutNum(pNet) > 0 && Abc_ObjIsCo(Abc_ObjFanout0(pNet)) )
|
||||
continue;
|
||||
Counter++;
|
||||
// get the line length after this name is written
|
||||
AddedLength = strlen(Io_WriteVerilogGetName(pNet)) + 2;
|
||||
if ( NameCounter && LineLength + AddedLength + 3 > IO_WRITE_LINE_LENGTH )
|
||||
{ // write the line extender
|
||||
fprintf( pFile, "\n " );
|
||||
// reset the line length
|
||||
LineLength = 3;
|
||||
NameCounter = 0;
|
||||
}
|
||||
fprintf( pFile, " %s%s", Io_WriteVerilogGetName(pNet), (Counter==nNodes)? "" : "," );
|
||||
LineLength += AddedLength;
|
||||
NameCounter++;
|
||||
}
|
||||
}
|
||||
assert( Counter == nNodes );
|
||||
}
|
||||
|
||||
|
|
@ -418,13 +402,13 @@ void Io_WriteVerilogRegs( FILE * pFile, Abc_Ntk_t * pNtk, int Start )
|
|||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
void Io_WriteVerilogLatches( FILE * pFile, Abc_Ntk_t * pNtk )
|
||||
void Io_WriteVerilogLatches2( FILE * pFile, Abc_Ntk_t * pNtk )
|
||||
{
|
||||
Abc_Obj_t * pLatch;
|
||||
int i;
|
||||
Abc_NtkForEachLatch( pNtk, pLatch, i )
|
||||
{
|
||||
// fprintf( pFile, " always@(posedge gclk) begin %s", Abc_ObjName(Abc_ObjFanout0(pLatch)) );
|
||||
// fprintf( pFile, " always @(posedge gclk) begin %s", Abc_ObjName(Abc_ObjFanout0(pLatch)) );
|
||||
fprintf( pFile, " always begin %s", Io_WriteVerilogGetName(Abc_ObjFanout0(Abc_ObjFanout0(pLatch))) );
|
||||
fprintf( pFile, " = %s; end\n", Io_WriteVerilogGetName(Abc_ObjFanin0(Abc_ObjFanin0(pLatch))) );
|
||||
if ( Abc_LatchInit(pLatch) == ABC_INIT_ZERO )
|
||||
|
|
@ -436,22 +420,49 @@ void Io_WriteVerilogLatches( FILE * pFile, Abc_Ntk_t * pNtk )
|
|||
}
|
||||
}
|
||||
|
||||
/* // fix by Zhihong
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Writes the latches.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
void Io_WriteVerilogLatches( FILE * pFile, Abc_Ntk_t * pNtk )
|
||||
{
|
||||
Abc_Obj_t * pLatch;
|
||||
int i;
|
||||
if ( Abc_NtkLatchNum(pNtk) == 0 )
|
||||
return;
|
||||
// write the latches
|
||||
// fprintf( pFile, " always @(posedge %s) begin\n", Io_WriteVerilogGetName(Abc_ObjFanout0(Abc_NtkPi(pNtk,0))) );
|
||||
fprintf( pFile, " always begin\n" );
|
||||
Abc_NtkForEachLatch( pNtk, pLatch, i )
|
||||
{
|
||||
fprintf( pFile, " %s", Io_WriteVerilogGetName(Abc_ObjFanout0(Abc_ObjFanout0(pLatch))) );
|
||||
fprintf( pFile, " <= %s;\n", Io_WriteVerilogGetName(Abc_ObjFanin0(Abc_ObjFanin0(pLatch))) );
|
||||
}
|
||||
fprintf( pFile, " end\n" );
|
||||
// check if there are initial values
|
||||
Abc_NtkForEachLatch( pNtk, pLatch, i )
|
||||
if ( Abc_LatchInit(pLatch) == ABC_INIT_ZERO || Abc_LatchInit(pLatch) == ABC_INIT_ONE )
|
||||
break;
|
||||
if ( i == Abc_NtkLatchNum(pNtk) )
|
||||
return;
|
||||
// write the initial values
|
||||
fprintf( pFile, " initial begin\n", Io_WriteVerilogGetName(Abc_ObjFanout0(Abc_NtkPi(pNtk,0))) );
|
||||
Abc_NtkForEachLatch( pNtk, pLatch, i )
|
||||
{
|
||||
if ( Abc_LatchInit(pLatch) == ABC_INIT_ZERO )
|
||||
fprintf( pFile, " initial begin %s <= 1\'b0; end\n", Io_WriteVerilogGetName(Abc_ObjFanout0(Abc_ObjFanout0(pLatch))) );
|
||||
fprintf( pFile, " %s <= 1\'b0;\n", Io_WriteVerilogGetName(Abc_ObjFanout0(Abc_ObjFanout0(pLatch))) );
|
||||
else if ( Abc_LatchInit(pLatch) == ABC_INIT_ONE )
|
||||
fprintf( pFile, " initial begin %s <= 1\'b1; end\n", Io_WriteVerilogGetName(Abc_ObjFanout0(Abc_ObjFanout0(pLatch))) );
|
||||
fprintf( pFile, " always@(posedge gclk) begin %s", Io_WriteVerilogGetName(Abc_ObjFanout0(Abc_ObjFanout0(pLatch))) );
|
||||
fprintf( pFile, " <= %s; end\n", Io_WriteVerilogGetName(Abc_ObjFanin0(Abc_ObjFanin0(pLatch))) );
|
||||
fprintf( pFile, " %s <= 1\'b1;\n", Io_WriteVerilogGetName(Abc_ObjFanout0(Abc_ObjFanout0(pLatch))) );
|
||||
}
|
||||
fprintf( pFile, " end\n" );
|
||||
}
|
||||
*/
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
|
|
@ -464,10 +475,10 @@ void Io_WriteVerilogLatches( FILE * pFile, Abc_Ntk_t * pNtk )
|
|||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
void Io_WriteVerilogVerLibStyle( FILE * pFile, Abc_Ntk_t * pNtk )
|
||||
void Io_WriteVerilogObjects( FILE * pFile, Abc_Ntk_t * pNtk )
|
||||
{
|
||||
Vec_Vec_t * vLevels;
|
||||
Abc_Ntk_t * pNtkGate;
|
||||
Abc_Ntk_t * pNtkBox;
|
||||
Abc_Obj_t * pObj, * pTerm, * pFanin;
|
||||
Hop_Obj_t * pFunc;
|
||||
int i, k, Counter, nDigits;
|
||||
|
|
@ -478,18 +489,20 @@ void Io_WriteVerilogVerLibStyle( FILE * pFile, Abc_Ntk_t * pNtk )
|
|||
// write boxes
|
||||
Abc_NtkForEachBox( pNtk, pObj, i )
|
||||
{
|
||||
pNtkGate = pObj->pData;
|
||||
fprintf( pFile, " %s g%0*d", pNtkGate->pName, nDigits, Counter++ );
|
||||
if ( Abc_ObjIsLatch(pObj) )
|
||||
continue;
|
||||
pNtkBox = pObj->pData;
|
||||
fprintf( pFile, " %s g%0*d", pNtkBox->pName, nDigits, Counter++ );
|
||||
fprintf( pFile, "(" );
|
||||
Abc_NtkForEachPi( pNtkGate, pTerm, k )
|
||||
Abc_NtkForEachPi( pNtkBox, pTerm, k )
|
||||
{
|
||||
fprintf( pFile, ".%s ", Io_WriteVerilogGetName(Abc_ObjFanout0(pTerm)) );
|
||||
fprintf( pFile, "(%s), ", Io_WriteVerilogGetName(Abc_ObjFanin(pObj,k)) );
|
||||
fprintf( pFile, "(%s), ", Io_WriteVerilogGetName(Abc_ObjFanin0(Abc_ObjFanin(pObj,k))) );
|
||||
}
|
||||
Abc_NtkForEachPo( pNtkGate, pTerm, k )
|
||||
Abc_NtkForEachPo( pNtkBox, pTerm, k )
|
||||
{
|
||||
fprintf( pFile, ".%s ", Io_WriteVerilogGetName(Abc_ObjFanin0(pTerm)) );
|
||||
fprintf( pFile, "(%s)%s", Io_WriteVerilogGetName(Abc_ObjFanout(pObj,k)), k==Abc_NtkPoNum(pNtkGate)-1? "":", " );
|
||||
fprintf( pFile, "(%s)%s", Io_WriteVerilogGetName(Abc_ObjFanout0(Abc_ObjFanout(pObj,k))), k==Abc_NtkPoNum(pNtkBox)-1? "":", " );
|
||||
}
|
||||
fprintf( pFile, ");\n" );
|
||||
}
|
||||
|
|
@ -514,7 +527,7 @@ void Io_WriteVerilogVerLibStyle( FILE * pFile, Abc_Ntk_t * pNtk )
|
|||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Writes the gates.]
|
||||
Synopsis [Counts the number of wires.]
|
||||
|
||||
Description []
|
||||
|
||||
|
|
@ -523,139 +536,34 @@ void Io_WriteVerilogVerLibStyle( FILE * pFile, Abc_Ntk_t * pNtk )
|
|||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
void Io_WriteVerilogGates( FILE * pFile, Abc_Ntk_t * pNtk )
|
||||
int Io_WriteVerilogWiresCount( Abc_Ntk_t * pNtk )
|
||||
{
|
||||
Mio_Gate_t * pGate;
|
||||
Mio_Pin_t * pGatePin;
|
||||
Abc_Obj_t * pObj;
|
||||
int i, k, Counter, nDigits, nFanins;
|
||||
|
||||
Counter = 1;
|
||||
nDigits = Extra_Base10Log( Abc_NtkNodeNum(pNtk) );
|
||||
Abc_Obj_t * pObj, * pNet, * pBox;
|
||||
int i, k, nWires;
|
||||
nWires = Abc_NtkLatchNum(pNtk);
|
||||
Abc_NtkForEachNode( pNtk, pObj, i )
|
||||
{
|
||||
pGate = pObj->pData;
|
||||
nFanins = Abc_ObjFaninNum(pObj);
|
||||
fprintf( pFile, " %s g%0*d", Mio_GateReadName(pGate), nDigits, Counter++ );
|
||||
fprintf( pFile, "(.%s (%s),", Mio_GateReadOutName(pGate), Io_WriteVerilogGetName(Abc_ObjFanout0(pObj)) );
|
||||
for ( pGatePin = Mio_GateReadPins(pGate), k = 0; pGatePin; pGatePin = Mio_PinReadNext(pGatePin), k++ )
|
||||
fprintf( pFile, " .%s (%s)%s", Mio_PinReadName(pGatePin), Io_WriteVerilogGetName(Abc_ObjFanin(pObj,k)), k==nFanins-1? "":"," );
|
||||
fprintf( pFile, ");\n" );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Writes the nodes.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
void Io_WriteVerilogNodes2( FILE * pFile, Abc_Ntk_t * pNtk )
|
||||
{
|
||||
Abc_Obj_t * pObj, * pFanin;
|
||||
int i, k, nFanins;
|
||||
char * pName;
|
||||
|
||||
Abc_NtkForEachNode( pNtk, pObj, i )
|
||||
{
|
||||
assert( Abc_SopGetCubeNum(pObj->pData) == 1 );
|
||||
nFanins = Abc_ObjFaninNum(pObj);
|
||||
if ( nFanins == 0 )
|
||||
{
|
||||
// fprintf( pFile, " assign %s = 1'b%d;\n", Io_WriteVerilogGetName(Abc_ObjFanout0(pObj)), !Abc_SopIsComplement(pObj->pData) );
|
||||
fprintf( pFile, " assign %s = %d;\n", Io_WriteVerilogGetName(Abc_ObjFanout0(pObj)), !Abc_SopIsComplement(pObj->pData) );
|
||||
if ( i == 0 )
|
||||
continue;
|
||||
}
|
||||
if ( nFanins == 1 )
|
||||
{
|
||||
pName = Abc_SopIsInv(pObj->pData)? "not" : "and";
|
||||
fprintf( pFile, " %s(%s, ", pName, Io_WriteVerilogGetName(Abc_ObjFanout0(pObj)) );
|
||||
fprintf( pFile, "%s);\n", Io_WriteVerilogGetName(Abc_ObjFanin0(pObj)) );
|
||||
pNet = Abc_ObjFanout0(pObj);
|
||||
if ( Abc_ObjFanoutNum(pNet) > 0 && Abc_ObjIsCo(Abc_ObjFanout0(pNet)) )
|
||||
continue;
|
||||
}
|
||||
pName = Abc_SopIsComplement(pObj->pData)? "or" : "and";
|
||||
fprintf( pFile, " %s(%s, ", pName, Io_WriteVerilogGetName(Abc_ObjFanout0(pObj)) );
|
||||
// Abc_ObjForEachFanin( pObj, pFanin, k )
|
||||
// fprintf( pFile, "%s%s", Io_WriteVerilogGetName(pFanin), (k==nFanins-1? "" : ", ") );
|
||||
Abc_ObjForEachFanin( pObj, pFanin, k )
|
||||
{
|
||||
char *cube = pObj->pData;
|
||||
fprintf( pFile, "%s", cube[k] == '0' ? "~" : "");
|
||||
fprintf( pFile, "%s%s", Io_WriteVerilogGetName(pFanin), (k==nFanins-1? "" : ", ") );
|
||||
}
|
||||
fprintf( pFile, ");\n" );
|
||||
nWires++;
|
||||
}
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Writes the nodes.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
void Io_WriteVerilogNodes( FILE * pFile, Abc_Ntk_t * pNtk )
|
||||
{
|
||||
Abc_Obj_t * pObj, * pFanin;
|
||||
int i, k, nFanins;
|
||||
char pOper[] = " ? ", Symb;
|
||||
Abc_NtkForEachNode( pNtk, pObj, i )
|
||||
Abc_NtkForEachBox( pNtk, pBox, i )
|
||||
{
|
||||
assert( Abc_SopGetCubeNum(pObj->pData) == 1 );
|
||||
nFanins = Abc_ObjFaninNum(pObj);
|
||||
if ( nFanins == 0 )
|
||||
{
|
||||
fprintf( pFile, " assign %s = 1'b%d;\n", Io_WriteVerilogGetName(Abc_ObjFanout0(pObj)), !Abc_SopIsComplement(pObj->pData) );
|
||||
if ( Abc_ObjIsLatch(pBox) )
|
||||
continue;
|
||||
}
|
||||
fprintf( pFile, " assign %s = ", Io_WriteVerilogGetName(Abc_ObjFanout0(pObj)) );
|
||||
pOper[1] = Abc_SopIsComplement(pObj->pData) ? '|' : '&';
|
||||
Abc_ObjForEachFanin( pObj, pFanin, k )
|
||||
nWires += Abc_ObjFaninNum(pBox);
|
||||
Abc_ObjForEachFanout( pBox, pObj, k )
|
||||
{
|
||||
Symb = ((char*)pObj->pData)[k];
|
||||
assert( Symb == '0' || Symb == '1' );
|
||||
if ( Symb == '0' )
|
||||
fprintf( pFile, "~" );
|
||||
fprintf( pFile, "%s%s", Io_WriteVerilogGetName(pFanin), (k==nFanins-1? "" : pOper) );
|
||||
}
|
||||
fprintf( pFile, ";\n" );
|
||||
}
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis []
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
int Io_WriteVerilogCheckNtk( Abc_Ntk_t * pNtk )
|
||||
{
|
||||
Abc_Obj_t * pObj;
|
||||
int i;
|
||||
Abc_NtkForEachNode( pNtk, pObj, i )
|
||||
{
|
||||
if ( Abc_SopGetCubeNum(pObj->pData) > 1 )
|
||||
{
|
||||
printf( "Node %s contains a cover with more than one cube.\n", Abc_ObjName(pObj) );
|
||||
return 0;
|
||||
pNet = Abc_ObjFanout0(pObj);
|
||||
if ( Abc_ObjFanoutNum(pNet) > 0 && Abc_ObjIsCo(Abc_ObjFanout0(pNet)) )
|
||||
continue;
|
||||
nWires++;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
return nWires;
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
|
@ -8,6 +8,7 @@ SRC += src/base/io/io.c \
|
|||
src/base/io/ioReadEdif.c \
|
||||
src/base/io/ioReadEqn.c \
|
||||
src/base/io/ioReadPla.c \
|
||||
src/base/io/ioReadVerilog.c \
|
||||
src/base/io/ioUtil.c \
|
||||
src/base/io/ioWriteAiger.c \
|
||||
src/base/io/ioWriteBaf.c \
|
||||
|
|
@ -20,5 +21,4 @@ SRC += src/base/io/io.c \
|
|||
src/base/io/ioWriteGml.c \
|
||||
src/base/io/ioWriteList.c \
|
||||
src/base/io/ioWritePla.c \
|
||||
src/base/io/ioWriteVer.c \
|
||||
src/base/io/ioWriteVerAux.c
|
||||
src/base/io/ioWriteVerilog.c
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ struct Ver_Man_t_
|
|||
// input file stream
|
||||
char * pFileName;
|
||||
Ver_Stream_t * pReader;
|
||||
int fNameLast;
|
||||
ProgressBar * pProgress;
|
||||
// current network and library
|
||||
Abc_Ntk_t * pNtkCur; // the network under construction
|
||||
|
|
|
|||
|
|
@ -60,7 +60,8 @@ static int Ver_ParseGateStandard( Ver_Man_t * pMan, Ver_GateType_t GateType );
|
|||
|
||||
static Abc_Obj_t * Ver_ParseCreatePi( Abc_Ntk_t * pNtk, char * pName );
|
||||
static Abc_Obj_t * Ver_ParseCreatePo( Abc_Ntk_t * pNtk, char * pName );
|
||||
static Abc_Obj_t * Ver_ParseCreateLatch( Abc_Ntk_t * pNtk, char * pNetLI, char * pNetLO );
|
||||
static Abc_Obj_t * Ver_ParseCreateLatch( Abc_Ntk_t * pNtk, Abc_Obj_t * pNetLI, Abc_Obj_t * pNetLO );
|
||||
static Abc_Obj_t * Ver_ParseCreateInv( Abc_Ntk_t * pNtk, Abc_Obj_t * pNet );
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
/// FUNCTION DEFINITIONS ///
|
||||
|
|
@ -281,8 +282,8 @@ int Ver_ParseModule( Ver_Man_t * pMan )
|
|||
pNtk->pSpec = NULL;
|
||||
|
||||
// create constant nets
|
||||
Abc_NtkFindOrCreateNet( pNtk, "1'b0" );
|
||||
Abc_NtkFindOrCreateNet( pNtk, "1'b1" );
|
||||
Abc_NtkFindOrCreateNet( pNtk, "1\'b0" );
|
||||
Abc_NtkFindOrCreateNet( pNtk, "1\'b1" );
|
||||
|
||||
// make sure we stopped at the opening paranthesis
|
||||
if ( Ver_StreamPopChar(p) != '(' )
|
||||
|
|
@ -383,13 +384,13 @@ int Ver_ParseModule( Ver_Man_t * pMan )
|
|||
}
|
||||
|
||||
// check if constant 0 net is used
|
||||
pNet = Abc_NtkFindOrCreateNet( pNtk, "1'b0" );
|
||||
pNet = Abc_NtkFindOrCreateNet( pNtk, "1\'b0" );
|
||||
if ( Abc_ObjFanoutNum(pNet) == 0 )
|
||||
Abc_NtkDeleteObj(pNet);
|
||||
else
|
||||
Abc_ObjAddFanin( pNet, Abc_NtkCreateNodeConst0(pNtk) );
|
||||
// check if constant 1 net is used
|
||||
pNet = Abc_NtkFindOrCreateNet( pNtk, "1'b1" );
|
||||
pNet = Abc_NtkFindOrCreateNet( pNtk, "1\'b1" );
|
||||
if ( Abc_ObjFanoutNum(pNet) == 0 )
|
||||
Abc_NtkDeleteObj(pNet);
|
||||
else
|
||||
|
|
@ -397,6 +398,13 @@ int Ver_ParseModule( Ver_Man_t * pMan )
|
|||
|
||||
// fix the dangling nets
|
||||
Abc_NtkFinalizeRead( pNtk );
|
||||
|
||||
// check the functionality to blackbox if insides are not defined
|
||||
if ( Abc_NtkNodeNum(pNtk) == 0 && Abc_NtkBoxNum(pNtk) == 0 )
|
||||
{
|
||||
pNtk->ntkFunc = ABC_FUNC_BLACKBOX;
|
||||
pNtk->pManFunc = NULL;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -415,6 +423,8 @@ int Ver_ParseSignal( Ver_Man_t * pMan, Ver_SignalType_t SigType )
|
|||
{
|
||||
Ver_Stream_t * p = pMan->pReader;
|
||||
Abc_Ntk_t * pNtk = pMan->pNtkCur;
|
||||
char Buffer[1000];
|
||||
int Lower, Upper, i;
|
||||
char * pWord;
|
||||
char Symbol;
|
||||
while ( 1 )
|
||||
|
|
@ -422,12 +432,41 @@ int Ver_ParseSignal( Ver_Man_t * pMan, Ver_SignalType_t SigType )
|
|||
pWord = Ver_ParseGetName( pMan );
|
||||
if ( pWord == NULL )
|
||||
return 0;
|
||||
if ( SigType == VER_SIG_INPUT || SigType == VER_SIG_INOUT )
|
||||
Ver_ParseCreatePi( pNtk, pWord );
|
||||
if ( SigType == VER_SIG_OUTPUT || SigType == VER_SIG_INOUT )
|
||||
Ver_ParseCreatePo( pNtk, pWord );
|
||||
if ( SigType == VER_SIG_WIRE || SigType == VER_SIG_REG )
|
||||
Abc_NtkFindOrCreateNet( pNtk, pWord );
|
||||
if ( pWord[0] == '[' && !pMan->fNameLast )
|
||||
{
|
||||
Lower = atoi( pWord + 1 );
|
||||
while ( *pWord && *pWord != ':' )
|
||||
pWord++;
|
||||
if ( *pWord == 0 )
|
||||
Upper = Lower;
|
||||
else
|
||||
Upper = atoi( pWord + 1 );
|
||||
if ( Lower > Upper )
|
||||
i = Lower, Lower = Upper, Upper = i;
|
||||
// get the signal name
|
||||
pWord = Ver_ParseGetName( pMan );
|
||||
if ( pWord == NULL )
|
||||
return 0;
|
||||
for ( i = Lower; i <= Upper; i++ )
|
||||
{
|
||||
sprintf( Buffer, "%s[%d]", pWord, i );
|
||||
if ( SigType == VER_SIG_INPUT || SigType == VER_SIG_INOUT )
|
||||
Ver_ParseCreatePi( pNtk, Buffer );
|
||||
if ( SigType == VER_SIG_OUTPUT || SigType == VER_SIG_INOUT )
|
||||
Ver_ParseCreatePo( pNtk, Buffer );
|
||||
if ( SigType == VER_SIG_WIRE || SigType == VER_SIG_REG )
|
||||
Abc_NtkFindOrCreateNet( pNtk, Buffer );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( SigType == VER_SIG_INPUT || SigType == VER_SIG_INOUT )
|
||||
Ver_ParseCreatePi( pNtk, pWord );
|
||||
if ( SigType == VER_SIG_OUTPUT || SigType == VER_SIG_INOUT )
|
||||
Ver_ParseCreatePo( pNtk, pWord );
|
||||
if ( SigType == VER_SIG_WIRE || SigType == VER_SIG_REG )
|
||||
Abc_NtkFindOrCreateNet( pNtk, pWord );
|
||||
}
|
||||
Symbol = Ver_StreamPopChar(p);
|
||||
if ( Symbol == ',' )
|
||||
continue;
|
||||
|
|
@ -461,6 +500,11 @@ int Ver_ParseAssign( Ver_Man_t * pMan )
|
|||
char Symbol;
|
||||
int i, Length, fReduction;
|
||||
|
||||
// if ( Ver_StreamGetLineNumber(p) == 2756 )
|
||||
// {
|
||||
// int x = 0;
|
||||
// }
|
||||
|
||||
// convert from the mapped netlist into the BDD netlist
|
||||
if ( pNtk->ntkFunc == ABC_FUNC_BLACKBOX )
|
||||
{
|
||||
|
|
@ -482,7 +526,9 @@ int Ver_ParseAssign( Ver_Man_t * pMan )
|
|||
if ( pWord == NULL )
|
||||
return 0;
|
||||
// consider the case of reduction operations
|
||||
fReduction = (pWord[0] == '{');
|
||||
fReduction = 0;
|
||||
if ( pWord[0] == '{' && !pMan->fNameLast )
|
||||
fReduction = 1;
|
||||
if ( fReduction )
|
||||
{
|
||||
pWord++;
|
||||
|
|
@ -497,7 +543,7 @@ int Ver_ParseAssign( Ver_Man_t * pMan )
|
|||
Ver_ParsePrintErrorMessage( pMan );
|
||||
return 0;
|
||||
}
|
||||
// get the equal sign
|
||||
// get the equality sign
|
||||
if ( Ver_StreamPopChar(p) != '=' )
|
||||
{
|
||||
sprintf( pMan->sError, "Cannot read the assign statement for %s (expected equality sign).", pWord );
|
||||
|
|
@ -572,28 +618,39 @@ int Ver_ParseAlways( Ver_Man_t * pMan )
|
|||
Ver_Stream_t * p = pMan->pReader;
|
||||
Abc_Ntk_t * pNtk = pMan->pNtkCur;
|
||||
Abc_Obj_t * pNet, * pNet2;
|
||||
int fStopAfterOne;
|
||||
char * pWord, * pWord2;
|
||||
char Symbol;
|
||||
// parse the directive
|
||||
pWord = Ver_ParseGetName( pMan );
|
||||
if ( pWord == NULL )
|
||||
return 0;
|
||||
if ( strcmp( pWord, "begin" ) )
|
||||
if ( pWord[0] == '@' )
|
||||
{
|
||||
sprintf( pMan->sError, "Cannot parse the always statement (expected \"begin\")." );
|
||||
Ver_ParsePrintErrorMessage( pMan );
|
||||
return 0;
|
||||
}
|
||||
// iterate over the initial states
|
||||
while ( 1 )
|
||||
{
|
||||
// get the name of the output signal
|
||||
Ver_StreamSkipToChars( p, ")" );
|
||||
Ver_StreamPopChar(p);
|
||||
// parse the directive
|
||||
pWord = Ver_ParseGetName( pMan );
|
||||
if ( pWord == NULL )
|
||||
return 0;
|
||||
// look for the end of directive
|
||||
if ( !strcmp( pWord, "end" ) )
|
||||
break;
|
||||
}
|
||||
// decide how many statements to parse
|
||||
fStopAfterOne = 0;
|
||||
if ( strcmp( pWord, "begin" ) )
|
||||
fStopAfterOne = 1;
|
||||
// iterate over the initial states
|
||||
while ( 1 )
|
||||
{
|
||||
if ( !fStopAfterOne )
|
||||
{
|
||||
// get the name of the output signal
|
||||
pWord = Ver_ParseGetName( pMan );
|
||||
if ( pWord == NULL )
|
||||
return 0;
|
||||
// look for the end of directive
|
||||
if ( !strcmp( pWord, "end" ) )
|
||||
break;
|
||||
}
|
||||
// get the fanout net
|
||||
pNet = Abc_NtkFindNet( pNtk, pWord );
|
||||
if ( pNet == NULL )
|
||||
|
|
@ -602,13 +659,16 @@ int Ver_ParseAlways( Ver_Man_t * pMan )
|
|||
Ver_ParsePrintErrorMessage( pMan );
|
||||
return 0;
|
||||
}
|
||||
// get the equal sign
|
||||
if ( Ver_StreamPopChar(p) != '=' )
|
||||
// get the equality sign
|
||||
Symbol = Ver_StreamPopChar(p);
|
||||
if ( Symbol != '<' && Symbol != '=' )
|
||||
{
|
||||
sprintf( pMan->sError, "Cannot read the always statement for %s (expected equality sign).", pWord );
|
||||
sprintf( pMan->sError, "Cannot read the assign statement for %s (expected <= or =).", pWord );
|
||||
Ver_ParsePrintErrorMessage( pMan );
|
||||
return 0;
|
||||
}
|
||||
if ( Symbol == '<' )
|
||||
Ver_StreamPopChar(p);
|
||||
// skip the comments
|
||||
if ( !Ver_ParseSkipComments( pMan ) )
|
||||
return 0;
|
||||
|
|
@ -616,8 +676,14 @@ int Ver_ParseAlways( Ver_Man_t * pMan )
|
|||
pWord2 = Ver_ParseGetName( pMan );
|
||||
if ( pWord2 == NULL )
|
||||
return 0;
|
||||
// get the fanin net
|
||||
pNet2 = Abc_NtkFindNet( pNtk, pWord2 );
|
||||
// check if the name is complemented
|
||||
if ( pWord2[0] == '~' )
|
||||
{
|
||||
pNet2 = Abc_NtkFindNet( pNtk, pWord2+1 );
|
||||
pNet2 = Ver_ParseCreateInv( pNtk, pNet2 );
|
||||
}
|
||||
else
|
||||
pNet2 = Abc_NtkFindNet( pNtk, pWord2 );
|
||||
if ( pNet2 == NULL )
|
||||
{
|
||||
sprintf( pMan->sError, "Cannot read the always statement for %s (input wire is not defined).", pWord2 );
|
||||
|
|
@ -625,10 +691,13 @@ int Ver_ParseAlways( Ver_Man_t * pMan )
|
|||
return 0;
|
||||
}
|
||||
// create the latch
|
||||
Ver_ParseCreateLatch( pNtk, pNet2->pData, pNet->pData );
|
||||
Ver_ParseCreateLatch( pNtk, pNet2, pNet );
|
||||
// remove the last symbol
|
||||
Symbol = Ver_StreamPopChar(p);
|
||||
assert( Symbol == ';' );
|
||||
// quit if only one directive
|
||||
if ( fStopAfterOne )
|
||||
break;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -649,28 +718,30 @@ int Ver_ParseInitial( Ver_Man_t * pMan )
|
|||
Ver_Stream_t * p = pMan->pReader;
|
||||
Abc_Ntk_t * pNtk = pMan->pNtkCur;
|
||||
Abc_Obj_t * pNode, * pNet;
|
||||
int fStopAfterOne;
|
||||
char * pWord, * pEquation;
|
||||
char Symbol;
|
||||
// parse the directive
|
||||
pWord = Ver_ParseGetName( pMan );
|
||||
if ( pWord == NULL )
|
||||
return 0;
|
||||
// decide how many statements to parse
|
||||
fStopAfterOne = 0;
|
||||
if ( strcmp( pWord, "begin" ) )
|
||||
{
|
||||
sprintf( pMan->sError, "Cannot parse the initial statement (expected \"begin\")." );
|
||||
Ver_ParsePrintErrorMessage( pMan );
|
||||
return 0;
|
||||
}
|
||||
fStopAfterOne = 1;
|
||||
// iterate over the initial states
|
||||
while ( 1 )
|
||||
{
|
||||
// get the name of the output signal
|
||||
pWord = Ver_ParseGetName( pMan );
|
||||
if ( pWord == NULL )
|
||||
return 0;
|
||||
// look for the end of directive
|
||||
if ( !strcmp( pWord, "end" ) )
|
||||
break;
|
||||
if ( !fStopAfterOne )
|
||||
{
|
||||
// get the name of the output signal
|
||||
pWord = Ver_ParseGetName( pMan );
|
||||
if ( pWord == NULL )
|
||||
return 0;
|
||||
// look for the end of directive
|
||||
if ( !strcmp( pWord, "end" ) )
|
||||
break;
|
||||
}
|
||||
// get the fanout net
|
||||
pNet = Abc_NtkFindNet( pNtk, pWord );
|
||||
if ( pNet == NULL )
|
||||
|
|
@ -679,13 +750,16 @@ int Ver_ParseInitial( Ver_Man_t * pMan )
|
|||
Ver_ParsePrintErrorMessage( pMan );
|
||||
return 0;
|
||||
}
|
||||
// get the equal sign
|
||||
if ( Ver_StreamPopChar(p) != '=' )
|
||||
// get the equality sign
|
||||
Symbol = Ver_StreamPopChar(p);
|
||||
if ( Symbol != '<' && Symbol != '=' )
|
||||
{
|
||||
sprintf( pMan->sError, "Cannot read the initial statement for %s (expected equality sign).", pWord );
|
||||
sprintf( pMan->sError, "Cannot read the assign statement for %s (expected <= or =).", pWord );
|
||||
Ver_ParsePrintErrorMessage( pMan );
|
||||
return 0;
|
||||
}
|
||||
if ( Symbol == '<' )
|
||||
Ver_StreamPopChar(p);
|
||||
// skip the comments
|
||||
if ( !Ver_ParseSkipComments( pMan ) )
|
||||
return 0;
|
||||
|
|
@ -694,24 +768,33 @@ int Ver_ParseInitial( Ver_Man_t * pMan )
|
|||
if ( pEquation == NULL )
|
||||
return 0;
|
||||
// find the corresponding latch
|
||||
pNode = Abc_ObjFanin0(pNet);
|
||||
if ( Abc_ObjFaninNum(pNet) == 0 )
|
||||
{
|
||||
sprintf( pMan->sError, "Cannot find the latch to assign the initial value." );
|
||||
Ver_ParsePrintErrorMessage( pMan );
|
||||
return 0;
|
||||
}
|
||||
pNode = Abc_ObjFanin0(Abc_ObjFanin0(pNet));
|
||||
assert( Abc_ObjIsLatch(pNode) );
|
||||
// set the initial state
|
||||
if ( pEquation[0] == '2' )
|
||||
Abc_LatchSetInitDc( pNode );
|
||||
else if ( pEquation[0] == '1')
|
||||
Abc_LatchSetInit1( pNode );
|
||||
else if ( pEquation[0] == '0' )
|
||||
if ( !strcmp(pEquation, "0") || !strcmp(pEquation, "1\'b0") )
|
||||
Abc_LatchSetInit0( pNode );
|
||||
else
|
||||
else if ( !strcmp(pEquation, "1") || !strcmp(pEquation, "1\'b1") )
|
||||
Abc_LatchSetInit1( pNode );
|
||||
// else if ( !strcmp(pEquation, "2") )
|
||||
// Abc_LatchSetInitDc( pNode );
|
||||
else
|
||||
{
|
||||
sprintf( pMan->sError, "Incorrect initial value of the latch %s (expected equality sign).", pWord );
|
||||
sprintf( pMan->sError, "Incorrect initial value of the latch %s.", Abc_ObjName(pNet) );
|
||||
Ver_ParsePrintErrorMessage( pMan );
|
||||
return 0;
|
||||
}
|
||||
// remove the last symbol
|
||||
Symbol = Ver_StreamPopChar(p);
|
||||
assert( Symbol == ';' );
|
||||
// quit if only one directive
|
||||
if ( fStopAfterOne )
|
||||
break;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -732,7 +815,7 @@ int Ver_ParseGate( Ver_Man_t * pMan, Abc_Ntk_t * pNtkGate )
|
|||
Ver_Stream_t * p = pMan->pReader;
|
||||
Abc_Ntk_t * pNtk = pMan->pNtkCur;
|
||||
Abc_Obj_t * pNetFormal, * pNetActual;
|
||||
Abc_Obj_t * pObj, * pNode;
|
||||
Abc_Obj_t * pObj, * pNode, * pTerm;
|
||||
char * pWord, Symbol, * pGateName;
|
||||
int i, fCompl, fComplUsed = 0;
|
||||
unsigned * pPolarity;
|
||||
|
|
@ -820,9 +903,9 @@ int Ver_ParseGate( Ver_Man_t * pMan, Abc_Ntk_t * pNtkGate )
|
|||
}
|
||||
|
||||
// process the pair
|
||||
if ( Abc_ObjIsPi(Abc_ObjFanin0Ntk(pNetFormal)) ) // PI net (with polarity!)
|
||||
if ( Abc_ObjFaninNum(pNetFormal) > 0 && Abc_ObjIsPi(Abc_ObjFanin0Ntk(pNetFormal)) ) // PI net (with polarity!)
|
||||
Abc_ObjFanin0Ntk(pNetFormal)->pCopy = Abc_ObjNotCond( pNetActual, fCompl );
|
||||
else if ( Abc_ObjIsPo(Abc_ObjFanout0Ntk(pNetFormal)) ) // P0 net
|
||||
else if ( Abc_ObjFanoutNum(pNetFormal) > 0 && Abc_ObjIsPo(Abc_ObjFanout0Ntk(pNetFormal)) ) // P0 net
|
||||
{
|
||||
assert( fCompl == 0 );
|
||||
Abc_ObjFanout0Ntk(pNetFormal)->pCopy = pNetActual; // Abc_ObjNotCond( pNetActual, fCompl );
|
||||
|
|
@ -862,7 +945,7 @@ int Ver_ParseGate( Ver_Man_t * pMan, Abc_Ntk_t * pNtkGate )
|
|||
Abc_NtkForEachPi( pNtkGate, pObj, i )
|
||||
if ( pObj->pCopy == NULL )
|
||||
{
|
||||
sprintf( pMan->sError, "Formal input %s of gate %s has no actual input.", Abc_ObjFanout0(pObj)->pData, pNtkGate->pName );
|
||||
sprintf( pMan->sError, "Formal input %s of gate %s has no actual input.", Abc_ObjName(Abc_ObjFanout0(pObj)), pNtkGate->pName );
|
||||
Ver_ParsePrintErrorMessage( pMan );
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -871,7 +954,7 @@ int Ver_ParseGate( Ver_Man_t * pMan, Abc_Ntk_t * pNtkGate )
|
|||
Abc_NtkForEachPo( pNtkGate, pObj, i )
|
||||
if ( pObj->pCopy == NULL )
|
||||
{
|
||||
sprintf( pMan->sError, "Formal output %s of gate %s has no actual output.", Abc_ObjFanin0(pObj)->pData, pNtkGate->pName );
|
||||
sprintf( pMan->sError, "Formal output %s of gate %s has no actual output.", Abc_ObjName(Abc_ObjFanin0(pObj)), pNtkGate->pName );
|
||||
Ver_ParsePrintErrorMessage( pMan );
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -887,12 +970,6 @@ int Ver_ParseGate( Ver_Man_t * pMan, Abc_Ntk_t * pNtkGate )
|
|||
}
|
||||
// create box to represent this gate
|
||||
pNode = Abc_NtkCreateBlackbox( pMan->pNtkCur );
|
||||
/*
|
||||
if ( pNode->Id == 57548 )
|
||||
{
|
||||
int x = 0;
|
||||
}
|
||||
*/
|
||||
pNode->pNext = (Abc_Obj_t *)pPolarity;
|
||||
pNode->pData = pNtkGate;
|
||||
// connect to fanin nets
|
||||
|
|
@ -904,15 +981,20 @@ int Ver_ParseGate( Ver_Man_t * pMan, Abc_Ntk_t * pNtkGate )
|
|||
pObj->pCopy = Abc_ObjRegular( pObj->pCopy );
|
||||
}
|
||||
assert( !Abc_ObjIsComplement(pObj->pCopy) );
|
||||
Abc_ObjAddFanin( pNode, pObj->pCopy );
|
||||
// Abc_ObjAddFanin( pNode, pObj->pCopy );
|
||||
pTerm = Abc_NtkCreateBi( pNtk );
|
||||
Abc_ObjAddFanin( pTerm, pObj->pCopy );
|
||||
Abc_ObjAddFanin( pNode, pTerm );
|
||||
}
|
||||
// connect to fanout nets
|
||||
Abc_NtkForEachPo( pNtkGate, pObj, i )
|
||||
{
|
||||
if ( pObj->pCopy )
|
||||
Abc_ObjAddFanin( pObj->pCopy, pNode );
|
||||
else
|
||||
Abc_ObjAddFanin( Abc_NtkFindOrCreateNet(pNtk, NULL), pNode );
|
||||
if ( pObj->pCopy == NULL )
|
||||
pObj->pCopy = Abc_NtkFindOrCreateNet(pNtk, NULL);
|
||||
// Abc_ObjAddFanin( pObj->pCopy, pNode );
|
||||
pTerm = Abc_NtkCreateBo( pNtk );
|
||||
Abc_ObjAddFanin( pTerm, pNode );
|
||||
Abc_ObjAddFanin( pObj->pCopy, pTerm );
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -1063,27 +1145,52 @@ Abc_Obj_t * Ver_ParseCreatePo( Abc_Ntk_t * pNtk, char * pName )
|
|||
|
||||
Synopsis [Create a latch with the given input/output.]
|
||||
|
||||
Description [By default, the latch value is unknown (ABC_INIT_NONE).]
|
||||
Description [By default, the latch value is a don't-care.]
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
Abc_Obj_t * Ver_ParseCreateLatch( Abc_Ntk_t * pNtk, char * pNetLI, char * pNetLO )
|
||||
Abc_Obj_t * Ver_ParseCreateLatch( Abc_Ntk_t * pNtk, Abc_Obj_t * pNetLI, Abc_Obj_t * pNetLO )
|
||||
{
|
||||
Abc_Obj_t * pLatch, * pNet;
|
||||
// create a new latch and add it to the network
|
||||
Abc_Obj_t * pLatch, * pTerm;
|
||||
// add the BO terminal
|
||||
pTerm = Abc_NtkCreateBi( pNtk );
|
||||
Abc_ObjAddFanin( pTerm, pNetLI );
|
||||
// add the latch box
|
||||
pLatch = Abc_NtkCreateLatch( pNtk );
|
||||
// get the LI net
|
||||
pNet = Abc_NtkFindOrCreateNet( pNtk, pNetLI );
|
||||
Abc_ObjAddFanin( pLatch, pNet );
|
||||
Abc_ObjAddFanin( pLatch, pTerm );
|
||||
// add the BI terminal
|
||||
pTerm = Abc_NtkCreateBo( pNtk );
|
||||
Abc_ObjAddFanin( pTerm, pLatch );
|
||||
// get the LO net
|
||||
pNet = Abc_NtkFindOrCreateNet( pNtk, pNetLO );
|
||||
Abc_ObjAddFanin( pNet, pLatch );
|
||||
Abc_ObjAddFanin( pNetLO, pTerm );
|
||||
// set latch name
|
||||
Abc_ObjAssignName( pLatch, Abc_ObjName(pNetLO), "L" );
|
||||
Abc_LatchSetInitDc( pLatch );
|
||||
return pLatch;
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Creates inverter and returns its net.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
Abc_Obj_t * Ver_ParseCreateInv( Abc_Ntk_t * pNtk, Abc_Obj_t * pNet )
|
||||
{
|
||||
Abc_Obj_t * pObj;
|
||||
pObj = Abc_NtkCreateNodeInv( pNtk, pNet );
|
||||
pNet = Abc_NtkCreateObj( pNtk, ABC_OBJ_NET );
|
||||
Abc_ObjAddFanin( pNet, pObj );
|
||||
return pNet;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
/// END OF FILE ///
|
||||
|
|
|
|||
|
|
@ -83,6 +83,11 @@ void * Ver_FormulaParser( char * pFormula, void * pMan, Vec_Ptr_t * vNames, Vec_
|
|||
Vec_PtrClear( vStackFn );
|
||||
Vec_IntClear( vStackOp );
|
||||
|
||||
if ( !strcmp(pFormula, "0") || !strcmp(pFormula, "1\'b0") )
|
||||
return Hop_ManConst0(pMan);
|
||||
if ( !strcmp(pFormula, "1") || !strcmp(pFormula, "1\'b1") )
|
||||
return Hop_ManConst1(pMan);
|
||||
|
||||
// make sure that the number of opening and closing parantheses is the same
|
||||
nParans = 0;
|
||||
for ( pTemp = pFormula; *pTemp; pTemp++ )
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ char * Ver_ParseGetName( Ver_Man_t * pMan )
|
|||
Ver_Stream_t * p = pMan->pReader;
|
||||
char Symbol;
|
||||
char * pWord;
|
||||
pMan->fNameLast = 0;
|
||||
if ( !Ver_StreamIsOkey(p) )
|
||||
return NULL;
|
||||
if ( !Ver_ParseSkipComments( pMan ) )
|
||||
|
|
@ -97,6 +98,7 @@ char * Ver_ParseGetName( Ver_Man_t * pMan )
|
|||
Symbol = Ver_StreamScanChar( p );
|
||||
if ( Symbol == '\\' )
|
||||
{
|
||||
pMan->fNameLast = 1;
|
||||
Ver_StreamPopChar( p );
|
||||
pWord = Ver_StreamGetWord( p, " " );
|
||||
}
|
||||
|
|
|
|||
|
|
@ -279,6 +279,9 @@ char Ver_StreamPopChar( Ver_Stream_t * p )
|
|||
p->fStop = 1;
|
||||
return -1;
|
||||
}
|
||||
// count the lines
|
||||
if ( *p->pBufferCur == '\n' )
|
||||
p->nLineCounter++;
|
||||
return *p->pBufferCur++;
|
||||
}
|
||||
|
||||
|
|
@ -359,6 +362,9 @@ void Ver_StreamSkipToChars( Ver_Stream_t * p, char * pCharsToStop )
|
|||
if ( *pTemp == 0 ) // pChar is not found in the list
|
||||
continue;
|
||||
// the symbol is found - move position and return
|
||||
if ( *pChar == '\n' )
|
||||
p->nLineCounter--;
|
||||
// update buffer
|
||||
p->pBufferCur = pChar;
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue