2014-03-10 08:06:31 -05:00
|
|
|
# -*- mode: CMAKE; explicit-buffer-name: "CMakeLists.txt<documentation>" -*-
|
|
|
|
|
2014-07-13 06:14:49 -05:00
|
|
|
set(CMAKE_LEGACY_CYGWIN_WIN32 0)
|
2014-03-10 08:06:31 -05:00
|
|
|
project(DOCUMENTATION)
|
|
|
|
|
|
|
|
cmake_minimum_required(VERSION 2.4.0)
|
|
|
|
|
2017-12-02 07:30:05 -06:00
|
|
|
set(ignoreVariables "${LIB_SUFFIX}")
|
|
|
|
|
2017-07-15 10:35:02 -05:00
|
|
|
option(BUILD_DOC "Build the documentation (html+pdf)" OFF)
|
2014-03-10 08:06:31 -05:00
|
|
|
|
2014-03-15 04:47:37 -05:00
|
|
|
list(INSERT CMAKE_MODULE_PATH 0 "${DESTDIR}$ENV{CORIOLIS_TOP}/share/cmake/Modules/")
|
2014-03-10 08:06:31 -05:00
|
|
|
find_package(Bootstrap REQUIRED)
|
2018-03-08 07:55:06 -06:00
|
|
|
find_package(Sphinx)
|
2014-03-10 08:06:31 -05:00
|
|
|
setup_project_paths(CORIOLIS)
|
|
|
|
|
|
|
|
set_cmake_policies()
|
|
|
|
|
|
|
|
add_subdirectory(examples)
|
2018-03-08 07:55:06 -06:00
|
|
|
set( htmlInstallDir share/doc/coriolis2/en/html/main )
|
|
|
|
set( pdfInstallDir share/doc/coriolis2/en/pdf/main )
|
2017-10-30 09:33:37 -05:00
|
|
|
|
2018-03-08 07:55:06 -06:00
|
|
|
if(BUILD_DOC)
|
|
|
|
if(SPHINX_EXECUTABLE)
|
|
|
|
message(STATUS "Sphinx has been found, generate the documentation...")
|
Validating channel routing mode (two metals) on SNX.
* New: In Hurricane::Entity, add an id counter limit and a memory size
limit. The two limits are checked only when a new Entity object is
created. This should help avoiding massive memory links.
* New: In CRL Core, add a "crlcore.groundName" and a "crlcore.powerName"
parameter to specify the name of the ground/power signals to be
created if they are missing in a Cell. For Alliance libraries it
would be "vss" & "vdd" (default values), but for real technologies,
it is often "gnd!" & "vdd!".
The Blif parser is modificated to make use of it.
* Bug: In AnabaticEngine::unify(), set the resulting unified segment in
the center of the GCells common side. Gcells under a segment are
found by using the edge that cover the segment axis. When we have
a "bend" GCell stack and the axis is wrong, they could be ommited.
This was causing deleted segments to be not removed from some
Edges, then core dump.
* Change: In Anabatic::AutoSegment::create(), smarter choosing of the
reference contact, select the fixed or terminal one instead of
always the source one.
* New: In Anabatic::Edge::isEnding(), new function to check if a
segment going through an Edge is starting/ending in either source
or target GCell of the edge (active only when running in channel
mode).
* New: In Anabatic::Edge::add(), a segment takes part in the occupancy
only if it is not ending in either source or target (channel mode
only). The occupancy due to terminal is pre-computed in Katana.
* New: In Anabatic::Edge::ripup(), in channel mode, never ripup a
segment which is ending in either source or target (we *have* to
access this edge to connect to the terminal).
* Bug: In Anabatic::GCell::hcut() and vcut(), force the update of
the Edge which is on the side that will get splitted by the cut.
It's capacity will be reduced to it must be updated.
* Change: In Anabatic::GCell::updateGContacts() add a flag to conditionnally
update horizontals or verticals only. We may require only a partial
update when resizing the GCell in only one direction.
This, again, related to the fact that we compute the GCells under
a segment thanks to it's axis position, so we need to be very careful
when modificating axis.
* Change: In Katana::Block::resizeChannels(), only update GContact vertical
position. Do not disturb X positions of segments.
* Bug: In Katana::GlobalRoute::DigitalDistance, in channel mode, some
Edges can have a zero capacity, but still be reachable if the net has
a terminal in either source or target. Look for this case and return
a distance of zero instead of "unreachable". This was causing the
global routing not to complete in channel mode.
For computing the edge distance, makes the vertical edges much more
long (10 times) than the horizontal ones as the vertical capacity is
very limited. Hard coded for now, should make it a parameter in the
future.
* Change: In KatanaEngine::annotateGlobalGraph(), decrease the capacity
of edges with reserveCapacity for each terminal inside a GCell.
Both north and south edges are decreased as we a terminal will
block both north and south edges.
As a counterpart, the Edge capacity is not decreased when the
global router connect to a terminal.
* Change: In Katana::RoutingEvent::revalidate(), when in repair stage,
do not expand the slack for horizontal segments in channel mode.
So they may not overlap the standard cell row.
* Bug: In Stratus documentation, do not use the french option in babel,
the documentation is in english!
* New: In Documentation, added Hurricane/Python tutorial, part for drawing
layout.
2018-03-16 10:20:04 -05:00
|
|
|
set ( pythonCppRst PythonCpp/pdfHeader.rst
|
|
|
|
PythonCpp/Introduction.rst
|
|
|
|
PythonCpp/Configuration.rst
|
|
|
|
PythonCpp/DBoStandalone.rst
|
|
|
|
PythonCpp/DBoHierarchy.rst
|
|
|
|
PythonCpp/NonDBo.rst
|
|
|
|
PythonCpp/DbU.rst
|
|
|
|
PythonCpp/Name.rst )
|
|
|
|
|
|
|
|
set ( pythonTutorialRst PythonTutorial/pdfHeader.rst
|
|
|
|
PythonTutorial/Introduction.rst
|
|
|
|
PythonTutorial/Environment.rst
|
|
|
|
PythonTutorial/CellNetComponent.rst
|
|
|
|
PythonTutorial/Collections.rst
|
2018-03-18 17:28:49 -05:00
|
|
|
PythonTutorial/CgtScript.rst
|
|
|
|
PythonTutorial/Netlist.rst
|
|
|
|
PythonTutorial/RealDesigns.rst
|
|
|
|
PythonTutorial/ToolEngines.rst
|
|
|
|
PythonTutorial/AdvancedTopics.rst )
|
2017-07-15 10:35:02 -05:00
|
|
|
|
Validating channel routing mode (two metals) on SNX.
* New: In Hurricane::Entity, add an id counter limit and a memory size
limit. The two limits are checked only when a new Entity object is
created. This should help avoiding massive memory links.
* New: In CRL Core, add a "crlcore.groundName" and a "crlcore.powerName"
parameter to specify the name of the ground/power signals to be
created if they are missing in a Cell. For Alliance libraries it
would be "vss" & "vdd" (default values), but for real technologies,
it is often "gnd!" & "vdd!".
The Blif parser is modificated to make use of it.
* Bug: In AnabaticEngine::unify(), set the resulting unified segment in
the center of the GCells common side. Gcells under a segment are
found by using the edge that cover the segment axis. When we have
a "bend" GCell stack and the axis is wrong, they could be ommited.
This was causing deleted segments to be not removed from some
Edges, then core dump.
* Change: In Anabatic::AutoSegment::create(), smarter choosing of the
reference contact, select the fixed or terminal one instead of
always the source one.
* New: In Anabatic::Edge::isEnding(), new function to check if a
segment going through an Edge is starting/ending in either source
or target GCell of the edge (active only when running in channel
mode).
* New: In Anabatic::Edge::add(), a segment takes part in the occupancy
only if it is not ending in either source or target (channel mode
only). The occupancy due to terminal is pre-computed in Katana.
* New: In Anabatic::Edge::ripup(), in channel mode, never ripup a
segment which is ending in either source or target (we *have* to
access this edge to connect to the terminal).
* Bug: In Anabatic::GCell::hcut() and vcut(), force the update of
the Edge which is on the side that will get splitted by the cut.
It's capacity will be reduced to it must be updated.
* Change: In Anabatic::GCell::updateGContacts() add a flag to conditionnally
update horizontals or verticals only. We may require only a partial
update when resizing the GCell in only one direction.
This, again, related to the fact that we compute the GCells under
a segment thanks to it's axis position, so we need to be very careful
when modificating axis.
* Change: In Katana::Block::resizeChannels(), only update GContact vertical
position. Do not disturb X positions of segments.
* Bug: In Katana::GlobalRoute::DigitalDistance, in channel mode, some
Edges can have a zero capacity, but still be reachable if the net has
a terminal in either source or target. Look for this case and return
a distance of zero instead of "unreachable". This was causing the
global routing not to complete in channel mode.
For computing the edge distance, makes the vertical edges much more
long (10 times) than the horizontal ones as the vertical capacity is
very limited. Hard coded for now, should make it a parameter in the
future.
* Change: In KatanaEngine::annotateGlobalGraph(), decrease the capacity
of edges with reserveCapacity for each terminal inside a GCell.
Both north and south edges are decreased as we a terminal will
block both north and south edges.
As a counterpart, the Edge capacity is not decreased when the
global router connect to a terminal.
* Change: In Katana::RoutingEvent::revalidate(), when in repair stage,
do not expand the slack for horizontal segments in channel mode.
So they may not overlap the standard cell row.
* Bug: In Stratus documentation, do not use the french option in babel,
the documentation is in english!
* New: In Documentation, added Hurricane/Python tutorial, part for drawing
layout.
2018-03-16 10:20:04 -05:00
|
|
|
set ( usersGuideRst UsersGuide/pdfHeader.rst
|
|
|
|
UsersGuide/LicenseCredits.rst
|
|
|
|
UsersGuide/Releases.rst
|
|
|
|
UsersGuide/Installation.rst
|
|
|
|
UsersGuide/Configuration.rst
|
|
|
|
UsersGuide/ViewerTools.rst
|
|
|
|
UsersGuide/ScriptsPlugins.rst )
|
|
|
|
|
|
|
|
set ( rdsRst RDS/pdfHeader.rst
|
|
|
|
RDS/RDSpage.rst )
|
2018-08-10 07:39:53 -05:00
|
|
|
|
2018-08-19 06:27:09 -05:00
|
|
|
set (stratusRst Stratus/pdfHeader.rst
|
|
|
|
Stratus/Developper.rst
|
|
|
|
Stratus/Language.rst
|
|
|
|
Stratus/DpGen.rst
|
|
|
|
Stratus/Patterns.rst )
|
2017-07-15 10:35:02 -05:00
|
|
|
|
|
|
|
add_custom_target ( doc_HTML ALL
|
|
|
|
cd ${DOCUMENTATION_SOURCE_DIR}
|
|
|
|
&& rm -rf _build
|
2017-10-30 09:33:37 -05:00
|
|
|
&& sphinx-build -b html -d _build/doctrees . _build/html
|
|
|
|
DEPENDS etc/definitions.rst
|
|
|
|
_static/SoC.css
|
|
|
|
_static/www-SoC.css
|
|
|
|
_static/SoC-ReST.css
|
|
|
|
_static/pygments.css
|
|
|
|
CrlCore/CrlCore.rst
|
|
|
|
Hurricane/Hurricane.rst
|
|
|
|
Unicorn/Unicorn.rst
|
|
|
|
Viewer/Viewer.rst
|
Validating channel routing mode (two metals) on SNX.
* New: In Hurricane::Entity, add an id counter limit and a memory size
limit. The two limits are checked only when a new Entity object is
created. This should help avoiding massive memory links.
* New: In CRL Core, add a "crlcore.groundName" and a "crlcore.powerName"
parameter to specify the name of the ground/power signals to be
created if they are missing in a Cell. For Alliance libraries it
would be "vss" & "vdd" (default values), but for real technologies,
it is often "gnd!" & "vdd!".
The Blif parser is modificated to make use of it.
* Bug: In AnabaticEngine::unify(), set the resulting unified segment in
the center of the GCells common side. Gcells under a segment are
found by using the edge that cover the segment axis. When we have
a "bend" GCell stack and the axis is wrong, they could be ommited.
This was causing deleted segments to be not removed from some
Edges, then core dump.
* Change: In Anabatic::AutoSegment::create(), smarter choosing of the
reference contact, select the fixed or terminal one instead of
always the source one.
* New: In Anabatic::Edge::isEnding(), new function to check if a
segment going through an Edge is starting/ending in either source
or target GCell of the edge (active only when running in channel
mode).
* New: In Anabatic::Edge::add(), a segment takes part in the occupancy
only if it is not ending in either source or target (channel mode
only). The occupancy due to terminal is pre-computed in Katana.
* New: In Anabatic::Edge::ripup(), in channel mode, never ripup a
segment which is ending in either source or target (we *have* to
access this edge to connect to the terminal).
* Bug: In Anabatic::GCell::hcut() and vcut(), force the update of
the Edge which is on the side that will get splitted by the cut.
It's capacity will be reduced to it must be updated.
* Change: In Anabatic::GCell::updateGContacts() add a flag to conditionnally
update horizontals or verticals only. We may require only a partial
update when resizing the GCell in only one direction.
This, again, related to the fact that we compute the GCells under
a segment thanks to it's axis position, so we need to be very careful
when modificating axis.
* Change: In Katana::Block::resizeChannels(), only update GContact vertical
position. Do not disturb X positions of segments.
* Bug: In Katana::GlobalRoute::DigitalDistance, in channel mode, some
Edges can have a zero capacity, but still be reachable if the net has
a terminal in either source or target. Look for this case and return
a distance of zero instead of "unreachable". This was causing the
global routing not to complete in channel mode.
For computing the edge distance, makes the vertical edges much more
long (10 times) than the horizontal ones as the vertical capacity is
very limited. Hard coded for now, should make it a parameter in the
future.
* Change: In KatanaEngine::annotateGlobalGraph(), decrease the capacity
of edges with reserveCapacity for each terminal inside a GCell.
Both north and south edges are decreased as we a terminal will
block both north and south edges.
As a counterpart, the Edge capacity is not decreased when the
global router connect to a terminal.
* Change: In Katana::RoutingEvent::revalidate(), when in repair stage,
do not expand the slack for horizontal segments in channel mode.
So they may not overlap the standard cell row.
* Bug: In Stratus documentation, do not use the french option in babel,
the documentation is in english!
* New: In Documentation, added Hurricane/Python tutorial, part for drawing
layout.
2018-03-16 10:20:04 -05:00
|
|
|
${usersGuideRst} UsersGuide/index.rst
|
|
|
|
${pythonTutorialRst} PythonTutorial/index.rst
|
|
|
|
${pythonCppRst} PythonCpp/index.rst
|
|
|
|
${rdsRst} RDS/index.rst
|
2018-08-19 06:27:09 -05:00
|
|
|
${stratusRst} Stratus/index.rst
|
2017-07-15 10:35:02 -05:00
|
|
|
)
|
|
|
|
|
|
|
|
add_custom_target ( pdf_UsersGuide ALL
|
|
|
|
cd ${DOCUMENTATION_SOURCE_DIR}/UsersGuide
|
2017-10-30 09:33:37 -05:00
|
|
|
&& ../etc/doPdf.sh ${usersGuideRst} UsersGuide.rst
|
|
|
|
DEPENDS etc/definitions.rst
|
|
|
|
etc/SoC-ReST.tex
|
|
|
|
${usersGuideRst} )
|
2017-07-15 10:35:02 -05:00
|
|
|
|
Validating channel routing mode (two metals) on SNX.
* New: In Hurricane::Entity, add an id counter limit and a memory size
limit. The two limits are checked only when a new Entity object is
created. This should help avoiding massive memory links.
* New: In CRL Core, add a "crlcore.groundName" and a "crlcore.powerName"
parameter to specify the name of the ground/power signals to be
created if they are missing in a Cell. For Alliance libraries it
would be "vss" & "vdd" (default values), but for real technologies,
it is often "gnd!" & "vdd!".
The Blif parser is modificated to make use of it.
* Bug: In AnabaticEngine::unify(), set the resulting unified segment in
the center of the GCells common side. Gcells under a segment are
found by using the edge that cover the segment axis. When we have
a "bend" GCell stack and the axis is wrong, they could be ommited.
This was causing deleted segments to be not removed from some
Edges, then core dump.
* Change: In Anabatic::AutoSegment::create(), smarter choosing of the
reference contact, select the fixed or terminal one instead of
always the source one.
* New: In Anabatic::Edge::isEnding(), new function to check if a
segment going through an Edge is starting/ending in either source
or target GCell of the edge (active only when running in channel
mode).
* New: In Anabatic::Edge::add(), a segment takes part in the occupancy
only if it is not ending in either source or target (channel mode
only). The occupancy due to terminal is pre-computed in Katana.
* New: In Anabatic::Edge::ripup(), in channel mode, never ripup a
segment which is ending in either source or target (we *have* to
access this edge to connect to the terminal).
* Bug: In Anabatic::GCell::hcut() and vcut(), force the update of
the Edge which is on the side that will get splitted by the cut.
It's capacity will be reduced to it must be updated.
* Change: In Anabatic::GCell::updateGContacts() add a flag to conditionnally
update horizontals or verticals only. We may require only a partial
update when resizing the GCell in only one direction.
This, again, related to the fact that we compute the GCells under
a segment thanks to it's axis position, so we need to be very careful
when modificating axis.
* Change: In Katana::Block::resizeChannels(), only update GContact vertical
position. Do not disturb X positions of segments.
* Bug: In Katana::GlobalRoute::DigitalDistance, in channel mode, some
Edges can have a zero capacity, but still be reachable if the net has
a terminal in either source or target. Look for this case and return
a distance of zero instead of "unreachable". This was causing the
global routing not to complete in channel mode.
For computing the edge distance, makes the vertical edges much more
long (10 times) than the horizontal ones as the vertical capacity is
very limited. Hard coded for now, should make it a parameter in the
future.
* Change: In KatanaEngine::annotateGlobalGraph(), decrease the capacity
of edges with reserveCapacity for each terminal inside a GCell.
Both north and south edges are decreased as we a terminal will
block both north and south edges.
As a counterpart, the Edge capacity is not decreased when the
global router connect to a terminal.
* Change: In Katana::RoutingEvent::revalidate(), when in repair stage,
do not expand the slack for horizontal segments in channel mode.
So they may not overlap the standard cell row.
* Bug: In Stratus documentation, do not use the french option in babel,
the documentation is in english!
* New: In Documentation, added Hurricane/Python tutorial, part for drawing
layout.
2018-03-16 10:20:04 -05:00
|
|
|
add_custom_target ( pdf_PythonTutorial ALL
|
|
|
|
cd ${DOCUMENTATION_SOURCE_DIR}/PythonTutorial
|
|
|
|
&& ../etc/doPdf.sh ${pythonTutorialRst} PythonTutorial.rst
|
|
|
|
DEPENDS etc/definitions.rst
|
|
|
|
etc/SoC-ReST.tex
|
|
|
|
PythonTutorial/definitions.rst
|
|
|
|
${pythonTutorialRst} )
|
|
|
|
|
2018-08-19 06:27:09 -05:00
|
|
|
add_custom_target ( pdf_Stratus ALL
|
|
|
|
cd ${DOCUMENTATION_SOURCE_DIR}/Stratus
|
|
|
|
&& ../etc/doPdf.sh ${stratusRst} Stratus.rst
|
|
|
|
DEPENDS etc/definitions.rst
|
|
|
|
etc/SoC-ReST.tex
|
|
|
|
${stratusRst} )
|
2017-07-15 10:35:02 -05:00
|
|
|
|
|
|
|
add_custom_target ( pdf_PythonCpp ALL
|
|
|
|
cd ${DOCUMENTATION_SOURCE_DIR}/PythonCpp
|
|
|
|
&& ../etc/doPdf.sh ${pythonCppRst} PythonCpp.rst
|
2017-10-30 09:33:37 -05:00
|
|
|
DEPENDS etc/definitions.rst
|
|
|
|
etc/SoC-ReST.tex
|
|
|
|
${pythonCppRst} )
|
2017-07-15 10:35:02 -05:00
|
|
|
|
|
|
|
add_custom_target ( pdf_RDS ALL
|
|
|
|
cd ${DOCUMENTATION_SOURCE_DIR}/RDS
|
|
|
|
&& ../etc/doPdf.sh ${rdsRst} RDS.rst
|
2017-10-30 09:33:37 -05:00
|
|
|
DEPENDS etc/definitions.rst
|
|
|
|
etc/SoC-ReST.tex
|
Validating channel routing mode (two metals) on SNX.
* New: In Hurricane::Entity, add an id counter limit and a memory size
limit. The two limits are checked only when a new Entity object is
created. This should help avoiding massive memory links.
* New: In CRL Core, add a "crlcore.groundName" and a "crlcore.powerName"
parameter to specify the name of the ground/power signals to be
created if they are missing in a Cell. For Alliance libraries it
would be "vss" & "vdd" (default values), but for real technologies,
it is often "gnd!" & "vdd!".
The Blif parser is modificated to make use of it.
* Bug: In AnabaticEngine::unify(), set the resulting unified segment in
the center of the GCells common side. Gcells under a segment are
found by using the edge that cover the segment axis. When we have
a "bend" GCell stack and the axis is wrong, they could be ommited.
This was causing deleted segments to be not removed from some
Edges, then core dump.
* Change: In Anabatic::AutoSegment::create(), smarter choosing of the
reference contact, select the fixed or terminal one instead of
always the source one.
* New: In Anabatic::Edge::isEnding(), new function to check if a
segment going through an Edge is starting/ending in either source
or target GCell of the edge (active only when running in channel
mode).
* New: In Anabatic::Edge::add(), a segment takes part in the occupancy
only if it is not ending in either source or target (channel mode
only). The occupancy due to terminal is pre-computed in Katana.
* New: In Anabatic::Edge::ripup(), in channel mode, never ripup a
segment which is ending in either source or target (we *have* to
access this edge to connect to the terminal).
* Bug: In Anabatic::GCell::hcut() and vcut(), force the update of
the Edge which is on the side that will get splitted by the cut.
It's capacity will be reduced to it must be updated.
* Change: In Anabatic::GCell::updateGContacts() add a flag to conditionnally
update horizontals or verticals only. We may require only a partial
update when resizing the GCell in only one direction.
This, again, related to the fact that we compute the GCells under
a segment thanks to it's axis position, so we need to be very careful
when modificating axis.
* Change: In Katana::Block::resizeChannels(), only update GContact vertical
position. Do not disturb X positions of segments.
* Bug: In Katana::GlobalRoute::DigitalDistance, in channel mode, some
Edges can have a zero capacity, but still be reachable if the net has
a terminal in either source or target. Look for this case and return
a distance of zero instead of "unreachable". This was causing the
global routing not to complete in channel mode.
For computing the edge distance, makes the vertical edges much more
long (10 times) than the horizontal ones as the vertical capacity is
very limited. Hard coded for now, should make it a parameter in the
future.
* Change: In KatanaEngine::annotateGlobalGraph(), decrease the capacity
of edges with reserveCapacity for each terminal inside a GCell.
Both north and south edges are decreased as we a terminal will
block both north and south edges.
As a counterpart, the Edge capacity is not decreased when the
global router connect to a terminal.
* Change: In Katana::RoutingEvent::revalidate(), when in repair stage,
do not expand the slack for horizontal segments in channel mode.
So they may not overlap the standard cell row.
* Bug: In Stratus documentation, do not use the french option in babel,
the documentation is in english!
* New: In Documentation, added Hurricane/Python tutorial, part for drawing
layout.
2018-03-16 10:20:04 -05:00
|
|
|
${rdsRst} )
|
2018-03-08 07:55:06 -06:00
|
|
|
else(SPHINX_EXECUTABLE)
|
|
|
|
message(STATUS "Sphinx has *not* been found, use the git supplied documentation.")
|
|
|
|
endif(SPHINX_EXECUTABLE)
|
2014-03-10 08:06:31 -05:00
|
|
|
endif(BUILD_DOC)
|
2018-03-08 07:55:06 -06:00
|
|
|
|
|
|
|
install( DIRECTORY _build/html/ DESTINATION ${htmlInstallDir} )
|
|
|
|
install( FILES RDS/RDS.pdf
|
Validating channel routing mode (two metals) on SNX.
* New: In Hurricane::Entity, add an id counter limit and a memory size
limit. The two limits are checked only when a new Entity object is
created. This should help avoiding massive memory links.
* New: In CRL Core, add a "crlcore.groundName" and a "crlcore.powerName"
parameter to specify the name of the ground/power signals to be
created if they are missing in a Cell. For Alliance libraries it
would be "vss" & "vdd" (default values), but for real technologies,
it is often "gnd!" & "vdd!".
The Blif parser is modificated to make use of it.
* Bug: In AnabaticEngine::unify(), set the resulting unified segment in
the center of the GCells common side. Gcells under a segment are
found by using the edge that cover the segment axis. When we have
a "bend" GCell stack and the axis is wrong, they could be ommited.
This was causing deleted segments to be not removed from some
Edges, then core dump.
* Change: In Anabatic::AutoSegment::create(), smarter choosing of the
reference contact, select the fixed or terminal one instead of
always the source one.
* New: In Anabatic::Edge::isEnding(), new function to check if a
segment going through an Edge is starting/ending in either source
or target GCell of the edge (active only when running in channel
mode).
* New: In Anabatic::Edge::add(), a segment takes part in the occupancy
only if it is not ending in either source or target (channel mode
only). The occupancy due to terminal is pre-computed in Katana.
* New: In Anabatic::Edge::ripup(), in channel mode, never ripup a
segment which is ending in either source or target (we *have* to
access this edge to connect to the terminal).
* Bug: In Anabatic::GCell::hcut() and vcut(), force the update of
the Edge which is on the side that will get splitted by the cut.
It's capacity will be reduced to it must be updated.
* Change: In Anabatic::GCell::updateGContacts() add a flag to conditionnally
update horizontals or verticals only. We may require only a partial
update when resizing the GCell in only one direction.
This, again, related to the fact that we compute the GCells under
a segment thanks to it's axis position, so we need to be very careful
when modificating axis.
* Change: In Katana::Block::resizeChannels(), only update GContact vertical
position. Do not disturb X positions of segments.
* Bug: In Katana::GlobalRoute::DigitalDistance, in channel mode, some
Edges can have a zero capacity, but still be reachable if the net has
a terminal in either source or target. Look for this case and return
a distance of zero instead of "unreachable". This was causing the
global routing not to complete in channel mode.
For computing the edge distance, makes the vertical edges much more
long (10 times) than the horizontal ones as the vertical capacity is
very limited. Hard coded for now, should make it a parameter in the
future.
* Change: In KatanaEngine::annotateGlobalGraph(), decrease the capacity
of edges with reserveCapacity for each terminal inside a GCell.
Both north and south edges are decreased as we a terminal will
block both north and south edges.
As a counterpart, the Edge capacity is not decreased when the
global router connect to a terminal.
* Change: In Katana::RoutingEvent::revalidate(), when in repair stage,
do not expand the slack for horizontal segments in channel mode.
So they may not overlap the standard cell row.
* Bug: In Stratus documentation, do not use the french option in babel,
the documentation is in english!
* New: In Documentation, added Hurricane/Python tutorial, part for drawing
layout.
2018-03-16 10:20:04 -05:00
|
|
|
PythonTutorial/PythonTutorial.pdf
|
2018-03-08 07:55:06 -06:00
|
|
|
PythonCpp/PythonCpp.pdf
|
|
|
|
UsersGuide/UsersGuide.pdf DESTINATION ${pdfInstallDir} )
|