iic-jku / IIC-OSIC-TOOLS

IIC-OSIC-TOOLS is an all-in-one Docker image for SKY130/GF180/IHP130-based analog and digital chip design. AMD64 and ARM64 are natively supported.
Apache License 2.0
350 stars 61 forks source link

Using OpenROAD-flow-scripts with IIC-OSIC-TOOLS #80

Open simi1505 opened 2 days ago

simi1505 commented 2 days ago

Describe the bug Since OpenROAD, Yosys, Klayout etc. are installed within the IIC-OSIC-TOOLS, I tried to run the OpenROAD-flow-scripts (ORFS) using the already installed tools.

What I did 1.) cloned the ORFS Repo to the foss/designs folder 2.) changed the env.sh file to

if [[ "$OSTYPE" == "darwin"* ]]; then
  DIR="$(dirname $(perl -e 'use Cwd "abs_path";print abs_path(shift)' "${BASH_SOURCE[0]}"))"
else
  DIR="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))"
fi

if [ -f /opt/rh/rh-python38/enable ]; then
  source /opt/rh/rh-python38/enable
fi

export OPENROAD=/foss/tools/openroad
echo "OpenROAD: ${OPENROAD}"

export OPENROAD_EXE=/foss/tools/openroad/bin/openroad
echo "OpenROAD EXE: ${OPENROAD_EXE}"

export OPENSTA_EXE=/foss/tools/openroad/bin/sta
echo "OpenSTA EXE: ${OPENSTA_EXE}"

export YOSYS_EXE=/foss/tools/yosys/bin/yosys
echo "Yosys EXE : ${YOSYS_EXE}"

export KLAYOUT_DIR=/foss/tools/klayout
echo "KLayout DIR: ${KLAYOUT_DIR}"

export PATH=/foss/tools/openroad/bin:$PATH
export PATH=/foss/tools/yosys/bin:$PATH
export PATH=${DIR}/dependencies/bin:$PATH

if [[ "$OSTYPE" == "darwin"* ]]; then
  export PATH="/Applications/KLayout/klayout.app/Contents/MacOS:$PATH"
  export PATH="$(brew --prefix bison)/bin:$(brew --prefix flex)/bin:$(brew --prefix tcl-tk)/bin:$PATH"
  export CMAKE_PREFIX_PATH="$(brew --prefix or-tools)"
fi

export FLOW_HOME=$DIR/flow

3.) selected IHP-SG13G2 gcd project in Makefile (optional)

First error After source ./env.sh and cd flow and make, the first make produced the following error:

[INFO DRT-0180] Post processing.
[WARNING GRT-0246] No diode with LEF class CORE ANTENNACELL found.
Error: detail_route.tcl, 63 expected boolean value but got ""
Command exited with non-zero status 1
Elapsed time: 0:08.40[h:]min:sec. CPU time: user 25.24 sys 0.65 (308%). Peak memory: 946496KB.
make[1]: *** [Makefile:769: do-5_2_route] Error 1
make: *** [Makefile:767: results/nangate45/gcd/base/5_2_route.odb] Error 2

Second error After searching for issues in the ORFS repo I found: https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/issues/2473 After setting set ::env(SKIP_ANTENNA_REPAIR_POST_DRT) 1 in the detail_route.tcl, I get the following error:

[INFO DRT-0180] Post processing.
[INFO ANT-0002] Found 0 net violations.
[INFO ANT-0001] Found 0 pin violations.
Error: detail_route.tcl, 73 invalid command name "design_is_routed"
Command exited with non-zero status 1
Elapsed time: 0:08.56[h:]min:sec. CPU time: user 26.48 sys 0.59 (316%). Peak memory: 957552KB.
make[1]: *** [Makefile:769: do-5_2_route] Error 1
make: *** [Makefile:767: results/nangate45/gcd/base/5_2_route.odb] Error 2

Third error After I commented out if {![design_is_routed]} {error "Design has unrouted nets."} (also suggested in the above-linked issue) the following error occurs:

==========================================================================
finish report_design_area
--------------------------------------------------------------------------
Design area 868 u^2 76% utilization.
[ERROR GUI-0070] Error: save_images.tcl, 9 Invalid method. Must be one of: configure cget -acquire -disown -delete getName getConstName getBBox getChip getDataBase getTech getParent getParentInst getTopModule getChildren findChild getBTerms findBTerm getITerms getInsts getModules getModInsts getModNets getModBTerms getPowerDomains getLogicPorts getPowerSwitches getIsolations getLevelShifters getGroups getAccessPoints getGlobalConnects globalConnect addGlobalConnect reportGlobalConnect clearGlobalConnect getComponentMaskShift setComponentMaskShift findInst findModule findModInst findPowerDomain findLogicPort findPowerSwitch findIsolation findLevelShifter findGroup findSomeInst findSomeMaster findITerm getObstructions getBlockages getNets getCapNodes getRSegs findNet findSomeNet writeDb writeGuides findVia getVias getGCellGrid getDefUnits setDefUnits getDbUnitsPerMicron dbuToMicrons dbuAreaToMicrons micronsToDbu micronsAreaToDbu getHierarchyDelimeter setBusDelimeters getBusDelimeters getExtCount copyExtDb adjustRC groundCC adjustCC undoAdjustedCC getCornerCount extCornersAreIndependent getCornersPerBlock getExtDbCount getExtCornerName getExtCornerIndex setCornerNameList getCornerNameList setCornerCount setCornersPerBlock initParasiticsValueTables createExtCornerBlock findExtCornerBlock getExtCornerBlock getTrackGrids findTrackGrid getRows getFills getMasters setDieArea getDieArea getCoreArea addBlockedRegionForPins getBlockedRegionsForPins setExtmi getExtmi getExtControl getDft getMinRoutingLayer setMinRoutingLayer getMaxRoutingLayer setMaxRoutingLayer getMinLayerForClock setMinLayerForClock getMaxLayerForClock setMaxLayerForClock getExtCornerNames getCCSegs getSearchDb destroyCCs destroyRSegs destroyCNs destroyParasitics destroyCornerParasitics getCcHaloNets destroyOldParasitics destroyOldCornerParasitics restoreOldCornerParasitics replaceOldParasitics restoreOldParasitics keepOldParasitics keepOldCornerParasitics preExttreeMergeRC clear getWireUpdatedNets getRegions findRegion findNonDefaultRule getNonDefaultRules levelize levelizeFromPrimaryInputs levelizeFromSequential markBackwardsUser2 setDrivingItermsforNets clearUserInstFlags
Error: final_report.tcl, 71 GUI-0070
Command exited with non-zero status 1
Elapsed time: 0:02.40[h:]min:sec. CPU time: user 1.09 sys 0.17 (52%). Peak memory: 207336KB.
make[1]: *** [Makefile:841: do-6_report] Error 1
make: *** [Makefile:839: logs/nangate45/gcd/base/6_report.log] Error 2

Additional context I made the issue here since this might be IIC-OSIC-TOOLS related. If not, I will open the same issue directly in the ORFS repo.

hpretl commented 2 days ago

@alpamps since you recently could run ORFS in the VM: Can you please take a look, or better yet, provide your solution?