Skip to content

Commit

Permalink
version 0.0.6.0
Browse files Browse the repository at this point in the history
  • Loading branch information
luw002 committed Jul 15, 2019
0 parents commit c8354c0
Show file tree
Hide file tree
Showing 367 changed files with 186,662 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
*.o

build
build/*.*
Makefile
226 changes: 226 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,226 @@
cmake_minimum_required(VERSION 3.1)

project(TritonRoute
LANGUAGES CXX
)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)


if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7)
message(FATAL_ERROR "TritonRoute requires GCC 7 and above! \nuse -DCMAKE_CXX_COMPILER to assign your compiler path")
endif()


set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb")
set(CMAKE_CXX_FLAGS_RELEASE "-O3")

set(THREADS_PREFER_PTHREAD_FLAG ON)

set(FLEXROUTE_HOME ${PROJECT_SOURCE_DIR} )

set(DEFLIB_HOME
${PROJECT_SOURCE_DIR}/module/def/5.8-p029
)
set(LEFLIB_HOME
${PROJECT_SOURCE_DIR}/module/lef/5.8-p029
)

## include subdirectories
add_subdirectory(${DEFLIB_HOME})
add_subdirectory(${LEFLIB_HOME})


## configure settings
find_package(ZLIB REQUIRED)
find_package(BISON REQUIRED)

find_package(Boost 1.68.0 REQUIRED)
find_package(Threads REQUIRED)

set (FLEXROUTE_SRC
${FLEXROUTE_HOME}/src/global.cpp
${FLEXROUTE_HOME}/src/drc/frDRC_util.cpp
${FLEXROUTE_HOME}/src/drc/frDRC_setup.cpp
${FLEXROUTE_HOME}/src/drc/frDRC_init.cpp
${FLEXROUTE_HOME}/src/drc/frDRC_main.cpp
${FLEXROUTE_HOME}/src/io/io_guide.cpp
${FLEXROUTE_HOME}/src/io/frAPG.cpp
${FLEXROUTE_HOME}/src/io/io_parser_helper.cpp
${FLEXROUTE_HOME}/src/io/io.cpp
${FLEXROUTE_HOME}/src/io/defw.cpp
${FLEXROUTE_HOME}/src/io/io_pin.cpp
${FLEXROUTE_HOME}/src/io/frPinPrep.cpp
${FLEXROUTE_HOME}/src/io/frShapeUtil.cpp
${FLEXROUTE_HOME}/src/dr/FlexGridGraph.cpp
${FLEXROUTE_HOME}/src/dr/FlexGridGraph_maze.cpp
${FLEXROUTE_HOME}/src/dr/FlexDR.cpp
${FLEXROUTE_HOME}/src/dr/FlexDR_maze.cpp
${FLEXROUTE_HOME}/src/dr/FlexDR_end.cpp
${FLEXROUTE_HOME}/src/dr/FlexDR_init.cpp
${FLEXROUTE_HOME}/src/dr/FlexDR_conn.cpp
${FLEXROUTE_HOME}/src/dr/FlexDR_rq.cpp
${FLEXROUTE_HOME}/src/FlexRoute.cpp
${FLEXROUTE_HOME}/src/ta/FlexTA_rq.cpp
${FLEXROUTE_HOME}/src/ta/FlexTA_assign.cpp
${FLEXROUTE_HOME}/src/ta/FlexTA_end.cpp
${FLEXROUTE_HOME}/src/ta/FlexTA_init.cpp
${FLEXROUTE_HOME}/src/ta/FlexTA.cpp
${FLEXROUTE_HOME}/src/frRegionQuery.cpp
${FLEXROUTE_HOME}/src/utility.cpp
${FLEXROUTE_HOME}/src/main.cpp
${FLEXROUTE_HOME}/src/db/obj/frInst.cpp
${FLEXROUTE_HOME}/src/db/obj/frPin.cpp
${FLEXROUTE_HOME}/src/db/obj/frShape.cpp
${FLEXROUTE_HOME}/src/db/obj/frVia.cpp
${FLEXROUTE_HOME}/src/db/taObj/taTrack.cpp
${FLEXROUTE_HOME}/src/db/taObj/taShape.cpp
${FLEXROUTE_HOME}/src/db/infra/frBox.cpp
${FLEXROUTE_HOME}/src/db/infra/frTime.cpp
${FLEXROUTE_HOME}/src/db/infra/frTime_helper.cpp
${FLEXROUTE_HOME}/src/db/infra/frPoint.cpp
${FLEXROUTE_HOME}/src/db/drObj/drVia.cpp
${FLEXROUTE_HOME}/src/db/drObj/drShape.cpp
)


set (FLEXROUTE_HEADER
${FLEXROUTE_HOME}/src/drc/frDRC.h
${FLEXROUTE_HOME}/src/FlexRoute.h
${FLEXROUTE_HOME}/src/io/frGuidePrep.h
${FLEXROUTE_HOME}/src/io/frAPG.h
${FLEXROUTE_HOME}/src/io/frPinPrep.h
${FLEXROUTE_HOME}/src/io/io.h
${FLEXROUTE_HOME}/src/io/frShapeUtil.h
${FLEXROUTE_HOME}/src/io/frUtil.h
${FLEXROUTE_HOME}/src/frRegionQuery.h
${FLEXROUTE_HOME}/src/frDesign.h
${FLEXROUTE_HOME}/src/frBaseTypes.h
${FLEXROUTE_HOME}/src/dr/FlexDR.h
${FLEXROUTE_HOME}/src/dr/FlexGridGraph.h
${FLEXROUTE_HOME}/src/dr/FlexWavefront.h
${FLEXROUTE_HOME}/src/dr/FlexRegionQuery.h
${FLEXROUTE_HOME}/src/dr/FlexMazeTypes.h
${FLEXROUTE_HOME}/src/ta/FlexTA.h
${FLEXROUTE_HOME}/src/FlexAccessPattern.h
${FLEXROUTE_HOME}/src/global.h
${FLEXROUTE_HOME}/src/db/obj/frTrackPattern.h
${FLEXROUTE_HOME}/src/db/obj/frPin.h
${FLEXROUTE_HOME}/src/db/obj/frInstTerm.h
${FLEXROUTE_HOME}/src/db/obj/frMarker.h
${FLEXROUTE_HOME}/src/db/obj/frRef.h
${FLEXROUTE_HOME}/src/db/obj/frFig.h
${FLEXROUTE_HOME}/src/db/obj/frTerm.h
${FLEXROUTE_HOME}/src/db/obj/frBoundary.h
${FLEXROUTE_HOME}/src/db/obj/frBlock.h
${FLEXROUTE_HOME}/src/db/obj/frVia.h
${FLEXROUTE_HOME}/src/db/obj/frInst.h
${FLEXROUTE_HOME}/src/db/obj/frShape.h
${FLEXROUTE_HOME}/src/db/obj/frGuide.h
${FLEXROUTE_HOME}/src/db/obj/frBlockObject.h
${FLEXROUTE_HOME}/src/db/obj/frInstBlockage.h
${FLEXROUTE_HOME}/src/db/obj/frNet.h
${FLEXROUTE_HOME}/src/db/obj/frBlockage.h
${FLEXROUTE_HOME}/src/db/obj/frCMap.h
${FLEXROUTE_HOME}/src/db/taObj/taShape.h
${FLEXROUTE_HOME}/src/db/taObj/taFig.h
${FLEXROUTE_HOME}/src/db/taObj/taVia.h
${FLEXROUTE_HOME}/src/db/taObj/taTrack.h
${FLEXROUTE_HOME}/src/db/taObj/taBlockObject.h
${FLEXROUTE_HOME}/src/db/taObj/taPin.h
${FLEXROUTE_HOME}/src/db/infra/frBox.h
${FLEXROUTE_HOME}/src/db/infra/frOrient.h
${FLEXROUTE_HOME}/src/db/infra/frPrefRoutingDir.h
${FLEXROUTE_HOME}/src/db/infra/frSegStyle.h
${FLEXROUTE_HOME}/src/db/infra/frTime.h
${FLEXROUTE_HOME}/src/db/infra/frPoint.h
${FLEXROUTE_HOME}/src/db/infra/frTransform.h
${FLEXROUTE_HOME}/src/db/tech/frTechObject.h
${FLEXROUTE_HOME}/src/db/tech/frConstraint.h
${FLEXROUTE_HOME}/src/db/tech/frLayer.h
${FLEXROUTE_HOME}/src/db/tech/frLookupTbl.h
${FLEXROUTE_HOME}/src/db/tech/frViaRuleGenerate.h
${FLEXROUTE_HOME}/src/db/tech/frViaDef.h
${FLEXROUTE_HOME}/src/db/drObj/drBlockObject.h
${FLEXROUTE_HOME}/src/db/drObj/drNet.h
${FLEXROUTE_HOME}/src/db/drObj/drFig.h
${FLEXROUTE_HOME}/src/db/drObj/drVia.h
${FLEXROUTE_HOME}/src/db/drObj/drMarker.h
${FLEXROUTE_HOME}/src/db/drObj/drShape.h
${FLEXROUTE_HOME}/src/db/drObj/drRef.h
${FLEXROUTE_HOME}/src/db/drObj/drAccessPattern.h
${FLEXROUTE_HOME}/src/db/drObj/drPin.h
)

############################################################
# include directories
############################################################
include_directories(
${BOOST_INCLUDEDIR}
${BOOST_ROOT}/include

${DEFLIB_HOME}/def
${DEFLIB_HOME}/defzlib
${DEFLIB_HOME}/cdef
${DEFLIB_HOME}/cdefzlib

${LEFLIB_HOME}/lef
${LEFLIB_HOME}/lefzlib
${LEFLIB_HOME}/clef
${LEFLIB_HOME}/clefzlib

${FLEXROUTE_HOME}/src
)

############################################################
# Create a library
############################################################
add_library( flexroutelib STATIC
${FLEXROUTE_SRC}
)

set_target_properties( flexroutelib
PROPERTIES OUTPUT_NAME "flexroute"
)

############################################################
# Create an executable
############################################################
add_executable( TritonRoute
${FLEXROUTE_SRC}
)

add_dependencies( TritonRoute def )
add_dependencies( TritonRoute lef )

add_dependencies( flexroutelib def )
add_dependencies( flexroutelib lef )

target_link_libraries( TritonRoute
PUBLIC
def
#defzlib
#cdef
#cdefzlib
lef
#lefzlib
#clef
#clefzlib

${ZLIB_LIBRARIES}
Threads::Threads
-static
)

############################################################
# Install
############################################################

install(FILES ${FLEXROUTE_HEADER} DESTINATION include)
install(TARGETS TritonRoute DESTINATION bin)
install(TARGETS TritonRoute DESTINATION lib)


58 changes: 58 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
BSD 3-Clause License

Copyright (c) 2019, The Regents of the University of California
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

THIRD-PARTY SOFTWARE NOTICES AND INFORMATION
================================================
Physical Memory Use
====
Author: David Robert Nadeau
Site: http://NadeauSoftware.com/
License: Creative Commons Attribution 3.0 Unported License
http://creativecommons.org/licenses/by/3.0/deed.en_US
================================================

================================================
LEF/DEF v5.8 and Above Toolkit
====
Copyright 2012 - 2017, Cadence Design Systems

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
================================================


57 changes: 57 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# TritonRoute
**TritonRoute** is an open source detailed router for modern industrial
designs. The router consists of several main building blocks, including
track assignment, initial detailed routing, search and repair, and a DRC
engine. The initial development of the
[router](https://vlsicad.ucsd.edu/Publications/Conferences/363/c363.pdf)
is inspired by the
[ISPD-2018 initial detailed routing contest](http://www.ispd.cc/contests/18/).
However, the current framework differs and is built from scratch, aiming
for an industrial-oriented scalable and flexible flow. Currently, the router
only has a limited support of block-level designs with standard cells and
macros for CLN65LP.

TritonRoute was developed by graduate students Lutong Wang and Bangqi Xu from
UC San Diego, and serves as the detailed router in the
[OpenROAD](https://theopenroadproject.org/) project.

TritonRoute provides industry standard LEF/DEF interface with
support of [ISPD-2018](http://www.ispd.cc/contests/18/) and
[ISPD-2019](http://www.ispd.cc/contests/19/) contest-compatible route guide
format.

## Installation ##
TritonRoute is tested in 64-bit CentOS 6/7 environments with the following
prerequisites:
* A compatible C++ compiler supporting C++17 (GCC 7 and above)
* Boost >= 1.68.0
* Bison >= 3.0.4
* zlib >= 1.2.7
* CMake >= 3.1

To install TritonRoute:
```
$ git clone https://github.com/The-OpenROAD-Project/TritonRoute.git
$ cd TritonRoute
$ mkdir build
$ cd build
$ cmake -DBOOST_ROOT=<BOOST_ROOT> ../
$ make
```

To run TritonRoute:
```
$ ./TritonRoute -lef <LEF_FILE> -def <DEF_FILE> -guide <GUIDE_FILE> -output <OUTPUT_DEF>
```

## Supported Technologies ##
* CLN65LP (with limited selection of standard cells, macros and floorplans)
* (TritonRoute is under a major improvement plan for a more robust and stable
flow, with support of more standard cells, macros and floorplans in CLN65LP
and other technology nodes. The next version is expected to deliver support
of publicly accessible ISPD-2018 and ISPD-2019 testcases.)


## License ##
* [BSD 3-clause License](LICENSE)

23 changes: 23 additions & 0 deletions module/def/5.8-p029/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
bin/
bin/defdiff
bin/defrw
bin/defwrite
bin/lefdefdiff
def/*.output
def/*.tab.h
def/*.tab.cpp
defdiff/defdiff
defrw/defrw
defwrite/defwrite
defzlib/*.a
include/*.h
include/*.hpp
lib/*.a
*.a
**/*.a

Makefile
CMakeCache.txt
*.cmake
CMakeFiles
install_manifest.txt
Loading

0 comments on commit c8354c0

Please sign in to comment.