2017-07-15 10:35:02 -05:00
<!DOCTYPE html>
<!-- [if IE 8]><html class="no - js lt - ie9" lang="en" > <![endif] -->
<!-- [if gt IE 8]><! --> < html class = "no-js" lang = "en" > <!-- <![endif] -->
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title > Coriolis Configuration & Initialisation — Coriolis 2 documentation< / title >
< link rel = "stylesheet" href = "../_static/SoC.css" type = "text/css" / >
2017-10-30 09:33:37 -05:00
< link rel = "index" title = "Index"
href="../genindex.html"/>
< link rel = "search" title = "Search" href = "../search.html" / >
2017-07-15 10:35:02 -05:00
< link rel = "top" title = "Coriolis 2 documentation" href = "../index.html" / >
< link rel = "up" title = "Coriolis User’ s Guide" href = "index.html" / >
< link rel = "next" title = "CGT - The Graphical Interface" href = "ViewerTools.html" / >
< link rel = "prev" title = "Installation" href = "Installation.html" / >
< script src = "_static/js/modernizr.min.js" > < / script >
< / head >
< body class = "wy-body-for-nav" role = "document" >
< div class = "wy-grid-for-nav" >
< nav data-toggle = "wy-nav-shift" class = "wy-nav-side" >
< div class = "wy-side-nav-search" >
< a href = "../index.html" class = "icon icon-home" > Coriolis
< / a >
< div role = "search" >
< form id = "rtd-search-form" class = "wy-form" action = "../search.html" method = "get" >
< input type = "text" name = "q" placeholder = "Search docs" / >
< input type = "hidden" name = "check_keywords" value = "yes" / >
< input type = "hidden" name = "area" value = "default" / >
< / form >
< / div >
< / div >
< div class = "wy-menu wy-menu-vertical" data-spy = "affix" role = "navigation" aria-label = "main navigation" >
< ul class = "current" >
< li class = "toctree-l1 current" > < a class = "reference internal" href = "index.html" > Coriolis User’ s Guide< / a > < ul class = "current" >
< li class = "toctree-l2" > < a class = "reference internal" href = "LicenseCredits.html" > Credits & License< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "Releases.html" > Release Notes< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "Releases.html#release-1-0-1475" > Release 1.0.1475< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "Releases.html#release-1-0-1963" > Release 1.0.1963< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "Releases.html#release-1-0-2049" > Release 1.0.2049< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "Releases.html#release-v2-0-1" > Release v2.0.1< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "Releases.html#release-v2-1" > Release v2.1< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "Releases.html#release-v2-2" > < strong > Release v2.2< / strong > < / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "Installation.html" > Installation< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "Installation.html#fixed-directory-tree" > Fixed Directory Tree< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "Installation.html#building-coriolis" > Building Coriolis< / a > < ul >
< li class = "toctree-l4" > < a class = "reference internal" href = "Installation.html#building-the-devel-branch" > Building the Devel Branch< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "Installation.html#additionnal-requirement-under-macos" > Additionnal Requirement under < span class = "sc" > MacOS< / span > < / a > < / li >
< / ul >
< / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "Installation.html#packaging-coriolis" > Packaging Coriolis< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "Installation.html#hooking-up-into-alliance" > Hooking up into < span class = "sc" > Alliance< / span > < / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "Installation.html#setting-up-the-environment-coriolisenv-py" > Setting up the Environment (coriolisEnv.py)< / a > < / li >
< / ul >
< / li >
2017-10-30 09:33:37 -05:00
< li class = "toctree-l2 current" > < a class = "current reference internal" href = "#" > Coriolis Configuration & Initialisation< / a > < ul >
2017-07-15 10:35:02 -05:00
< li class = "toctree-l3" > < a class = "reference internal" href = "#general-software-architecture" > General Software Architecture< / a > < / li >
2017-11-17 05:04:33 -06:00
< li class = "toctree-l3" > < a class = "reference internal" href = "#first-stage-technology-selection" > First Stage: Technology Selection< / a > < / li >
2017-07-15 10:35:02 -05:00
< li class = "toctree-l3" > < a class = "reference internal" href = "#second-stage-technology-configuration-loading" > Second Stage: Technology Configuration Loading< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "#configuration-helpers" > Configuration Helpers< / a > < ul >
< li class = "toctree-l4" > < a class = "reference internal" href = "#alliance-helper" > < span class = "sc" > Alliance< / span > Helper< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "#tools-configuration-helpers" > Tools Configuration Helpers< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "#hacking-the-configuration-files" > Hacking the Configuration Files< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "ViewerTools.html" > CGT - The Graphical Interface< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "ViewerTools.html#viewer-tools" > Viewer & Tools< / a > < ul >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#stratus-netlist-capture" > < span class = "sc" > Stratus< / span > Netlist Capture< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#the-hurricane-data-base" > The < span class = "sc" > Hurricane< / span > Data-Base< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#synthetizing-and-loading-a-design" > Synthetizing and loading a design< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#etesian-placer" > Etesian – Placer< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#knik-global-router" > Knik – Global Router< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#kite-detailed-router" > Kite – Detailed Router< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#executing-python-scripts-in-cgt" > Executing Python Scripts in Cgt< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#printing-snapshots" > Printing & Snapshots< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#memento-of-shortcuts-in-graphic-mode" > Memento of Shortcuts in Graphic Mode< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#cgt-command-line-options" > Cgt Command Line Options< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#miscellaneous-settings" > Miscellaneous Settings< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "ViewerTools.html#the-controller" > The Controller< / a > < ul >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#the-look-tab" > The Look Tab< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#the-filter-tab" > The Filter Tab< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#the-layers-go-tab" > The Layers& Go Tab< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#the-netlist-tab" > The Netlist Tab< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#the-selection-tab" > The Selection Tab< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#the-inspector-tab" > The Inspector Tab< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#the-settings-tab" > The Settings Tab< / a > < / li >
< / ul >
< / li >
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "ScriptsPlugins.html" > Python Interface for < span class = "sc" > Hurricane< / span > / < span class = "sc" > Coriolis< / span > < / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "ScriptsPlugins.html#plugins" > Plugins< / a > < ul >
< li class = "toctree-l4" > < a class = "reference internal" href = "ScriptsPlugins.html#chip-placement" > Chip Placement< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ScriptsPlugins.html#clock-tree" > Clock Tree< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ScriptsPlugins.html#recursive-save-rsave" > Recursive-Save (RSave)< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "ScriptsPlugins.html#a-simple-example-am2901" > A Simple Example: AM2901< / a > < / li >
< / ul >
< / li >
< / ul >
< / li >
2018-03-18 17:28:49 -05:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../PythonTutorial/index.html" > Hurricane+Python Tutorial< / a > < ul >
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
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonTutorial/Introduction.html" > 1. Introduction< / a > < ul >
2018-03-18 17:28:49 -05:00
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/Introduction.html#terminology" > 1.1 Terminology< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/Introduction.html#generalities" > 1.2 Generalities< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/Introduction.html#various-kinds-of-constructors" > 1.3 Various Kinds of Constructors< / a > < / li >
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
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonTutorial/Environment.html" > 2. Setting up the Environment< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/Environment.html#setting-up-the-pathes" > 2.1 Setting up the Pathes< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/Environment.html#user-s-configurations-file" > 2.2 User’ s Configurations File< / a > < ul >
< li class = "toctree-l4" > < a class = "reference internal" href = "../PythonTutorial/Environment.html#the-techno-py-file" > 2.2.1 The < span class = "cb" > techno.py< / span > File< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "../PythonTutorial/Environment.html#the-settings-py-file" > 2.2.2 The < span class = "cb" > settings.py< / span > File< / a > < / li >
< / ul >
< / li >
< / ul >
< / li >
2018-03-18 17:28:49 -05:00
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonTutorial/CellNetComponent.html" > 3. Making a Standard Cell – Layout< / a > < ul >
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
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/CellNetComponent.html#the-allianceframework-crl-core" > 3.1 The AllianceFramework (CRL Core)< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/CellNetComponent.html#session-mechanism-hurricane" > 3.2 Session Mechanism (Hurricane)< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/CellNetComponent.html#creating-a-new-cell-crl-core" > 3.3 Creating a new Cell (CRL Core)< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/CellNetComponent.html#the-dbu-measurement-unit" > 3.4 The DbU Measurement Unit< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/CellNetComponent.html#setting-up-the-abutment-box" > 3.5 Setting up the Abutment Box< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/CellNetComponent.html#adding-nets-and-components" > 3.6 Adding Nets and Components< / a > < ul >
< li class = "toctree-l4" > < a class = "reference internal" href = "../PythonTutorial/CellNetComponent.html#getting-a-layer" > 3.6.1 Getting a Layer< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "../PythonTutorial/CellNetComponent.html#creating-a-net" > 3.6.2 Creating a Net< / a > < / li >
2018-03-18 17:28:49 -05:00
< li class = "toctree-l4" > < a class = "reference internal" href = "../PythonTutorial/CellNetComponent.html#id1" > 3.6.3 Creating a Component< / a > < / li >
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
< / ul >
< / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/CellNetComponent.html#saving-to-disk-crl-core" > 3.7 Saving to Disk (CRL Core)< / a > < / li >
2018-03-18 17:28:49 -05:00
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/CellNetComponent.html#the-complete-example-file" > 3.8 The Complete Example File< / a > < / li >
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
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonTutorial/Collections.html" > 4. Manipulating Cells, Nets and Components< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/Collections.html#hurricane-collections" > 4.1 Hurricane Collections< / a > < ul >
< li class = "toctree-l4" > < a class = "reference internal" href = "../PythonTutorial/Collections.html#restrictions-about-using-collections" > 4.1.1 Restrictions about using Collections< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/Collections.html#loading-a-cell-with-allianceframework" > 4.2 Loading a Cell with AllianceFramework< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonTutorial/CgtScript.html" > 5. Make a script runnable through < span class = "cb" > cgt< / span > < / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/CgtScript.html#using-breakpoints" > 5.1 Using Breakpoints< / a > < / li >
< / ul >
< / li >
2018-03-18 17:28:49 -05:00
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonTutorial/Netlist.html" > 6. Making a hierarchical Cell – Netlist< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/Netlist.html#creating-an-instance" > 6.1 Creating an Instance< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/Netlist.html#id1" > 6.2 Creating Nets and connecting to Instances< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/Netlist.html#power-supplies-special-case" > 6.3 Power supplies special case< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/Netlist.html#creating-the-physical-view-of-a-cell-netlist" > 6.4 Creating the physical view of a Cell netlist< / a > < ul >
< li class = "toctree-l4" > < a class = "reference internal" href = "../PythonTutorial/Netlist.html#id2" > 6.4.1 Transformation< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "../PythonTutorial/Netlist.html#placing-an-instance" > 6.4.2 Placing an Instance< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "../PythonTutorial/Netlist.html#nets-from-plugs-to-routingpads" > 6.4.3 Nets – From Plugs to RoutingPads< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "../PythonTutorial/Netlist.html#nets-regular-wiring" > 6.4.4 Nets – Regular wiring< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/Netlist.html#the-complete-example-file" > 6.5 The Complete Example File< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonTutorial/RealDesigns.html" > 7. Working in real mode< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/RealDesigns.html#loading-a-lef-file" > 7.1 Loading a < span class = "sc" > lef< / span > file< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/RealDesigns.html#loading-a-blif-file-yosys" > 7.2 Loading a < span class = "sc" > blif< / span > file – < span class = "sc" > Yosys< / span > < / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonTutorial/ToolEngines.html" > 8. Tool Engines (CRL Core)< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/ToolEngines.html#placer-etesian" > 8.1 Placer – Etesian< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/ToolEngines.html#router-katana" > 8.1 Router – Katana< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/ToolEngines.html#a-complete-example" > 8.2 A Complete Example< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonTutorial/AdvancedTopics.html" > 9. Advanced Topics< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/AdvancedTopics.html#id1" > 9.1 Occurrence< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/AdvancedTopics.html#id2" > 9.2 RoutingPads< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/AdvancedTopics.html#hypernets" > 9.3 HyperNets< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonTutorial/AdvancedTopics.html#miscellaeous-trans-hierarchical-functions" > 9.4 Miscellaeous trans-hierarchical functions< / a > < / li >
< / ul >
< / li >
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
< / ul >
< / li >
2017-07-15 10:35:02 -05:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../Stratus/Stratus.html" > Stratus Reference< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../DpGen/DpGen.html" > DpGen Reference< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../Patterns/Patterns.html" > Patterns Reference< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../Hurricane/Hurricane.html" > Hurricane Reference< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../Viewer/Viewer.html" > Viewer Reference< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../CrlCore/CrlCore.html" > CRL Core Reference< / a > < / li >
2017-07-17 12:12:18 -05:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../Katabatic/Katabatic.html" > Katabatic Reference< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../Kite/Kite.html" > Kite Reference< / a > < / li >
2017-07-15 10:35:02 -05:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../Unicorn/Unicorn.html" > Unicorn Reference< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../PythonCpp/index.html" > Hurricane Python/C++ API Tutorial< / a > < ul >
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonCpp/Introduction.html" > 1. Introduction< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/Introduction.html#first-a-disclaimer" > 1.1 First, A Disclaimer< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/Introduction.html#about-technical-choices" > 1.2 About Technical Choices< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/Introduction.html#botched-design" > 1.3 Botched Design< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonCpp/Configuration.html" > 2. Basic File Structure and CMake configuration< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonCpp/DBoStandalone.html" > 3. Case 1 - DBo Derived, Standalone< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/DBoStandalone.html#class-associated-header-file" > 3.1 Class Associated Header File< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/DBoStandalone.html#class-associated-file" > 3.2 Class Associated File< / a > < ul >
< li class = "toctree-l4" > < a class = "reference internal" href = "../PythonCpp/DBoStandalone.html#head-of-the-file" > 3.2.1 Head of the file< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "../PythonCpp/DBoStandalone.html#the-python-module-part" > 3.2.2 The Python Module Part< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "../PythonCpp/DBoStandalone.html#python-type-linking" > 3.2.3 Python Type Linking< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "../PythonCpp/DBoStandalone.html#the-shared-library-part" > 3.2.4 The Shared Library Part< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/DBoStandalone.html#python-module-c-namespace" > 3.3 Python Module (C++ namespace)< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonCpp/DBoHierarchy.html" > 4. Case 2 - Hierarchy of DBo Derived Classes< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/DBoHierarchy.html#base-class-header" > 4.1 Base Class Header< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/DBoHierarchy.html#base-class-file" > 4.2 Base Class File< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/DBoHierarchy.html#intermediate-class-header" > 4.3 Intermediate Class Header< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/DBoHierarchy.html#intermediate-class-file" > 4.4 Intermediate Class File< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/DBoHierarchy.html#terminal-class-header" > 4.5 Terminal Class Header< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/DBoHierarchy.html#terminal-class-file" > 4.6 Terminal Class File< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/DBoHierarchy.html#python-module" > 4.8 Python Module< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonCpp/NonDBo.html" > 5. Case 3 - Non-DBo Standalone Classe< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/NonDBo.html#class-header" > 5.1 Class Header< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/NonDBo.html#class-file" > 5.2 Class File< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/NonDBo.html#id1" > 5.2 Class File< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonCpp/DbU.html" > 6. Encapsulating DbU< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonCpp/Name.html" > 7. No C++ Hurricane::Name encapsulation< / a > < / li >
< / ul >
< / li >
2018-05-04 17:23:44 -05:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../RDS/index.html" > RDS – Symbolic to Real Conversion in Alliance< / a > < ul >
2017-07-15 10:35:02 -05:00
< li class = "toctree-l2" > < a class = "reference internal" href = "../RDS/RDSpage.html" > Symbolic Layout< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../RDS/RDSpage.html#symbolic-components" > Symbolic Components< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../RDS/RDSpage.html#symbolic-segments" > Symbolic Segments< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../RDS/RDSpage.html#the-rds-file" > The RDS File< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../RDS/RDSpage.html#physical-grid-lambda-value" > Physical Grid & Lambda Value< / a > < / li >
2017-10-30 09:33:37 -05:00
< li class = "toctree-l3" > < a class = "reference internal" href = "../RDS/RDSpage.html#the-mbk-to-rds-segment-table" > The < code class = "docutils literal" > < span class = "pre" > MBK_TO_RDS_SEGMENT< / span > < / code > table< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../RDS/RDSpage.html#the-mbk-to-rds-via-table" > The < code class = "docutils literal" > < span class = "pre" > MBK_TO_RDS_VIA< / span > < / code > table< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table" > The < code class = "docutils literal" > < span class = "pre" > MBK_TO_RDS_BIGVIA_HOLE< / span > < / code > table< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table" > The < code class = "docutils literal" > < span class = "pre" > MBK_TO_RDS_BIGVIA_METAL< / span > < / code > table< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../RDS/RDSpage.html#the-mbk-wiresetting-table" > The < code class = "docutils literal" > < span class = "pre" > MBK_WIRESETTING< / span > < / code > table< / a > < / li >
2017-07-15 10:35:02 -05:00
< / ul >
< / li >
< / ul >
< / li >
2017-11-17 05:04:33 -06:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../lefapi/lefapi.html" > LEF API Reference< / a > < ul >
< li class = "toctree-l2" > < a class = "reference internal" href = "../lefapi/lefapi.html#implementation-notes" > Implementation Notes< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../lefapi/lefapi.html#understanding-units" > Understanding Units< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../lefapi/lefapi.html#callback-calling-order" > Callback Calling Order< / a > < / li >
< / ul >
< / li >
< / ul >
< / li >
2017-10-30 09:33:37 -05:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../defapi/defapi.html" > DEF API Reference< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../lefdef/lefdef.html" > LEF/DEF Language Reference< / a > < / li >
2017-07-15 10:35:02 -05:00
< / ul >
< / div >
< / nav >
< section data-toggle = "wy-nav-shift" class = "wy-nav-content-wrap" >
< nav class = "wy-nav-top" role = "navigation" aria-label = "top navigation" >
< i data-toggle = "wy-nav-top" class = "fa fa-bars" > < / i >
< a href = "../index.html" > Coriolis< / a >
< / nav >
< div class = "wy-nav-content" >
< div class = "rst-content" >
< div role = "navigation" aria-label = "breadcrumbs navigation" >
< ul class = "wy-breadcrumbs" >
< li > < a href = "../index.html" > Docs< / a > » < / li >
< li > < a href = "index.html" > Coriolis User’ s Guide< / a > » < / li >
< li > Coriolis Configuration & Initialisation< / li >
< li class = "wy-breadcrumbs-aside" >
< / li >
< / ul >
< hr / >
< / div >
< div role = "main" class = "document" >
< p > < / p >
< div class = "section" id = "coriolis-configuration-initialisation" >
< h1 > Coriolis Configuration & Initialisation< a class = "headerlink" href = "#coriolis-configuration-initialisation" title = "Permalink to this headline" > ¶< / a > < / h1 >
< div class = "section" id = "general-software-architecture" >
< h2 > General Software Architecture< a class = "headerlink" href = "#general-software-architecture" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > < span class = "sc" > Coriolis< / span > has been build with respect of the classical paradigm that the
computational instensive parts have been written in C++, and almost
everything else in < span class = "sc" > Python< / span > . To build the < span class = "sc" > Python< / span > interface we used
two methods:< / p >
< ul class = "simple" >
< li > For self-contained modules < span class = "cb" > boost::python< / span > (mainly in < span class = "cb" > vlsisapd< / span > ).< / li >
< li > For all modules based on < span class = "sc" > Hurricane< / span > , we created our own wrappers due
to very specific requirements such as shared functions between modules
or C++/< span class = "sc" > Python< / span > secure bi-directional object deletion.< / li >
< / ul >
< div class = "admonition note" >
< p class = "first admonition-title" > Note< / p >
< p class = "last" > < strong > Python Documentation:< / strong >
Most of the documentation is related to the C++ API and implemetation of
the tools. However, the < span class = "sc" > Python< / span > bindings have been created so they
mimic < em > as closely as possible< / em > the C++ interface, so the documentation
applies to both languages with only minor syntactic changes.< / p >
< / div >
2017-10-30 09:33:37 -05:00
< p > < a class = "reference internal" href = "../_images/Coriolis-Soft-Schema.png" > < img alt = "Coriolis Software Schematic" class = "align-middle" src = "../_images/Coriolis-Soft-Schema.png" style = "width: 60%;" / > < / a > < / p >
2017-07-15 10:35:02 -05:00
< p > All configuration & initialization files are Python scripts, despite their
< span class = "cb" > .conf< / span > extention. From a syntactic point of view, there is no difference
between the system-wide configuration files and the user’ s configuration,
2017-12-02 08:51:21 -06:00
they use the same Python helpers.
2017-07-15 10:35:02 -05:00
< span class = "raw-html" > < br class = "medskip" / > < / span > < / p >
< p > Configuration is done in two stages:< / p >
< ol class = "arabic simple" >
2017-12-02 08:51:21 -06:00
< li > Selecting the technology.< / li >
< li > Loading the complete configuration for the given technology
and the user’ s settings.< / li >
2017-07-15 10:35:02 -05:00
< / ol >
< p > < / p >
< / div >
2017-11-17 05:04:33 -06:00
< div class = "section" id = "first-stage-technology-selection" >
< h2 > First Stage: Technology Selection< a class = "headerlink" href = "#first-stage-technology-selection" title = "Permalink to this headline" > ¶< / a > < / h2 >
2017-07-15 10:35:02 -05:00
< p > < span class = "raw-html" > < p class = "noindent" > < / p > < / span >
2017-12-02 08:51:21 -06:00
The initialization process is done by executing, in order, the following file(s):< / p >
2017-07-15 10:35:02 -05:00
< table border = "1" class = "docutils" >
< colgroup >
< col width = "8%" / >
< col width = "39%" / >
< col width = "53%" / >
< / colgroup >
< thead valign = "bottom" >
< tr class = "row-odd" > < th class = "head" > Order< / th >
< th class = "head" > Meaning< / th >
< th class = "head" > File< / th >
< / tr >
< / thead >
< tbody valign = "top" >
< tr class = "row-even" > < td > < strong > 1< / strong > < / td >
< td > The system setting< / td >
< td > < span class = "cb" > /etc/coriolis2/techno.conf< / span > < / td >
< / tr >
< tr class = "row-odd" > < td > < strong > 2< / strong > < / td >
< td > The user’ s global setting< / td >
< td > < span class = "cb" > ${HOME}/.coriolis2/techno.py< / span > < / td >
< / tr >
< tr class = "row-even" > < td > < strong > 3< / strong > < / td >
< td > The user’ s local setting< / td >
< td > < span class = "cb" > < CWD> /.coriolis2/techno.py< / span > < / td >
< / tr >
< / tbody >
< / table >
2017-11-17 05:04:33 -06:00
< p > Thoses files must provides only one variable, the name of the technology. Each technology
will provide configuration for both the symbolic part and the real part. < span class = "sc" > Coriolis< / span > can
work with purely symbolic technology (< code class = "docutils literal" > < span class = "pre" > symbolic/cmos< / span > < / code > ) in that case, the real technology
part is a dummy one.< / p >
< p > For example, to use < span class = "sc" > mosis< / span > 180nm:< / p >
2017-10-30 09:33:37 -05:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "c1" > # -*- Mode:Python -*-< / span >
2017-07-15 10:35:02 -05:00
2017-11-17 05:04:33 -06:00
< span class = "n" > technology< / span > < span class = "o" > =< / span > < span class = "s1" > ' 180/scn6m_deep_09' < / span >
2017-07-15 10:35:02 -05:00
< / pre > < / div >
< / div >
< / div >
< div class = "section" id = "second-stage-technology-configuration-loading" >
< h2 > Second Stage: Technology Configuration Loading< a class = "headerlink" href = "#second-stage-technology-configuration-loading" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > < span class = "raw-html" > < p class = "noindent" > < / p > < / span >
2017-12-02 08:51:21 -06:00
The < span class = "cb" > technology< / span > variable is set by the first stage and it’ s the name of the
technology. A directory of that name, with all the configuration files,
must exists in the configuration directory (< span class = "cb" > /etc/coriolis2< / span > ).
In addition to the technology-specific directories, a < span class = "cb" > common/< / span > directory is
there to provides a trunk for all the identical datas across the various technologies.
The initialization process is done by executing, in order, the following file(s):< / p >
2017-07-15 10:35:02 -05:00
< table border = "1" class = "docutils" >
< colgroup >
< col width = "8%" / >
< col width = "39%" / >
< col width = "53%" / >
< / colgroup >
< thead valign = "bottom" >
< tr class = "row-odd" > < th class = "head" > Order< / th >
< th class = "head" > Meaning< / th >
< th class = "head" > File< / th >
< / tr >
< / thead >
< tbody valign = "top" >
< tr class = "row-even" > < td > < strong > 1< / strong > < / td >
< td > The system initialization< / td >
2017-12-02 08:51:21 -06:00
< td > < span class = "cb" > /etc/coriolis2/< technology> /< TOOL> .conf< / span > < / td >
2017-07-15 10:35:02 -05:00
< / tr >
< tr class = "row-odd" > < td > < strong > 2< / strong > < / td >
< td > The user’ s global initialization< / td >
< td > < span class = "cb" > ${HOME}/.coriolis2/settings.py< / span > < / td >
< / tr >
< tr class = "row-even" > < td > < strong > 3< / strong > < / td >
< td > The user’ s local initialization< / td >
< td > < span class = "cb" > < CWD> /.coriolis2/settings.py< / span > < / td >
< / tr >
< / tbody >
< / table >
< div class = "admonition note" >
< p class = "first admonition-title" > Note< / p >
< p > < em > The loading policy is not hard-coded.< / em > It is implemented
2017-12-02 08:51:21 -06:00
at Python level in < span class = "cb" > /etc/coriolis2/coriolisInit.py< / span > , and thus may be easily
2017-07-15 10:35:02 -05:00
amended to whatever site policy.< / p >
2017-12-02 08:51:21 -06:00
< p > The truly mandatory requirement is the existence of < span class = "cb" > coriolisInit.py< / span >
2017-07-15 10:35:02 -05:00
which < em > must< / em > contain a < span class = "cb" > coriolisConfigure()< / span > function with no argument.< / p >
2017-12-02 08:51:21 -06:00
< p > The < span class = "cb" > coriolisInit.py< / span > script execution is triggered by the < em > import< / em > of
the < code class = "docutils literal" > < span class = "pre" > CRL< / span > < / code > module:< / p >
< div class = "code python last highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "kn" > import< / span > < span class = "nn" > sys< / span >
< span class = "kn" > import< / span > < span class = "nn" > os.path< / span >
< span class = "kn" > import< / span > < span class = "nn" > Cfg< / span >
< span class = "kn" > import< / span > < span class = "nn" > Hurricane< / span >
< span class = "kn" > import< / span > < span class = "nn" > CRL< / span > < span class = "c1" > # Triggers execution of " coriolisInit.py" .< / span >
< span class = "kn" > import< / span > < span class = "nn" > Viewer< / span >
< / pre > < / div >
< / div >
2017-07-15 10:35:02 -05:00
< / div >
< / div >
< div class = "section" id = "configuration-helpers" >
< h2 > Configuration Helpers< a class = "headerlink" href = "#configuration-helpers" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > To ease the writing of configuration files, a set of small helpers
is available. They allow to setup the configuration parameters through
simple assembly of tuples. The helpers are installed under the directory:< / p >
2017-10-30 09:33:37 -05:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "o" > < < / span > < span class = "n" > install< / span > < span class = "o" > > /< / span > < span class = "n" > etc< / span > < span class = "o" > /< / span > < span class = "n" > coriolis2< / span > < span class = "o" > /< / span >
< / pre > < / div >
2017-07-15 10:35:02 -05:00
< / div >
< p > Where < span class = "cb" > < install> /< / span > is the root of the installation.< / p >
< p > < / p >
< div class = "section" id = "alliance-helper" >
< span id = "id1" > < / span > < h3 > < span class = "sc" > Alliance< / span > Helper< a class = "headerlink" href = "#alliance-helper" title = "Permalink to this headline" > ¶< / a > < / h3 >
2017-12-02 08:51:21 -06:00
< p > The configuration file must provide an < span class = "cb" > allianceConfig< / span > tuple as shown below.
Like all the < span class = "sc" > Coriolis< / span > configuration file, it is to be executed through < span class = "sc" > Python< / span > ,
so we can use it to perform a not so dumb search of the < span class = "sc" > Alliance< / span > installation
directory. Our default policy is to try to read the < code class = "docutils literal" > < span class = "pre" > ALLIANCE_TOP< / span > < / code > environment
variable, and if not found, default to < code class = "docutils literal" > < span class = "pre" > /soc/alliance< / span > < / code > .< / p >
< div class = "code python highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "kn" > import< / span > < span class = "nn" > os< / span >
< span class = "kn" > from< / span > < span class = "nn" > helpers.Alliance< / span > < span class = "k" > import< / span > < span class = "n" > AddMode< / span >
< span class = "kn" > from< / span > < span class = "nn" > helpers.Alliance< / span > < span class = "k" > import< / span > < span class = "n" > Gauge< / span >
< span class = "n" > allianceTop< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "k" > if< / span > < span class = "n" > os< / span > < span class = "o" > .< / span > < span class = "n" > environ< / span > < span class = "o" > .< / span > < span class = "n" > has_key< / span > < span class = "p" > (< / span > < span class = "s1" > ' ALLIANCE_TOP' < / span > < span class = "p" > ):< / span >
< span class = "n" > allianceTop< / span > < span class = "o" > =< / span > < span class = "n" > os< / span > < span class = "o" > .< / span > < span class = "n" > environ< / span > < span class = "p" > [< / span > < span class = "s1" > ' ALLIANCE_TOP' < / span > < span class = "p" > ]< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > os< / span > < span class = "o" > .< / span > < span class = "n" > path< / span > < span class = "o" > .< / span > < span class = "n" > isdir< / span > < span class = "p" > (< / span > < span class = "n" > allianceTop< / span > < span class = "p" > ):< / span >
< span class = "n" > allianceTop< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > allianceTop< / span > < span class = "p" > :< / span > < span class = "n" > allianceTop< / span > < span class = "o" > =< / span > < span class = "s1" > ' /soc/alliance' < / span >
< span class = "n" > cellsTop< / span > < span class = "o" > =< / span > < span class = "n" > allianceTop< / span > < span class = "o" > +< / span > < span class = "s1" > ' /cells/' < / span >
2017-07-15 10:35:02 -05:00
< span class = "n" > allianceConfig< / span > < span class = "o" > =< / span > \
2017-12-02 08:51:21 -06:00
< span class = "p" > (< / span > < span class = "p" > (< / span > < span class = "s1" > ' CATALOG' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' CATAL' < / span > < span class = "p" > )< / span >
2017-10-30 09:33:37 -05:00
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' WORKING_LIBRARY' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' .' < / span > < span class = "p" > )< / span >
2017-12-02 08:51:21 -06:00
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' SYSTEM_LIBRARY' < / span > < span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "p" > (< / span > < span class = "n" > cellsTop< / span > < span class = "o" > +< / span > < span class = "s1" > ' sxlib' < / span > < span class = "p" > ,< / span > < span class = "n" > AddMode< / span > < span class = "o" > .< / span > < span class = "n" > Append< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > cellsTop< / span > < span class = "o" > +< / span > < span class = "s1" > ' dp_sxlib' < / span > < span class = "p" > ,< / span > < span class = "n" > AddMode< / span > < span class = "o" > .< / span > < span class = "n" > Append< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > cellsTop< / span > < span class = "o" > +< / span > < span class = "s1" > ' ramlib' < / span > < span class = "p" > ,< / span > < span class = "n" > AddMode< / span > < span class = "o" > .< / span > < span class = "n" > Append< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > cellsTop< / span > < span class = "o" > +< / span > < span class = "s1" > ' romlib' < / span > < span class = "p" > ,< / span > < span class = "n" > AddMode< / span > < span class = "o" > .< / span > < span class = "n" > Append< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > cellsTop< / span > < span class = "o" > +< / span > < span class = "s1" > ' rflib' < / span > < span class = "p" > ,< / span > < span class = "n" > AddMode< / span > < span class = "o" > .< / span > < span class = "n" > Append< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > cellsTop< / span > < span class = "o" > +< / span > < span class = "s1" > ' rf2lib' < / span > < span class = "p" > ,< / span > < span class = "n" > AddMode< / span > < span class = "o" > .< / span > < span class = "n" > Append< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > cellsTop< / span > < span class = "o" > +< / span > < span class = "s1" > ' pxlib' < / span > < span class = "p" > ,< / span > < span class = "n" > AddMode< / span > < span class = "o" > .< / span > < span class = "n" > Append< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > cellsTop< / span > < span class = "o" > +< / span > < span class = "s1" > ' padlib' < / span > < span class = "p" > ,< / span > < span class = "n" > AddMode< / span > < span class = "o" > .< / span > < span class = "n" > Append< / span > < span class = "p" > )< / span > < span class = "p" > )< / span > < span class = "p" > )< / span >
2017-10-30 09:33:37 -05:00
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' IN_LO' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' vst' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' IN_PH' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' ap' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' OUT_LO' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' vst' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' OUT_PH' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' ap' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' POWER' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' vdd' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' GROUND' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' vss' < / span > < span class = "p" > )< / span >
2017-12-02 08:51:21 -06:00
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' CLOCK' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' .*ck.*|.*nck.*' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' BLOCKAGE' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' ^blockage[Nn]et*' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' PAD' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' .*_px$' < / span > < span class = "p" > )< / span >
2017-07-15 10:35:02 -05:00
< span class = "p" > )< / span >
< / pre > < / div >
< / div >
< p > < span class = "raw-html" > < p class = "noindent" > < / p > < / span > The example above shows the system configuration file, with all the
available settings. Some important remarks about thoses settings:< / p >
< ul >
< li > < p class = "first" > In it’ s configuration file, the user do not need to redefine all the settings,
2017-10-30 09:33:37 -05:00
just the one he wants to change. In most of the cases, the < code class = "docutils literal" > < span class = "pre" > SYSTEM_LIBRARY< / span > < / code > ,
the < code class = "docutils literal" > < span class = "pre" > WORKING_LIBRARY< / span > < / code > and the special net names (at this point there is not
2017-07-15 10:35:02 -05:00
much alternatives for the others settings).< / p >
< / li >
2017-10-30 09:33:37 -05:00
< li > < p class = "first" > < code class = "docutils literal" > < span class = "pre" > SYSTEM_LIBRARY< / span > < / code > setting: Setting up the library search path.
2017-07-15 10:35:02 -05:00
Each library entry in the tuple will be added to the search path according
to the second parameter:< / p >
< ul class = "simple" >
2017-12-02 08:51:21 -06:00
< li > < span class = "cb" > AddMode::Append< / span > : append to the search path.< / li >
< li > < span class = "cb" > AddMode::Prepend< / span > : insert in head of the search path.< / li >
< li > < span class = "cb" > AddMode::Replace< / span > : look for a library of the same name and replace
2017-07-15 10:35:02 -05:00
it, whithout changing the search path order. If no library of that name
already exists, it is appended.< / li >
< / ul >
< p > A library is identified by it’ s name, this name is the last component of the
2017-10-30 09:33:37 -05:00
path name. For instance: < code class = "docutils literal" > < span class = "pre" > /soc/alliance/sxlib< / span > < / code > will be named < code class = "docutils literal" > < span class = "pre" > sxlib< / span > < / code > .
Implementing the < span class = "sc" > Alliance< / span > specification, when looking for a < em > Cell< / em > < code class = "docutils literal" > < span class = "pre" > name< / span > < / code > ,
2017-07-15 10:35:02 -05:00
the system will browse sequentially trought the library list and returns
the first < em > Cell< / em > whose name match.< / p >
< / li >
2017-10-30 09:33:37 -05:00
< li > < p class = "first" > For < code class = "docutils literal" > < span class = "pre" > POWER< / span > < / code > , < code class = "docutils literal" > < span class = "pre" > GROUND< / span > < / code > , < code class = "docutils literal" > < span class = "pre" > CLOCK< / span > < / code > and < code class = "docutils literal" > < span class = "pre" > BLOCKAGE< / span > < / code > net names, a regular
2017-07-15 10:35:02 -05:00
expression (< span class = "sc" > gnu< / span > regexp) is expected.< / p >
< / li >
< / ul >
< p > A typical user’ s configuration file would be:< / p >
2017-10-30 09:33:37 -05:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "kn" > import< / span > < span class = "nn" > os< / span >
2017-07-15 10:35:02 -05:00
2017-10-30 09:33:37 -05:00
< span class = "n" > homeDir< / span > < span class = "o" > =< / span > < span class = "n" > os< / span > < span class = "o" > .< / span > < span class = "n" > getenv< / span > < span class = "p" > (< / span > < span class = "s1" > ' HOME' < / span > < span class = "p" > )< / span >
2017-07-15 10:35:02 -05:00
< span class = "n" > allianceConfig< / span > < span class = "o" > =< / span > \
2017-10-30 09:33:37 -05:00
< span class = "p" > (< / span > < span class = "p" > (< / span > < span class = "s1" > ' WORKING_LIBRARY' < / span > < span class = "p" > ,< / span > < span class = "n" > homeDir< / span > < span class = "o" > +< / span > < span class = "s1" > ' /worklib' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' SYSTEM_LIBRARY' < / span > < span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "p" > (< / span > < span class = "n" > homeDir< / span > < span class = "o" > +< / span > < span class = "s1" > ' /mylib' < / span > < span class = "p" > ,< / span > < span class = "n" > Environment< / span > < span class = "o" > .< / span > < span class = "n" > Append< / span > < span class = "p" > )< / span > < span class = "p" > )< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' POWER' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' vdd.*' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' GROUND' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' vss.*' < / span > < span class = "p" > )< / span >
2017-07-15 10:35:02 -05:00
< span class = "p" > )< / span >
< / pre > < / div >
< / div >
< / div >
< div class = "section" id = "tools-configuration-helpers" >
< h3 > Tools Configuration Helpers< a class = "headerlink" href = "#tools-configuration-helpers" title = "Permalink to this headline" > ¶< / a > < / h3 >
< p > All the tools uses the same helper to load their configuration (a.k.a.
< em > Configuration Helper< / em > ). Currently the following configuration system-wide
configuration files are defined:< / p >
< ul class = "simple" >
< li > < span class = "cb" > misc.conf< / span > : commons settings or not belonging specifically to a tool.< / li >
< li > < span class = "cb" > etesian.conf< / span > : for the < span class = "sc" > Etesian< / span > tool.< / li >
< li > < span class = "cb" > kite.conf< / span > : for the < span class = "sc" > Kite< / span > tool.< / li >
< li > < span class = "cb" > stratus1.conf< / span > : for the < span class = "sc" > Stratus1< / span > tool.< / li >
< / ul >
< p > Here is the contents of < span class = "cb" > etesian.conf< / span > :< / p >
2017-10-30 09:33:37 -05:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "c1" > # Etesian parameters.< / span >
2017-07-15 10:35:02 -05:00
< span class = "n" > parametersTable< / span > < span class = "o" > =< / span > \
2017-10-30 09:33:37 -05:00
< span class = "p" > (< / span > < span class = "p" > (< / span > < span class = "s1" > ' etesian.aspectRatio' < / span > < span class = "p" > ,< / span > < span class = "n" > TypePercentage< / span > < span class = "p" > ,< / span > < span class = "mi" > 100< / span > < span class = "p" > ,< / span > < span class = "p" > {< / span > < span class = "s1" > ' min' < / span > < span class = "p" > :< / span > < span class = "mi" > 10< / span > < span class = "p" > ,< / span > < span class = "s1" > ' max' < / span > < span class = "p" > :< / span > < span class = "mi" > 1000< / span > < span class = "p" > }< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' etesian.spaceMargin' < / span > < span class = "p" > ,< / span > < span class = "n" > TypePercentage< / span > < span class = "p" > ,< / span > < span class = "mi" > 5< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' etesian.uniformDensity' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeBool< / span > < span class = "p" > ,< / span > < span class = "kc" > False< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' etesian.routingDriven' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeBool< / span > < span class = "p" > ,< / span > < span class = "kc" > False< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s2" > " etesian.effort" < / span > < span class = "p" > ,< / span > < span class = "n" > TypeEnumerate< / span > < span class = "p" > ,< / span > < span class = "mi" > 2< / span >
< span class = "p" > ,< / span > < span class = "p" > {< / span > < span class = "s1" > ' values' < / span > < span class = "p" > :(< / span > < span class = "p" > (< / span > < span class = "s2" > " Fast" < / span > < span class = "p" > ,< / span > < span class = "mi" > 1< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s2" > " Standard" < / span > < span class = "p" > ,< / span > < span class = "mi" > 2< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s2" > " High" < / span > < span class = "p" > ,< / span > < span class = "mi" > 3< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s2" > " Extreme" < / span > < span class = "p" > ,< / span > < span class = "mi" > 4< / span > < span class = "p" > )< / span > < span class = "p" > )< / span > < span class = "p" > }< / span >
2017-07-15 10:35:02 -05:00
< span class = "p" > )< / span >
2017-10-30 09:33:37 -05:00
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s2" > " etesian.graphics" < / span > < span class = "p" > ,< / span > < span class = "n" > TypeEnumerate< / span > < span class = "p" > ,< / span > < span class = "mi" > 2< / span >
< span class = "p" > ,< / span > < span class = "p" > {< / span > < span class = "s1" > ' values' < / span > < span class = "p" > :(< / span > < span class = "p" > (< / span > < span class = "s2" > " Show every step" < / span > < span class = "p" > ,< / span > < span class = "mi" > 1< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s2" > " Show lower bound" < / span > < span class = "p" > ,< / span > < span class = "mi" > 2< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s2" > " Show result only" < / span > < span class = "p" > ,< / span > < span class = "mi" > 3< / span > < span class = "p" > )< / span > < span class = "p" > )< / span > < span class = "p" > }< / span >
2017-07-15 10:35:02 -05:00
< span class = "p" > )< / span >
< span class = "p" > )< / span >
< span class = "n" > layoutTable< / span > < span class = "o" > =< / span > \
2017-10-30 09:33:37 -05:00
< span class = "p" > (< / span > < span class = "p" > (< / span > < span class = "n" > TypeTab< / span > < span class = "p" > ,< / span > < span class = "s1" > ' Etesian' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' etesian' < / span > < span class = "p" > )< / span >
2017-07-15 10:35:02 -05:00
2017-10-30 09:33:37 -05:00
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > TypeTitle< / span > < span class = "p" > ,< / span > < span class = "s1" > ' Placement area' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > TypeOption< / span > < span class = "p" > ,< / span > < span class = "s2" > " etesian.aspectRatio" < / span > < span class = "p" > ,< / span > < span class = "s2" > " Aspect Ratio, X/Y (%)" < / span > < span class = "p" > ,< / span > < span class = "mi" > 0< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > TypeOption< / span > < span class = "p" > ,< / span > < span class = "s2" > " etesian.spaceMargin" < / span > < span class = "p" > ,< / span > < span class = "s2" > " Space Margin" < / span > < span class = "p" > ,< / span > < span class = "mi" > 1< / span > < span class = "p" > )< / span >
2017-07-15 10:35:02 -05:00
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > TypeRule< / span > < span class = "p" > ,)< / span >
2017-10-30 09:33:37 -05:00
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > TypeTitle< / span > < span class = "p" > ,< / span > < span class = "s1" > ' Etesian - Placer' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > TypeOption< / span > < span class = "p" > ,< / span > < span class = "s2" > " etesian.uniformDensity" < / span > < span class = "p" > ,< / span > < span class = "s2" > " Uniform density" < / span > < span class = "p" > ,< / span > < span class = "mi" > 0< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > TypeOption< / span > < span class = "p" > ,< / span > < span class = "s2" > " etesian.routingDriven" < / span > < span class = "p" > ,< / span > < span class = "s2" > " Routing driven" < / span > < span class = "p" > ,< / span > < span class = "mi" > 0< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > TypeOption< / span > < span class = "p" > ,< / span > < span class = "s2" > " etesian.effort" < / span > < span class = "p" > ,< / span > < span class = "s2" > " Placement effort" < / span > < span class = "p" > ,< / span > < span class = "mi" > 1< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > TypeOption< / span > < span class = "p" > ,< / span > < span class = "s2" > " etesian.graphics" < / span > < span class = "p" > ,< / span > < span class = "s2" > " Placement view" < / span > < span class = "p" > ,< / span > < span class = "mi" > 1< / span > < span class = "p" > )< / span >
2017-07-15 10:35:02 -05:00
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > TypeRule< / span > < span class = "p" > ,)< / span >
< span class = "p" > )< / span >
< / pre > < / div >
< / div >
< p > < / p >
< p > Taxonomy of the file:< / p >
< ul class = "simple" >
< li > It must contains, at least, the two tables:< ul >
2017-10-30 09:33:37 -05:00
< li > < code class = "docutils literal" > < span class = "pre" > parametersTable< / span > < / code > , defines & initialise the configuration variables.< / li >
< li > < code class = "docutils literal" > < span class = "pre" > layoutTables< / span > < / code > , defines how the various parameters will be displayed
in the configuration window (< a class = "reference internal" href = "ViewerTools.html#the-settings-tab" > < span class = "std std-ref" > The Settings Tab< / span > < / a > ).< / li >
2017-07-15 10:35:02 -05:00
< / ul >
< / li >
2017-10-30 09:33:37 -05:00
< li > The < code class = "docutils literal" > < span class = "pre" > parametersTable< / span > < / code > , is a tuple (list) of tuples. Each entry in the list
2017-07-15 10:35:02 -05:00
describe a configuration parameter. In it’ s simplest form, it’ s a quadruplet
< span class = "cb" > (TypeOption, ‘ paramId’ , ParameterType, DefaultValue)< / span > with:< ol class = "arabic" >
2017-10-30 09:33:37 -05:00
< li > < code class = "docutils literal" > < span class = "pre" > TypeOption< / span > < / code > , tells that this tuple describe a parameter.< / li >
< li > < code class = "docutils literal" > < span class = "pre" > paramId< / span > < / code > , the identifier of the parameter. Identifiers are defined
2017-07-15 10:35:02 -05:00
by the tools. The list of parameters is detailed in each tool section.< / li >
2017-10-30 09:33:37 -05:00
< li > < code class = "docutils literal" > < span class = "pre" > ParameterType< / span > < / code > , the kind of parameter. Could be:< ul >
< li > < code class = "docutils literal" > < span class = "pre" > TypeBool< / span > < / code > , boolean.< / li >
< li > < code class = "docutils literal" > < span class = "pre" > TypeInt< / span > < / code > , signed integer.< / li >
< li > < code class = "docutils literal" > < span class = "pre" > TypeEnumerate< / span > < / code > , enumerated type, needs extra entry.< / li >
< li > < code class = "docutils literal" > < span class = "pre" > TypePercentage< / span > < / code > , percentage, expressed between 0 and 100.< / li >
< li > < code class = "docutils literal" > < span class = "pre" > TypeDouble< / span > < / code > , float.< / li >
< li > < code class = "docutils literal" > < span class = "pre" > TypeString< / span > < / code > , character string.< / li >
2017-07-15 10:35:02 -05:00
< / ul >
< / li >
2017-10-30 09:33:37 -05:00
< li > < code class = "docutils literal" > < span class = "pre" > DefaultValue< / span > < / code > , the default value for that parameter.< / li >
2017-07-15 10:35:02 -05:00
< / ol >
< / li >
< / ul >
< / div >
< / div >
< div class = "section" id = "hacking-the-configuration-files" >
< h2 > Hacking the Configuration Files< a class = "headerlink" href = "#hacking-the-configuration-files" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > Asides from the symbols that gets used by the configuration helpers like
< span class = "cb" > allianceConfig< / span > or < span class = "cb" > parametersTable< / span > , you can put pretty much anything
in < span class = "cb" > < CWD> /.coriolis2/settings.py< / span > (that is, written in < span class = "sc" > Python< / span > ).< / p >
< p > For example:< / p >
2017-10-30 09:33:37 -05:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "c1" > # -*- Mode:Python -*-< / span >
2017-07-15 10:35:02 -05:00
2017-10-30 09:33:37 -05:00
< span class = "n" > defaultStyle< / span > < span class = "o" > =< / span > < span class = "s1" > ' Alliance.Classic [black]' < / span >
2017-07-15 10:35:02 -05:00
2017-10-30 09:33:37 -05:00
< span class = "c1" > # Regular Coriolis configuration.< / span >
2017-07-15 10:35:02 -05:00
< span class = "n" > parametersTable< / span > < span class = "o" > =< / span > \
2017-10-30 09:33:37 -05:00
< span class = "p" > (< / span > < span class = "p" > (< / span > < span class = "s1" > ' misc.catchCore' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeBool< / span > < span class = "p" > ,< / span > < span class = "kc" > False< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' misc.info' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeBool< / span > < span class = "p" > ,< / span > < span class = "kc" > False< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' misc.paranoid' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeBool< / span > < span class = "p" > ,< / span > < span class = "kc" > False< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' misc.bug' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeBool< / span > < span class = "p" > ,< / span > < span class = "kc" > False< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' misc.logMode' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeBool< / span > < span class = "p" > ,< / span > < span class = "kc" > True< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' misc.verboseLevel1' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeBool< / span > < span class = "p" > ,< / span > < span class = "kc" > False< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' misc.verboseLevel2' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeBool< / span > < span class = "p" > ,< / span > < span class = "kc" > True< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' misc.minTraceLevel' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeInt< / span > < span class = "p" > ,< / span > < span class = "mi" > 0< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' misc.maxTraceLevel' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeInt< / span > < span class = "p" > ,< / span > < span class = "mi" > 0< / span > < span class = "p" > )< / span >
2017-07-15 10:35:02 -05:00
< span class = "p" > )< / span >
2017-10-30 09:33:37 -05:00
< span class = "c1" > # Some ordinary Python script...< / span >
2017-07-15 10:35:02 -05:00
< span class = "kn" > import< / span > < span class = "nn" > os< / span >
2017-10-30 09:33:37 -05:00
< span class = "nb" > print< / span > < span class = "s1" > ' o Cleaning up ClockTree previous run.' < / span >
< span class = "k" > for< / span > < span class = "n" > fileName< / span > < span class = "ow" > in< / span > < span class = "n" > os< / span > < span class = "o" > .< / span > < span class = "n" > listdir< / span > < span class = "p" > (< / span > < span class = "s1" > ' .' < / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "n" > fileName< / span > < span class = "o" > .< / span > < span class = "n" > endswith< / span > < span class = "p" > (< / span > < span class = "s1" > ' .ap' < / span > < span class = "p" > )< / span > < span class = "ow" > or< / span > < span class = "p" > (< / span > < span class = "n" > fileName< / span > < span class = "o" > .< / span > < span class = "n" > find< / span > < span class = "p" > (< / span > < span class = "s1" > ' _clocked.' < / span > < span class = "p" > )< / span > < span class = "o" > > =< / span > < span class = "mi" > 0< / span > < span class = "p" > ):< / span >
< span class = "nb" > print< / span > < span class = "s1" > ' - < < / span > < span class = "si" > %s< / span > < span class = "s1" > > ' < / span > < span class = "o" > %< / span > < span class = "n" > fileName< / span >
2017-07-15 10:35:02 -05:00
< span class = "n" > os< / span > < span class = "o" > .< / span > < span class = "n" > unlink< / span > < span class = "p" > (< / span > < span class = "n" > fileName< / span > < span class = "p" > )< / span >
< / pre > < / div >
< / div >
2017-10-30 09:33:37 -05:00
< p > See < a class = "reference internal" href = "ScriptsPlugins.html#python-interface-to-coriolis" > < span class = "std std-ref" > Python Interface for Hurricane / Coriolis< / span > < / a > for more details those capabilities.< / p >
2017-07-15 10:35:02 -05:00
< / div >
< / div >
< / div >
< footer >
< div class = "rst-footer-buttons" role = "navigation" aria-label = "footer navigation" >
< a href = "ViewerTools.html" class = "btn btn-neutral float-right" title = "CGT - The Graphical Interface" accesskey = "n" > Next < span class = "fa fa-arrow-circle-right" > < / span > < / a >
< a href = "Installation.html" class = "btn btn-neutral" title = "Installation" accesskey = "p" > < span class = "fa fa-arrow-circle-left" > < / span > Previous< / a >
< / div >
< hr / >
< div role = "contentinfo" >
< table class = "footer1" >
< tr >
< td class = "LFooter" > < small >
Generated by < a href = "http://sphinx-doc.org/" > Sphinx< / a >
2018-05-04 17:23:44 -05:00
using a < a href = "https://readthedocs.org" > RTD< / a > theme on May 05, 2018.
2017-07-15 10:35:02 -05:00
< / small > < / td >
< td class = "RFooter" > < / td >
< / tr >
< / table >
< table class = "footer2" >
< tr >
< td class = "LFooter" > Coriolis 2 Documentation< / td >
< td class = "RFooter" > < small >
2018-01-06 10:55:44 -06:00
© Copyright 2000-2018, UPMC.
2017-07-15 10:35:02 -05:00
< / small > < / td >
< / tr >
< / table >
< / div >
< / footer >
< / div >
< / div >
< / section >
< / div >
< script type = "text/javascript" >
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../',
VERSION:'2',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
< / script >
< script type = "text/javascript" src = "../_static/jquery.js" > < / script >
< script type = "text/javascript" src = "../_static/underscore.js" > < / script >
< script type = "text/javascript" src = "../_static/doctools.js" > < / script >
< script type = "text/javascript" src = "../_static/js/theme.js" > < / script >
< script type = "text/javascript" >
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
< / script >
< / body >
< / html >