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}
|
In Anabatic, correctly set the wire width according to the routing gauge.
* New: Anabatic::AutoContact::setLayerAndWidth() to set both layer and
VIA width/side according to the RoutingGauge. If the delta in zero,
use the metal gauge, and the VIA gauge otherwise.
* Bug: In Anabatic::AutoContactTerminal, Anabatic::AutoContactTurn,
Anabatic::AutoContactHTee & Anabatic::AutoContactVTee, in the
updateTopology() method, set both the layer and the VIA with when
there is a change of layer. Note that this default size may be
overriden later by updateSeize() in the case of non-default width
segments.
* New: In Anabatic::AutoSegment, new overload setLayer(size_t) to set
both layer and segment with according to the routing gauge.
* Bug: In Anabatic::AutoHorizontal and Anabatic::AutoVertical, in method
_makeDogleg(), make use of the new setLayer() to correctly set up
the wire width.
Idem for Anabatic::AutoSegment::changeDepth() and ::makeDogleg(),
and in Anabatic::LayerAssign.
2019-02-12 05:43:09 -06:00
|
|
|
${FLUTE_INCLUDE_DIR}
|
2016-05-23 09:15:25 -05:00
|
|
|
${Boost_INCLUDE_DIRS}
|
|
|
|
${QtX_INCLUDE_DIR}
|
|
|
|
${PYTHON_INCLUDE_PATH}
|
|
|
|
)
|
|
|
|
set( includes anabatic/Constants.h
|
|
|
|
anabatic/Configuration.h
|
|
|
|
anabatic/Matrix.h
|
2018-02-20 17:16:50 -06:00
|
|
|
anabatic/EdgeCapacity.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
|
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
|
2017-12-16 17:13:19 -06:00
|
|
|
anabatic/NetBuilder.h
|
2017-12-18 11:15:14 -06:00
|
|
|
anabatic/NetBuilderM2.h
|
2017-12-16 17:13:19 -06:00
|
|
|
anabatic/NetBuilderHV.h
|
In Anabatic/Katana, add support for VH gauges (real technos).
* Change: In Anabatic::AutoContactTerminal::getNativeConstraintBox(),
when the anchor is a RoutingPad (which must be always the case),
perform the true computation of it's position based on the
segment occurrence. It is a important change, previously the
area was in fact the "center line" of the connector while now
it is really an area (mandatory for "half-offgrid" terminals of
real technologies).
The change is not complete yet, the area should be shrinked
by the half size of a VIA, because the area applies to the center
coordinate of the VIA (to be done quickly).
* Bug: In Anabatic::AutoContactTurn::updateTopology(), when a dogleg
is created (restore connexity after a layer change) the layer of
the VIA, based on the segments it connects to must be re-computed
*after* the dogleg has been made.
* Change: In all files of Anabatic, when comparing two layers, no longer
use the Layer pointer itself, but the layer mask. This allow a
transparent management of both real and symbolic layers (which
do share the same mask). Real metal layers (not VIAs) will be
BasicLayer and symbolic metal layers will be RegularLayer.
* New: Anabatic::Configuration::selectRpComponent(), select the best
RoutingPad component for metal1 terminals. Look for the metal1
component with the biggest accessibility on-grid.
RoutingPad using other metals are left untoucheds.
* New: New function Anabatic::Vertex::getNeighbor(Edge*) to get the
neighbor Vertex through an Edge*. This method allows to write
clearer code as we no longer need to access the neighbor through
the underlying GCell.
Also add proxies for GCell methods in Vertex.
* Bug: In Anabatic::Dijkstra::_toSources(), in the ripup stage, when
a component with multiples vertexes is reached *and* two of it's
vertexes are reached *at the same time* (one from which we backtrack
and one still in the queue) extraneous edges may be created by
_materialize(). Case occurs on snx/c35b4, "abc_5360_n903_1".
To solve this, Dijkstra::_toSource() is modificated, the "from"
edges of the newly reacheds vertexes are reset to NULL, *except*
for the one we will be backtracking from. That is, the one given
in the source argument.
* Change: In Anabatic::NetBuilder class, put the various Hooks and
RoutingPad sorting functions as class ones.
* Bug: In AutoSegment::setLayer(), raise the SegInvalidatedFayer flag.
This unset flag was causing AutoContactTurn::updateTopology()
to not work as expected and making gaps, this was the cause of
the last remaining warnings about layer connexity.
2018-01-06 09:55:53 -06:00
|
|
|
anabatic/NetBuilderVH.h
|
2016-07-21 17:14:17 -05:00
|
|
|
anabatic/ChipTools.h
|
2016-05-23 09:15:25 -05:00
|
|
|
)
|
2016-09-07 04:21:36 -05:00
|
|
|
set( pyIncludes )
|
2016-05-23 09:15:25 -05:00
|
|
|
set( cpps Constants.cpp
|
|
|
|
Configuration.cpp
|
|
|
|
Matrix.cpp
|
2018-02-20 17:16:50 -06:00
|
|
|
EdgeCapacity.cpp
|
2016-05-23 09:15:25 -05:00
|
|
|
Edge.cpp
|
2016-05-30 04:30:29 -05:00
|
|
|
Edges.cpp
|
2016-05-23 09:15:25 -05:00
|
|
|
GCell.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
|
2017-12-16 17:13:19 -06:00
|
|
|
NetBuilder.cpp
|
2017-12-18 11:15:14 -06:00
|
|
|
NetBuilderM2.cpp
|
2017-12-16 17:13:19 -06:00
|
|
|
NetBuilderHV.cpp
|
In Anabatic/Katana, add support for VH gauges (real technos).
* Change: In Anabatic::AutoContactTerminal::getNativeConstraintBox(),
when the anchor is a RoutingPad (which must be always the case),
perform the true computation of it's position based on the
segment occurrence. It is a important change, previously the
area was in fact the "center line" of the connector while now
it is really an area (mandatory for "half-offgrid" terminals of
real technologies).
The change is not complete yet, the area should be shrinked
by the half size of a VIA, because the area applies to the center
coordinate of the VIA (to be done quickly).
* Bug: In Anabatic::AutoContactTurn::updateTopology(), when a dogleg
is created (restore connexity after a layer change) the layer of
the VIA, based on the segments it connects to must be re-computed
*after* the dogleg has been made.
* Change: In all files of Anabatic, when comparing two layers, no longer
use the Layer pointer itself, but the layer mask. This allow a
transparent management of both real and symbolic layers (which
do share the same mask). Real metal layers (not VIAs) will be
BasicLayer and symbolic metal layers will be RegularLayer.
* New: Anabatic::Configuration::selectRpComponent(), select the best
RoutingPad component for metal1 terminals. Look for the metal1
component with the biggest accessibility on-grid.
RoutingPad using other metals are left untoucheds.
* New: New function Anabatic::Vertex::getNeighbor(Edge*) to get the
neighbor Vertex through an Edge*. This method allows to write
clearer code as we no longer need to access the neighbor through
the underlying GCell.
Also add proxies for GCell methods in Vertex.
* Bug: In Anabatic::Dijkstra::_toSources(), in the ripup stage, when
a component with multiples vertexes is reached *and* two of it's
vertexes are reached *at the same time* (one from which we backtrack
and one still in the queue) extraneous edges may be created by
_materialize(). Case occurs on snx/c35b4, "abc_5360_n903_1".
To solve this, Dijkstra::_toSource() is modificated, the "from"
edges of the newly reacheds vertexes are reset to NULL, *except*
for the one we will be backtracking from. That is, the one given
in the source argument.
* Change: In Anabatic::NetBuilder class, put the various Hooks and
RoutingPad sorting functions as class ones.
* Bug: In AutoSegment::setLayer(), raise the SegInvalidatedFayer flag.
This unset flag was causing AutoContactTurn::updateTopology()
to not work as expected and making gaps, this was the cause of
the last remaining warnings about layer connexity.
2018-01-06 09:55:53 -06:00
|
|
|
NetBuilderVH.cpp
|
2016-07-21 17:14:17 -05:00
|
|
|
ChipTools.cpp
|
|
|
|
LayerAssign.cpp
|
|
|
|
PreRouteds.cpp
|
2017-12-16 17:13:19 -06:00
|
|
|
AnabaticEngine.cpp
|
2016-05-23 09:15:25 -05:00
|
|
|
)
|
2016-09-07 04:21:36 -05:00
|
|
|
set( pyCpps PyAnabatic.cpp
|
2016-05-23 09:15:25 -05:00
|
|
|
)
|
|
|
|
|
|
|
|
set( depLibs ${CORIOLIS_PYTHON_LIBRARIES}
|
|
|
|
${CORIOLIS_LIBRARIES}
|
|
|
|
${HURRICANE_PYTHON_LIBRARIES}
|
|
|
|
${HURRICANE_GRAPHICAL_LIBRARIES}
|
|
|
|
${HURRICANE_LIBRARIES}
|
|
|
|
${CONFIGURATION_LIBRARY}
|
|
|
|
${CIF_LIBRARY}
|
|
|
|
${AGDS_LIBRARY}
|
In Anabatic, correctly set the wire width according to the routing gauge.
* New: Anabatic::AutoContact::setLayerAndWidth() to set both layer and
VIA width/side according to the RoutingGauge. If the delta in zero,
use the metal gauge, and the VIA gauge otherwise.
* Bug: In Anabatic::AutoContactTerminal, Anabatic::AutoContactTurn,
Anabatic::AutoContactHTee & Anabatic::AutoContactVTee, in the
updateTopology() method, set both the layer and the VIA with when
there is a change of layer. Note that this default size may be
overriden later by updateSeize() in the case of non-default width
segments.
* New: In Anabatic::AutoSegment, new overload setLayer(size_t) to set
both layer and segment with according to the routing gauge.
* Bug: In Anabatic::AutoHorizontal and Anabatic::AutoVertical, in method
_makeDogleg(), make use of the new setLayer() to correctly set up
the wire width.
Idem for Anabatic::AutoSegment::changeDepth() and ::makeDogleg(),
and in Anabatic::LayerAssign.
2019-02-12 05:43:09 -06:00
|
|
|
${FLUTE_LIBRARIES}
|
2016-05-23 09:15:25 -05:00
|
|
|
${LEFDEF_LIBRARIES}
|
|
|
|
${OA_LIBRARIES}
|
|
|
|
${QtX_LIBRARIES}
|
|
|
|
${Boost_LIBRARIES}
|
|
|
|
${LIBXML2_LIBRARIES}
|
|
|
|
${PYTHON_LIBRARIES} -lutil
|
|
|
|
)
|
|
|
|
|
2016-09-07 04:21:36 -05:00
|
|
|
add_library( anabatic ${cpps} )
|
2016-05-23 09:15:25 -05:00
|
|
|
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
|
|
|
|
)
|
|
|
|
|
2016-09-07 04:21:36 -05:00
|
|
|
install( TARGETS anabatic DESTINATION lib${LIB_SUFFIX} )
|
|
|
|
install( FILES ${includes} DESTINATION include/coriolis2/anabatic )
|
2016-05-23 09:15:25 -05:00
|
|
|
|