diff --git a/documentation/content/pages/python-tutorial/definitions.rst b/documentation/content/pages/python-tutorial/definitions.rst index 2e503641..7bd40f2a 100644 --- a/documentation/content/pages/python-tutorial/definitions.rst +++ b/documentation/content/pages/python-tutorial/definitions.rst @@ -2,48 +2,48 @@ .. Hurricane doxygen doc links. -.. _Breakpoint: ../../hurricane/classHurricane_1_1Breakpoint.html -.. _UpdateSession: ../../hurricane/classHurricane_1_1UpdateSession.html -.. _Layer: ../../hurricane/classHurricane_1_1Layer.html -.. _Layers: ../../hurricane/classHurricane_1_1Layer.html -.. _Technology: ../../hurricane/classHurricane_1_1Technology.html -.. _DataBase: ../../hurricane/classHurricane_1_1DataBase.html -.. _DbU: ../../hurricane/classHurricane_1_1DbU.html -.. _Point: ../../hurricane/classHurricane_1_1Point.html -.. _Points: ../../hurricane/classHurricane_1_1Point.html -.. _Box: ../../hurricane/classHurricane_1_1Box.html -.. _DBo: ../../hurricane/classHurricane_1_1DBo.html -.. _Cell: ../../hurricane/classHurricane_1_1Cell.html -.. _Net: ../../hurricane/classHurricane_1_1Net.html -.. _Nets: ../../hurricane/classHurricane_1_1Net.html -.. _NetExternalComponents: ../../hurricane/classHurricane_1_1NetExternalComponents.html -.. _HyperNet: ../../hurricane/classHurricane_1_1HyperNet.html -.. _Component: ../../hurricane/classHurricane_1_1Component.html -.. _Components: ../../hurricane/classHurricane_1_1Component.html -.. _Contact: ../../hurricane/classHurricane_1_1Contact.html -.. _Contacts: ../../hurricane/classHurricane_1_1Contact.html -.. _Pad: ../../hurricane/classHurricane_1_1Pad.html -.. _RoutingPad: ../../hurricane/classHurricane_1_1RoutingPad.html -.. _RoutingPads: ../../hurricane/classHurricane_1_1RoutingPad.html -.. _Horizontal: ../../hurricane/classHurricane_1_1Horizontal.html -.. _Vertical: ../../hurricane/classHurricane_1_1Vertical.html -.. _Plug: ../../hurricane/classHurricane_1_1Plug.html -.. _Plugs: ../../hurricane/classHurricane_1_1Plug.html -.. _Collection: ../../hurricane/classHurricane_1_1Collection.html -.. _Instance: ../../hurricane/classHurricane_1_1Instance.html -.. _Instances: ../../hurricane/classHurricane_1_1Instance.html -.. _Transformation: ../../hurricane/classHurricane_1_1Transformation.html -.. _Orientation: ../../hurricane/classHurricane_1_1Orientation.html -.. _Occurrence: ../../hurricane/classHurricane_1_1Occurrence.html -.. _PythonAttributes: ../../hurricane/classIsobar_1_1PythonAttributes.html +.. _Breakpoint: ../doc/hurricane/classHurricane_1_1Breakpoint.html +.. _UpdateSession: ../doc/hurricane/classHurricane_1_1UpdateSession.html +.. _Layer: ../doc/hurricane/classHurricane_1_1Layer.html +.. _Layers: ../doc/hurricane/classHurricane_1_1Layer.html +.. _Technology: ../doc/hurricane/classHurricane_1_1Technology.html +.. _DataBase: ../doc/hurricane/classHurricane_1_1DataBase.html +.. _DbU: ../doc/hurricane/classHurricane_1_1DbU.html +.. _Point: ../doc/hurricane/classHurricane_1_1Point.html +.. _Points: ../doc/hurricane/classHurricane_1_1Point.html +.. _Box: ../doc/hurricane/classHurricane_1_1Box.html +.. _DBo: ../doc/hurricane/classHurricane_1_1DBo.html +.. _Cell: ../doc/hurricane/classHurricane_1_1Cell.html +.. _Net: ../doc/hurricane/classHurricane_1_1Net.html +.. _Nets: ../doc/hurricane/classHurricane_1_1Net.html +.. _NetExternalComponents: ../doc/hurricane/classHurricane_1_1NetExternalComponents.html +.. _HyperNet: ../doc/hurricane/classHurricane_1_1HyperNet.html +.. _Component: ../doc/hurricane/classHurricane_1_1Component.html +.. _Components: ../doc/hurricane/classHurricane_1_1Component.html +.. _Contact: ../doc/hurricane/classHurricane_1_1Contact.html +.. _Contacts: ../doc/hurricane/classHurricane_1_1Contact.html +.. _Pad: ../doc/hurricane/classHurricane_1_1Pad.html +.. _RoutingPad: ../doc/hurricane/classHurricane_1_1RoutingPad.html +.. _RoutingPads: ../doc/hurricane/classHurricane_1_1RoutingPad.html +.. _Horizontal: ../doc/hurricane/classHurricane_1_1Horizontal.html +.. _Vertical: ../doc/hurricane/classHurricane_1_1Vertical.html +.. _Plug: ../doc/hurricane/classHurricane_1_1Plug.html +.. _Plugs: ../doc/hurricane/classHurricane_1_1Plug.html +.. _Collection: ../doc/hurricane/classHurricane_1_1Collection.html +.. _Instance: ../doc/hurricane/classHurricane_1_1Instance.html +.. _Instances: ../doc/hurricane/classHurricane_1_1Instance.html +.. _Transformation: ../doc/hurricane/classHurricane_1_1Transformation.html +.. _Orientation: ../doc/hurricane/classHurricane_1_1Orientation.html +.. _Occurrence: ../doc/hurricane/classHurricane_1_1Occurrence.html +.. _PythonAttributes: ../doc/hurricane/classIsobar_1_1PythonAttributes.html .. Hurricane Viewer doxygen doc links. -.. _CellViewer: ../../viewer/classHurricane_1_1CellViewer.html +.. _CellViewer: ../doc/viewer/classHurricane_1_1CellViewer.html .. CRL Core doxygen doc links. -.. _AllianceFramework: ../../crlcore/classCRL_1_1AllianceFramework.html -.. _ToolEngine: ../../crlcore/classCRL_1_1ToolEngine.html -.. _ToolEngines: ../../crlcore/classCRL_1_1ToolEngine.html +.. _AllianceFramework: ../doc/crlcore/classCRL_1_1AllianceFramework.html +.. _ToolEngine: ../doc/crlcore/classCRL_1_1ToolEngine.html +.. _ToolEngines: ../doc/crlcore/classCRL_1_1ToolEngine.html .. Hurricane Python Tutorial internal links. .. _5. Make a script runnable through cgt: ./CgtScript.html diff --git a/documentation/content/pdfs/CheckToolkit.pdf b/documentation/content/pdfs/CheckToolkit.pdf index a14a52a8..fe26fdbe 100644 Binary files a/documentation/content/pdfs/CheckToolkit.pdf and b/documentation/content/pdfs/CheckToolkit.pdf differ diff --git a/documentation/content/pdfs/DesignFlow.pdf b/documentation/content/pdfs/DesignFlow.pdf index 26ec3373..69020d9a 100644 Binary files a/documentation/content/pdfs/DesignFlow.pdf and b/documentation/content/pdfs/DesignFlow.pdf differ diff --git a/documentation/content/pdfs/PythonCpp.pdf b/documentation/content/pdfs/PythonCpp.pdf index 6cac6ad0..c38cccf4 100644 Binary files a/documentation/content/pdfs/PythonCpp.pdf and b/documentation/content/pdfs/PythonCpp.pdf differ diff --git a/documentation/content/pdfs/PythonTutorial.pdf b/documentation/content/pdfs/PythonTutorial.pdf index 717d3251..9894bbac 100644 Binary files a/documentation/content/pdfs/PythonTutorial.pdf and b/documentation/content/pdfs/PythonTutorial.pdf differ diff --git a/documentation/content/pdfs/RDS.pdf b/documentation/content/pdfs/RDS.pdf index a2e68399..d1028d42 100644 Binary files a/documentation/content/pdfs/RDS.pdf and b/documentation/content/pdfs/RDS.pdf differ diff --git a/documentation/content/pdfs/Stratus.pdf b/documentation/content/pdfs/Stratus.pdf index 84ce493d..a10491c0 100644 Binary files a/documentation/content/pdfs/Stratus.pdf and b/documentation/content/pdfs/Stratus.pdf differ diff --git a/documentation/content/pdfs/UsersGuide.pdf b/documentation/content/pdfs/UsersGuide.pdf index 2dd46b0f..108b91e8 100644 Binary files a/documentation/content/pdfs/UsersGuide.pdf and b/documentation/content/pdfs/UsersGuide.pdf differ diff --git a/documentation/output/pages/python-tutorial.html b/documentation/output/pages/python-tutorial.html index 0fd3cea2..cbbb7c3d 100644 --- a/documentation/output/pages/python-tutorial.html +++ b/documentation/output/pages/python-tutorial.html @@ -222,20 +222,20 @@ don't. Thus we summarize below the more important ones:
-Regarding the memory allocation, the Hurricane database contains two kind of objects.
Objects that are linked to others in the database and whose creation or deletion -implies coherency operations. This is the case for Net or Horizontal. +implies coherency operations. This is the case for Net or Horizontal. They must be created using the static create() method of their class and destroyed with their destroy() method.
And, of course, they cannot be copied (the copy constructor has been disabled).
@@ -339,7 +339,7 @@ and destroyed with their destroy() method. net.destroy() # Call the dynamic destroy() method.Objects that are standalone, like Point or Box, uses the usual construction +
Objects that are standalone, like Point or Box, uses the usual construction methods. They also use the Python garbage collector mechanism and do not need to be explicitly deleted.
from Hurricane import DbU, Box
@@ -356,7 +356,7 @@ to be explicitly deleted.
Hurricane Collection behave like containers under Python and provide +
Hurricane Collection behave like containers under Python and provide support for the iterator protocol.
-from Hurricane import Net, Horizontal @@ -411,13 +411,13 @@ attributes. The syntax has been made as simple as possible. del cell.myAttribute0 PythonAttributes.disable( cell )Detailing the life cycle of Python attributes on a DBo:
+Detailing the life cycle of Python attributes on a DBo:
-
Enabling the addition of Python attribute on a DBo:
+- -
Enabling the addition of Python attribute on a DBo:
PythonAttributes.enable( cell )Adding/removing properties on the DBo:
+- -
Adding/removing properties on the DBo:
cell.myAttribute0 = MyAttribute() cell.myAttribute1 = MyAttribute() print( 'cell.myAttribute0 =', cell.myAttribute0 ) @@ -430,13 +430,13 @@ Any still attached Python attributes will be released.Note
-When the attributes of a DBo are released it does not automatically +
When the attributes of a DBo are released it does not automatically imply that they are removed. Their reference count is decreased, and if they are only referenced here, they will be deleted. But if other variables still holds reference onto them, they will stay allocateds.
There is no need to keep track of all the DBo that have Python +
There is no need to keep track of all the DBo that have Python attributes to disable them. One can directly call:
@@ -448,7 +448,7 @@ attributes to disable them. One can directly call:PythonAttributes.disableAll()Sometimes, the use of a wrapped C++ feature would be counter intuitive regarding the Python feature. For those cases the overlay module provide an adaptation of the C++ API for a more Python-like code. A typical example is -with the UpdateSession mechanism.
+with the UpdateSession mechanism.Using directly the C++ wrapper, we would write a code like this:
from Hurricane import UpdateSession, Net, Vertical from helpers import l @@ -567,11 +567,11 @@ in CGT - The3. Making a Standard Cell -- Layout
-In this part, we will show how to create and save a terminal Cell, +
In this part, we will show how to create and save a terminal Cell, that is, a cell without instances (the end point of a hierarchical design). To illustrate the case we will draw the layout of a standard cell.
-We will introduce the following classes : Cell, Net, Component +
We will introduce the following classes : Cell, Net, Component and its derived classes.
3.1 The AllianceFramework (CRL Core)
@@ -581,7 +581,7 @@ one is available : the Alliance framework. It allows Coriolis Alliance libraries and cells in the exact same way.Note
-To see how the AllianceFramework is configured for your +
To see how the AllianceFramework is configured for your installation, please have a look to alliance.conf in the etc/coriolis2 directory. It must contains the same settings as the various MBK_ variables used for Alliance.
@@ -590,7 +590,7 @@ as the various MBK_ variables used for3.2 Session Mechanism (Hurricane)
In the Hurricane database, all modifications must take place inside -an UpdateSession. At the closing of a session, created or modificated +an UpdateSession. At the closing of a session, created or modificated objects are fully inserted in the database. This is especially true for the visualisation, a created component will be visible only only after the session close.
@@ -601,8 +601,8 @@ the session close.3.3 Creating a new Cell (CRL Core)
-The creation of a new Cell occurs through the AllianceFramework, -and, as stated above, inside a UpdateSession. The AllianceFramework +
The creation of a new Cell occurs through the AllianceFramework, +and, as stated above, inside a UpdateSession. The AllianceFramework environment is provided by the crl module.
from Hurricane import * from CRL import * @@ -614,15 +614,15 @@ environment is provided by the crl module. # Build then save the Cell.This is the simplest call to createCell(), and in that case, the newly -created Cell will be saved in the working library (usually, the current +created Cell will be saved in the working library (usually, the current directory). You may supply a second argument telling into which library -you want the Cell to be created.
-In the Hurricane Cell object, there is no concept of view, it contains +you want the Cell to be created.
+In the Hurricane Cell object, there is no concept of view, it contains completly fused logical (netlist) and physical (layout) views.
3.4 The DbU Measurement Unit
-All coordinates in the Hurricane database are expressed in DbU +
All coordinates in the Hurricane database are expressed in DbU (for Database Unit) which are integer numbers of foundry grid. To be more precise, they are fixed points numbers expressed in hundredth of foundry grid (to allow transient non-integer @@ -637,7 +637,7 @@ two conversion functions are provided:
is integer.In order to reduce the number of characters one has to code, the helpers module provides three very short function to perform conversion towards -DbU :
+DbU :def l ( value ): """Convert a lambda into a DbU.""" return DbU.fromLambda( value ) @@ -653,7 +653,7 @@ module provides three very short function to perform conversion towards3.5 Setting up the Abutment Box
-To setup the abutment box, we use a Box which defines a box from +
To setup the abutment box, we use a Box which defines a box from the coordinates of the lower left corner (x1,y1) and upper left corner (x2,y2).
b = Box( l( 0.0) # x1 @@ -671,20 +671,20 @@ corner (x2,y2).In the Hurricane terminology, a component is any kind of physical object among:
-
-- Contact
-- Pad
-- RoutingPad
-- Horizontal
-- Vertical
-- Plug is the only exception and will be detailed later (see ??).
+- Contact
+- Pad
+- RoutingPad
+- Horizontal
+- Vertical
+- Plug is the only exception and will be detailed later (see ??).
Components cannot be created alone. They must be part of a Net.
+Components cannot be created alone. They must be part of a Net.
3.6.1 Getting a Layer
-As physical elements, Components are created using a Layer. So prior to -their creation, we must get one from the database. Layers are stored in the -Technology, which in turn, is stored in the DataBase. So, to get a -Layer:
+As physical elements, Components are created using a Layer. So prior to +their creation, we must get one from the database. Layers are stored in the +Technology, which in turn, is stored in the DataBase. So, to get a +Layer:
layer = DataBase.getDB().getTechnology().getLayer( 'METAL1' )@@ -699,10 +699,10 @@ and symbolic ones we adopt the following convention:3.6.2 Creating a Net
-As said above, prior to creating any Component, we must create the Net it +
As said above, prior to creating any Component, we must create the Net it will belong to. In that example we also make it an external net, that is, a part of the interface. Do not mistake the name of the net given as a string -argument 'i' and the name of the variable i holding the Net object. +argument 'i' and the name of the variable i holding the Net object. For the sake of clarity we try to give the variable a close name, but this is not mandatory.
i = Net.create( cell, 'i' ) @@ -718,7 +718,7 @@ external net, see 6.2 Cr3.6.3 Creating a Component
-Finally, we get ready to create a Component, we will make a Vertical segment +
Finally, we get ready to create a Component, we will make a Vertical segment of METAL1.
@@ -740,7 +740,7 @@ This is done by calling thesegment = Vertical.create( i # The owner Net. , layer # The layer. @@ -732,7 +732,7 @@ absolute position. There is a second overload for creating a relatively placed segment, see articulated layout.If the net is external, that is, part of the interface of the cell, you may have to declare some of its components as physical connectors usable by the router. -This is done by calling the NetExternalComponents class:
+This is done by calling the NetExternalComponents class:NetExternalComponents.setExternal( segment )3.7 Saving to Disk (CRL Core)
Once you have finished to build your cell, you have to save it on disk. -Using the AllianceFramework you can save it as a pair of file:
+Using the AllianceFramework you can save it as a pair of file: