coriolis/kite/src/CMakeLists.txt

112 lines
5.8 KiB
CMake
Raw Normal View History

include ( ${QT_USE_FILE} )
include_directories ( ${KITE_SOURCE_DIR}/src
${CORIOLIS_INCLUDE_DIR}
${HURRICANE_INCLUDE_DIR}
${CONFIGURATION_INCLUDE_DIR}
${Boost_INCLUDE_DIRS}
${PYTHON_INCLUDE_PATH}
)
set ( includes kite/TrackSegmentCost.h
kite/TrackCost.h
kite/DataNegociate.h
kite/TrackElement.h kite/TrackElements.h
kite/TrackSegment.h
kite/TrackFixedSegment.h
kite/TrackMarker.h
kite/Track.h
kite/Tracks.h
kite/HorizontalTrack.h
kite/VerticalTrack.h
kite/Session.h
kite/RoutingEvent.h
kite/RoutingEventQueue.h
kite/RoutingEventHistory.h
* ./Kite: - New: In BuildPowerRails, special processing for the power ring segments. The "diagonal" of vias at each corner is causing a misbehavior of the routing algorithm (due to fully saturated GCells in one direction). As a temporary fix, extend the segments so they form a "square corner". (problem arise on "d_in_i(22)"). - New: In RoutingEvent::_processNegociate, disable the "isForcedToHint()" feature. No noticeable loss of quality or speed. - New: In TrackElement/TrackSegment, wraps the AutoSegment parent's mechanism. Allows to gets the DataNegociate of either the segment or it's parent. - New: State::solveFullBlockages(), dedicated method to solves the case when all the allowed tracks of a segment are blocked, tries to moves up local segments and to break-up global ones. - New: RoutingEventLoop, a more sophisticated way to detect looping. Maintain a dynamic histogram of the last N (default 10) segments routeds, with the count of how many times they have occurred. If that count exeed 40, we *may* be facing a loop. - Change: In State::conflictSolve1, implement new policy. The global segments no more can be broken by local ones. The idea behind is that breaking a global on the request of a local will only produce more cluttering in the GCell. Globals must be keep straigth pass through, especially inside near-saturated GCells. Globals breaking however can occurs at another global's request. - Change: In TrackCost, implement the new policy about locals segments that cannot break globals segments. The sorting class now accept flags to modulate the sorting function. Two options avalaibles: IgnoreAxisWeigth (to uses for strap segments) and DiscardGlobals (to uses with locals). - Change: In TrackCost, the "distance to fixed" have now an upper bound of 50 lambdas (no need to be greater because it means it's outside the begin & en GCells). Take account not only of fixed segment, but also of placed segments which makes bound. - Bug: In Track::_check(), while calling each individual TrackSegment check, uses it as the *first* argument of the "or", otherwise it may not be called. - Bug: In ProtectRoutingPad, loop over segment Collections while modificating it was producing non-deterministic results. The fact that a collection must be not modificated while beeing iterated is becoming a more and more painful problem.
2010-12-30 12:42:17 -06:00
kite/RoutingEventLoop.h
kite/RoutingPlane.h
kite/NegociateWindow.h
kite/Configuration.h
kite/KiteEngine.h
kite/GraphicKiteEngine.h
)
set ( pyIncludes kite/PyKiteEngine.h
kite/PyGraphicKiteEngine.h
)
set ( mocIncludes kite/GraphicKiteEngine.h )
set ( cpps TrackSegmentCost.cpp
TrackCost.cpp
DataNegociate.cpp
TrackElement.cpp
TrackElements.cpp
TrackSegment.cpp
TrackFixedSegment.cpp
TrackMarker.cpp
Track.cpp
Tracks.cpp
HorizontalTrack.cpp
VerticalTrack.cpp
Session.cpp
RoutingEvent.cpp
RoutingEventQueue.cpp
RoutingEventHistory.cpp
* ./Kite: - New: In BuildPowerRails, special processing for the power ring segments. The "diagonal" of vias at each corner is causing a misbehavior of the routing algorithm (due to fully saturated GCells in one direction). As a temporary fix, extend the segments so they form a "square corner". (problem arise on "d_in_i(22)"). - New: In RoutingEvent::_processNegociate, disable the "isForcedToHint()" feature. No noticeable loss of quality or speed. - New: In TrackElement/TrackSegment, wraps the AutoSegment parent's mechanism. Allows to gets the DataNegociate of either the segment or it's parent. - New: State::solveFullBlockages(), dedicated method to solves the case when all the allowed tracks of a segment are blocked, tries to moves up local segments and to break-up global ones. - New: RoutingEventLoop, a more sophisticated way to detect looping. Maintain a dynamic histogram of the last N (default 10) segments routeds, with the count of how many times they have occurred. If that count exeed 40, we *may* be facing a loop. - Change: In State::conflictSolve1, implement new policy. The global segments no more can be broken by local ones. The idea behind is that breaking a global on the request of a local will only produce more cluttering in the GCell. Globals must be keep straigth pass through, especially inside near-saturated GCells. Globals breaking however can occurs at another global's request. - Change: In TrackCost, implement the new policy about locals segments that cannot break globals segments. The sorting class now accept flags to modulate the sorting function. Two options avalaibles: IgnoreAxisWeigth (to uses for strap segments) and DiscardGlobals (to uses with locals). - Change: In TrackCost, the "distance to fixed" have now an upper bound of 50 lambdas (no need to be greater because it means it's outside the begin & en GCells). Take account not only of fixed segment, but also of placed segments which makes bound. - Bug: In Track::_check(), while calling each individual TrackSegment check, uses it as the *first* argument of the "or", otherwise it may not be called. - Bug: In ProtectRoutingPad, loop over segment Collections while modificating it was producing non-deterministic results. The fact that a collection must be not modificated while beeing iterated is becoming a more and more painful problem.
2010-12-30 12:42:17 -06:00
RoutingEventLoop.cpp
RoutingPlane.cpp
BuildPowerRails.cpp
ProtectRoutingPads.cpp
PreProcess.cpp
NegociateWindow.cpp
Configuration.cpp
KiteEngine.cpp
GraphicKiteEngine.cpp
)
set ( pyCpps PyKite.cpp
PyKiteEngine.cpp
PyGraphicKiteEngine.cpp
)
set ( kitecpps KiteMain.cpp )
qt4_wrap_cpp ( mocCpps ${mocIncludes} )
add_library ( kite ${cpps} ${mocCpps} ${pyCpps} )
set_target_properties ( kite PROPERTIES VERSION 1.0 SOVERSION 1 )
target_link_libraries ( kite ${KATABATIC_LIBRARIES}
${KNIK_LIBRARIES}
${NIMBUS_LIBRARIES}
${CORIOLIS_LIBRARIES}
${HURRICANE_PYTHON_LIBRARIES}
${HURRICANE_GRAPHICAL_LIBRARIES}
${HURRICANE_LIBRARIES}
${CONFIGURATION_LIBRARY}
${BOOKSHELF_LIBRARY}
${CIF_LIBRARY}
${AGDS_LIBRARY}
${LEFDEF_LIBRARIES}
${OA_LIBRARIES}
${QT_LIBRARIES}
${Boost_LIBRARIES}
${LIBXML2_LIBRARIES}
${PYTHON_LIBRARIES} -lutil
${LIBEXECINFO_LIBRARIES}
)
add_library ( pyKite MODULE ${pyCpps} )
set_target_properties ( pyKite PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} -D__PYTHON_MODULE__=1"
PREFIX ""
OUTPUT_NAME "Kite"
)
add_executable ( kite.bin ${kitecpps} )
target_link_libraries ( kite.bin kite )
target_link_libraries ( pyKite kite
${CORIOLIS_PYTHON_LIBRARIES}
)
install ( TARGETS kite DESTINATION lib${LIB_SUFFIX} )
install ( TARGETS kite.bin DESTINATION bin )
install ( TARGETS pyKite DESTINATION ${PYTHON_SITE_PACKAGES} )
install ( FILES ${includes}
${mocIncludes}
${pyIncludes} DESTINATION include/coriolis2/kite )