2016-05-23 09:15:25 -05:00
|
|
|
# -*- explicit-buffer-name: "CMakeLists.txt<anabatic/src>" -*-
|
|
|
|
|
|
|
|
if ( CHECK_DETERMINISM )
|
|
|
|
add_definitions ( -DCHECK_DETERMINISM )
|
|
|
|
endif ( CHECK_DETERMINISM )
|
|
|
|
|
|
|
|
include_directories( ${ANABATIC_SOURCE_DIR}/src
|
|
|
|
${CORIOLIS_INCLUDE_DIR}
|
|
|
|
${HURRICANE_INCLUDE_DIR}
|
|
|
|
${CONFIGURATION_INCLUDE_DIR}
|
|
|
|
${Boost_INCLUDE_DIRS}
|
|
|
|
${QtX_INCLUDE_DIR}
|
|
|
|
${PYTHON_INCLUDE_PATH}
|
|
|
|
)
|
|
|
|
set( includes anabatic/Constants.h
|
|
|
|
anabatic/Configuration.h
|
|
|
|
anabatic/Matrix.h
|
2016-05-30 04:30:29 -05:00
|
|
|
anabatic/Edge.h anabatic/Edges.h
|
2016-05-23 09:15:25 -05:00
|
|
|
anabatic/GCell.h #anabatic/GCells.h
|
|
|
|
anabatic/AnabaticEngine.h
|
|
|
|
anabatic/GraphicAnabaticEngine.h
|
2016-05-30 04:30:29 -05:00
|
|
|
anabatic/Dijkstra.h
|
2016-07-18 07:48:37 -05:00
|
|
|
|
|
|
|
anabatic/AutoContact.h
|
|
|
|
anabatic/AutoContactTerminal.h
|
|
|
|
anabatic/AutoContactTurn.h
|
|
|
|
anabatic/AutoContactHTee.h
|
|
|
|
anabatic/AutoContactVTee.h
|
|
|
|
anabatic/AutoSegment.h anabatic/AutoSegments.h
|
|
|
|
anabatic/AutoHorizontal.h
|
|
|
|
anabatic/AutoVertical.h
|
|
|
|
anabatic/Session.h
|
2016-05-23 09:15:25 -05:00
|
|
|
)
|
|
|
|
set( mocIncludes anabatic/GraphicAnabaticEngine.h )
|
|
|
|
set( pyIncludes anabatic/PyAnabaticEngine.h
|
|
|
|
anabatic/PyGraphicAnabaticEngine.h
|
|
|
|
)
|
|
|
|
set( cpps Constants.cpp
|
|
|
|
Configuration.cpp
|
|
|
|
Matrix.cpp
|
|
|
|
Edge.cpp
|
2016-05-30 04:30:29 -05:00
|
|
|
Edges.cpp
|
2016-05-23 09:15:25 -05:00
|
|
|
GCell.cpp
|
|
|
|
AnabaticEngine.cpp
|
Anabatic transient commit 10. Ripup & reroute support in Dijsktra.
* New: In Anabatic:
- In AnabaticEngine, keep track of overflowed edges.
- In AnabaticEngine, getNetsFromedge() to lookup all nets going
through an Edge.
- In Configuration, read the Kite "reserved local" parameter to
decrease the Edge capacity (it's a guessing of the cost of the
local routing).
- In Edge, add an attribute to know if there is an associated
segment of the current net (set by Dijkstra::_traceback()).
Transparently manage the overflowed edges.
- In GCell_Edges, correct a filtering bug when not all sides are
selecteds.
- New GCell::getEdgeTo() to find the edge between two adjacent
GCells.
- New GCell::unrefContact() to automatically removes global contacts
no longer used by any global segments (used during the ripup
step).
- In Dijkstra::load(), now able to "reload" and already partially
or completly routed net (look for Contact of "gcontact" layer
and their attached segments).
- In Dijkstra, keep the last net loaded until the next one is.
Put the cleanup operations in an isolated function "_cleanup()".
- In Dijkstra::_selectFirstsource() and run(), load first source
component made of multiple vertexes.
- In Dijkstra::_trackback(), link the Net segments to the Edges.
- New Dijkstra::ripup(), Dijkstra::_propagateRipup() to perform
the ripup of one edge of a Net (must be loaded in Dijkstra first).
Dijkstra::_tagConnecteds() setup the connexId of a set of Vertexes
- that are connecteds through edges *with* segments.
- In GraphicAnabaticengine & GlobalRoute.cpp, embryo of a global
routing tool with ripup & reroute.
2016-06-26 07:32:32 -05:00
|
|
|
GlobalRoute.cpp
|
2016-05-23 09:15:25 -05:00
|
|
|
GraphicAnabaticEngine.cpp
|
2016-05-30 04:30:29 -05:00
|
|
|
Dijkstra.cpp
|
2016-07-18 07:48:37 -05:00
|
|
|
|
|
|
|
AutoContact.cpp
|
|
|
|
AutoContactTerminal.cpp
|
|
|
|
AutoContactTurn.cpp
|
|
|
|
AutoContactHTee.cpp
|
|
|
|
AutoContactVTee.cpp
|
|
|
|
AutoSegment.cpp AutoSegments.cpp
|
|
|
|
AutoHorizontal.cpp
|
|
|
|
AutoVertical.cpp
|
|
|
|
Session.cpp
|
|
|
|
NetConstraints.cpp
|
|
|
|
NetOptimals.cpp
|
|
|
|
LoadGlobalRouting.cpp
|
2016-05-23 09:15:25 -05:00
|
|
|
)
|
|
|
|
set( pyCpps PyAnabaticEngine.cpp
|
|
|
|
PyGraphicAnabaticEngine.cpp
|
|
|
|
PyAnabatic.cpp
|
|
|
|
)
|
|
|
|
qtX_wrap_cpp( mocCpps ${mocIncludes} )
|
|
|
|
|
|
|
|
set( depLibs ${CORIOLIS_PYTHON_LIBRARIES}
|
|
|
|
${CORIOLIS_LIBRARIES}
|
|
|
|
${HURRICANE_PYTHON_LIBRARIES}
|
|
|
|
${HURRICANE_GRAPHICAL_LIBRARIES}
|
|
|
|
${HURRICANE_LIBRARIES}
|
|
|
|
${CONFIGURATION_LIBRARY}
|
|
|
|
${CIF_LIBRARY}
|
|
|
|
${AGDS_LIBRARY}
|
|
|
|
${LEFDEF_LIBRARIES}
|
|
|
|
${OA_LIBRARIES}
|
|
|
|
${QtX_LIBRARIES}
|
|
|
|
${Boost_LIBRARIES}
|
|
|
|
${LIBXML2_LIBRARIES}
|
|
|
|
${PYTHON_LIBRARIES} -lutil
|
|
|
|
)
|
|
|
|
|
|
|
|
add_library( anabatic ${cpps} ${mocCpps} )
|
|
|
|
set_target_properties( anabatic PROPERTIES VERSION 1.0 SOVERSION 1 )
|
|
|
|
target_link_libraries( anabatic ${depLibs} )
|
|
|
|
|
|
|
|
add_python_module( "${pyCpps}"
|
|
|
|
"${pyIncludes}"
|
|
|
|
"pyanabatic;1.0;1"
|
|
|
|
Anabatic
|
|
|
|
"anabatic;${depLibs}"
|
|
|
|
include/coriolis2/anabatic
|
|
|
|
)
|
|
|
|
|
|
|
|
install( TARGETS anabatic DESTINATION lib${LIB_SUFFIX} )
|
|
|
|
install( FILES ${includes}
|
|
|
|
${mocIncludes} DESTINATION include/coriolis2/anabatic )
|
|
|
|
|