mirror of https://github.com/KLayout/klayout.git
Fixed consistent typo: PCell's -> PCells
This commit is contained in:
parent
6d8f56194b
commit
181d5b48e6
|
|
@ -434,7 +434,7 @@ private:
|
|||
};
|
||||
|
||||
/**
|
||||
* @brief An interface that is used to map layer between libraries and PCell's and the layout
|
||||
* @brief An interface that is used to map layer between libraries and PCells and the layout
|
||||
*/
|
||||
class ImportLayerMapping
|
||||
{
|
||||
|
|
@ -1510,7 +1510,7 @@ public:
|
|||
/**
|
||||
* @brief Gets the guiding shape layer
|
||||
*
|
||||
* The guiding shape layer is used to store the guiding shapes of PCell's
|
||||
* The guiding shape layer is used to store the guiding shapes of PCells
|
||||
*/
|
||||
unsigned int guiding_shape_layer () const;
|
||||
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ Library::remap_to (db::Library *other)
|
|||
}
|
||||
|
||||
// We do PCell resolution before the library proxy resolution. The reason is that
|
||||
// PCell's may generate library proxies in their instantiation. Hence we must instantiate
|
||||
// PCells may generate library proxies in their instantiation. Hence we must instantiate
|
||||
// the PCells before we can resolve them.
|
||||
for (std::vector<std::pair<db::LibraryProxy *, db::PCellVariant *> >::const_iterator lp = pcells_to_map.begin (); lp != pcells_to_map.end (); ++lp) {
|
||||
|
||||
|
|
|
|||
|
|
@ -293,9 +293,9 @@ private:
|
|||
};
|
||||
|
||||
/**
|
||||
* @brief A layer declaration for PCell's
|
||||
* @brief A layer declaration for PCells
|
||||
*
|
||||
* PCell's must declare the layers it wants to create.
|
||||
* PCells must declare the layers it wants to create.
|
||||
* Such a layer declaration consists of a db::LayerProperties description (layer, datatype and/or name)
|
||||
* and a symbolic name which can potentially be used as a variable name.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -2858,9 +2858,9 @@ Class<db::Cell> decl_Cell ("db", "Cell",
|
|||
"this method returns true, if this cell represents a pcell with a distinct\n"
|
||||
"set of parameters (a PCell proxy). This also is true, if the PCell is imported from a library.\n"
|
||||
"\n"
|
||||
"Technically, PCell's imported from a library are library proxies which are \n"
|
||||
"Technically, PCells imported from a library are library proxies which are \n"
|
||||
"pointing to PCell variant proxies. This scheme can even proceed over multiple\n"
|
||||
"indirections, i.e. a library using PCell's from another library.\n"
|
||||
"indirections, i.e. a library using PCells from another library.\n"
|
||||
"\n"
|
||||
"This method has been introduced in version 0.22.\n"
|
||||
) +
|
||||
|
|
@ -3011,7 +3011,7 @@ Class<db::Cell> decl_Cell ("db", "Cell",
|
|||
gsi::method ("basic_name", &db::Cell::get_basic_name,
|
||||
"@brief Returns the name of the library or PCell or the real name of the cell\n"
|
||||
"For non-proxy cells (see \\is_proxy?), this method simply returns the cell name.\n"
|
||||
"For proxy cells, this method returns the PCell's definition name or the library\n"
|
||||
"For proxy cells, this method returns the PCells definition name or the library\n"
|
||||
"cell name. This name may differ from the actual cell's name because to ensure\n"
|
||||
"that cell names are unique, KLayout may assign different names to the actual \n"
|
||||
"cell compared to the source cell.\n"
|
||||
|
|
|
|||
|
|
@ -1878,7 +1878,7 @@ Class<db::Layout> decl_Layout ("db", "Layout",
|
|||
"@return The cell index of the pcell variant proxy cell\n"
|
||||
"This method will create a PCell variant proxy for a local PCell definition.\n"
|
||||
"It will create the PCell variant for the given parameters. Note that this method \n"
|
||||
"does not allow one to create PCell instances for PCell's located in a library. Use\n"
|
||||
"does not allow one to create PCell instances for PCells located in a library. Use\n"
|
||||
"\\add_pcell_variant with the library parameter for that purpose.\n"
|
||||
"Unlike the variant using a list of parameters, this version allows specification\n"
|
||||
"of the parameters with a key/value dictionary. The keys are the parameter names\n"
|
||||
|
|
@ -1898,7 +1898,7 @@ Class<db::Layout> decl_Layout ("db", "Layout",
|
|||
"@return The cell index of the pcell variant proxy cell\n"
|
||||
"This method will create a PCell variant proxy for a local PCell definition.\n"
|
||||
"It will create the PCell variant for the given parameters. Note that this method \n"
|
||||
"does not allow one to create PCell instances for PCell's located in a library. Use\n"
|
||||
"does not allow one to create PCell instances for PCells located in a library. Use\n"
|
||||
"\\add_pcell_variant with the library parameter for that purpose.\n"
|
||||
"\n"
|
||||
"The parameters are a sequence of variants which correspond to the parameters declared "
|
||||
|
|
|
|||
|
|
@ -358,7 +358,7 @@ public:
|
|||
/**
|
||||
* @brief Handle changes in the guiding shapes, i.e. create PCell variants
|
||||
*
|
||||
* @return true, if PCell's have been updated, indicating that our selection is no longer valid
|
||||
* @return true, if PCells have been updated, indicating that our selection is no longer valid
|
||||
*
|
||||
* This version assumes there is only one guiding shape selected and will update the selection.
|
||||
* It will also call layout.cleanup() if required.
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@
|
|||
<li><b>Coded libraries:</b>
|
||||
Such libraries are provided by code, either through shared objects/DLL's or through Ruby code.
|
||||
Basically such code has to provide a layout object containing the library cells.
|
||||
A coded library can also provide PCell's (parametrized cells) as library components.
|
||||
A coded library can also provide PCells (parametrized cells) as library components.
|
||||
Sell <link href="/about/about_pcells.xml"/> for details about parametrized cells.
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@
|
|||
|
||||
<doc>
|
||||
|
||||
<title>About PCell's</title>
|
||||
<title>About PCells</title>
|
||||
|
||||
<p>
|
||||
Starting with version 0.22, KLayout offers parametrized cells (PCell's).
|
||||
Starting with version 0.22, KLayout offers parametrized cells (PCells).
|
||||
PCells are a feature found in other tools to simplify layout by providing generators
|
||||
for common layout building blocks. Parametrized cells do not contain
|
||||
static layout but are created dynamically by code using a given set of parameters.
|
||||
|
|
@ -20,14 +20,14 @@
|
|||
|
||||
<p>
|
||||
Using a PCell is easy: choose the library and the PCell from that library when asked for
|
||||
the cell in the instance options dialog. For PCell's, KLayout offers an additional
|
||||
the cell in the instance options dialog. For PCells, KLayout offers an additional
|
||||
parameters page where it asks for the parameter required by the PCell. The placement
|
||||
of the PCell is done as for simple instances. PCell's offer the same instantiation
|
||||
of the PCell is done as for simple instances. PCells offer the same instantiation
|
||||
options that normal cells.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
KLayout provides a simple library called "Basic" with some useful basic PCell's.
|
||||
KLayout provides a simple library called "Basic" with some useful basic PCells.
|
||||
See <link href="/about/basic_lib.xml"/> for more details about that library.
|
||||
</p>
|
||||
|
||||
|
|
@ -52,13 +52,13 @@
|
|||
<p>
|
||||
A PCell implementation consists of at least three parts:
|
||||
a description text, a parameter declaration and a production callback. In addition, a PCell
|
||||
can provide a method that "fixes" parameters according to the PCell's consistency rules
|
||||
can provide a method that "fixes" parameters according to the PCells consistency rules
|
||||
(coerce parameters). Technically, a PCell is a class implementing a certain interface with
|
||||
these methods.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
PCell's are usually packed in libraries. PCell libraries can be provided as
|
||||
PCells are usually packed in libraries. PCell libraries can be provided as
|
||||
shared objects/DLL's (in C++) or as Ruby scripts. Because PCell code is only executed if
|
||||
required, performance usually is not the main objective. A Ruby implementation
|
||||
will therefore be sufficient in most cases and
|
||||
|
|
|
|||
|
|
@ -10,22 +10,22 @@
|
|||
<h2>The "Basic" library</h2>
|
||||
|
||||
<p>
|
||||
The "Basic" Library provides some useful generic PCell's.
|
||||
The "Basic" Library provides some useful generic PCells.
|
||||
One use model is to draw a shape and convert the shape to one
|
||||
of the provided PCell's. This use model is suitable for creating
|
||||
of the provided PCells. This use model is suitable for creating
|
||||
Circles, Ellipses, Donuts, Texts and rounded and stroked polygons or
|
||||
rounded paths.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
To use that feature, draw the shape and choose "Convert To PCell's"
|
||||
To use that feature, draw the shape and choose "Convert To PCells"
|
||||
from the "Edit"/"Selection" menu. A dialog will be shown where the
|
||||
target PCell can be selected. Only those PCell's supporting that
|
||||
target PCell can be selected. Only those PCells supporting that
|
||||
shape type will be shown.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The "Basic" library provides the following PCell's:
|
||||
The "Basic" library provides the following PCells:
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
|
|
@ -88,7 +88,7 @@
|
|||
|
||||
<h2>CIRCLE and ELLIPSE</h2>
|
||||
|
||||
<p>These PCell's define a circle and an ellipse. In both cases, the number of interpolation
|
||||
<p>These PCells define a circle and an ellipse. In both cases, the number of interpolation
|
||||
points (per full circle) can be specified. The default is 64 points. A circle features
|
||||
a handle to define the diameter. An ellipse features two handles defining the diameters in
|
||||
x and y direction.
|
||||
|
|
@ -112,7 +112,7 @@
|
|||
|
||||
<h2>PIE and ARC</h2>
|
||||
|
||||
<p>Both of these PCell's are segments of circles or donuts. The PIE PCell features two handles to
|
||||
<p>Both of these PCells are segments of circles or donuts. The PIE PCell features two handles to
|
||||
define the radius and start and end angle. The ARC PCell also features two handles to define outer
|
||||
and inner radius as well. The following image shows PIE and ARC in action:</p>
|
||||
|
||||
|
|
@ -120,7 +120,7 @@
|
|||
<img src="/about/pie_arc.png"/>
|
||||
</p>
|
||||
|
||||
<p>Both PCell's do not support conversion of shapes.</p>
|
||||
<p>Both PCells do not support conversion of shapes.</p>
|
||||
|
||||
<h2>ROUND_PATH</h2>
|
||||
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@
|
|||
|
||||
<p>
|
||||
To learn more about libraries, read <link href="/about/about_libraries.xml"/>. Read
|
||||
<link href="/about/about_pcells.xml"/> for details about PCell's.
|
||||
<link href="/about/about_pcells.xml"/> for details about PCells.
|
||||
</p>
|
||||
|
||||
</doc>
|
||||
|
|
|
|||
|
|
@ -8,15 +8,15 @@
|
|||
<keyword name="Convert PCell"/>
|
||||
|
||||
<p>
|
||||
PCell's can be created from shapes if the PCell is derived from a "guiding shape".
|
||||
Specifically the Basic library PCell's support derivation from guiding shapes with a few
|
||||
PCells can be created from shapes if the PCell is derived from a "guiding shape".
|
||||
Specifically the Basic library PCells support derivation from guiding shapes with a few
|
||||
exceptions. So for example, a round-cornered polygon can be created from a
|
||||
normal polygon by selecting the polygons, choosing "Edit/Selection/Convert To PCell" and
|
||||
selecting the "Basic.ROUND_POLYGON" for the PCell.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
PCell's can be converted to normal cells by choosing "Edit/Cell/Convert Cell To Static"
|
||||
PCells can be converted to normal cells by choosing "Edit/Cell/Convert Cell To Static"
|
||||
or "Edit/Layout/Convert All Cells To Static". Normal (static) cells can be edited
|
||||
individually but do no longer offer parameters to control the look of the cell.
|
||||
</p>
|
||||
|
|
|
|||
|
|
@ -321,7 +321,7 @@ lv.remove_unused_layers</pre>
|
|||
is a special layer.
|
||||
</p>
|
||||
|
||||
<p>In addition, a layout contains a special layer which is used to implement the "guiding shape" feature of PCell's.
|
||||
<p>In addition, a layout contains a special layer which is used to implement the "guiding shape" feature of PCells.
|
||||
It is a special layer that serves as a container for shapes which parametrize PCells. The index of that layer can be
|
||||
obtained with <class_doc href="Layout#guiding_shape_layer"/>.</p>
|
||||
|
||||
|
|
@ -523,7 +523,7 @@ shape.set_property(1, "NewValue")</pre>
|
|||
API. It represents a cell, which itself is a collection of shapes per layer
|
||||
and instances of other cells. The methods provided by the Cell class deal with either the shape or
|
||||
the instance aspect. A cell is also responsible for handling parts of the PCell scheme, either for
|
||||
the cell itself (if it is an incarnation of a PCell) or instances of PCell's.
|
||||
the cell itself (if it is an incarnation of a PCell) or instances of PCells.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
So it is possible to write one script in Ruby and another one in Python. Just pick your favorite language.
|
||||
Scripts written in different languages share the same KLayout data structures.
|
||||
Naturally they cannot directly share variables or language-specific data. But you can, for example,
|
||||
implement PCell's in Python and Ruby and use those different PCells in the same layout at the same time.
|
||||
implement PCells in Python and Ruby and use those different PCells in the same layout at the same time.
|
||||
Depending on the type of PCell, KLayout will either execute Python or Ruby code.
|
||||
</p>
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
<doc>
|
||||
|
||||
<title>Coding PCell's In Ruby</title>
|
||||
<title>Coding PCells In Ruby</title>
|
||||
<keyword name="Ruby"/>
|
||||
<keyword name="PCell"/>
|
||||
<keyword name="Programming"/>
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
<h2-index/>
|
||||
|
||||
<p>
|
||||
A good starting point for Ruby PCell's is the PCell sample. Create a macro in the
|
||||
A good starting point for Ruby PCells is the PCell sample. Create a macro in the
|
||||
macro development IDE (use the "+" button) and choose "PCell sample" from the
|
||||
templates.
|
||||
</p>
|
||||
|
|
@ -171,7 +171,7 @@ end</pre>
|
|||
</p>
|
||||
|
||||
<p>Using the same concept, a library is an object derived from the <class_doc href="Library"/> class. It is basically
|
||||
a container for PCell's and static layout cells. A library has to be initialized (most conveniently in
|
||||
a container for PCells and static layout cells. A library has to be initialized (most conveniently in
|
||||
the constructor), registered and initialized once. That makes the library available to the system and
|
||||
it can be used in layouts.
|
||||
</p>
|
||||
|
|
@ -420,13 +420,13 @@ end</pre>
|
|||
|
||||
<p>
|
||||
Of course, more than one PCell class can be declared. Each PCell type must
|
||||
have an own implementation class which we will use later to create the PCell's from.
|
||||
have an own implementation class which we will use later to create the PCells from.
|
||||
</p>
|
||||
|
||||
<h2>The Library</h2>
|
||||
|
||||
<p>
|
||||
The library is the container for the PCell's.
|
||||
The library is the container for the PCells.
|
||||
All important code is packed into the constructor of the library.
|
||||
</p>
|
||||
|
||||
|
|
@ -476,14 +476,14 @@ end</pre>
|
|||
|
||||
<p>
|
||||
This line of code will instantiate the library and, through the constructor, instantiate
|
||||
the PCell's and register the library. We are done now and can use the library and our PCell.
|
||||
the PCells and register the library. We are done now and can use the library and our PCell.
|
||||
</p>
|
||||
|
||||
<h2>Debugging The Code</h2>
|
||||
|
||||
<p>
|
||||
When you have modified the code, you need to rerun the script. That will create the classes
|
||||
again and re-register the PCell's and the Library with the new implementation. PCell's already
|
||||
again and re-register the PCells and the Library with the new implementation. PCells already
|
||||
living in the layout will be migrated to the new implementation by mapping their parameters by
|
||||
their symbolic names.
|
||||
</p>
|
||||
|
|
|
|||
|
|
@ -4,6 +4,6 @@
|
|||
<description/>
|
||||
<dbu>0.001</dbu>
|
||||
<base-path/>
|
||||
<layer-properties_file/>
|
||||
<layer-properties-file/>
|
||||
<add-other-layers>true</add-other-layers>
|
||||
</technology>
|
||||
|
|
|
|||
|
|
@ -2154,9 +2154,9 @@ public:
|
|||
bool layer_model_updated ();
|
||||
|
||||
/**
|
||||
* @brief Get the "select inside PCell's" selection mode
|
||||
* @brief Get the "select inside PCells" selection mode
|
||||
*
|
||||
* @return true, objects inside PCell's can be selected
|
||||
* @return true, objects inside PCells can be selected
|
||||
*/
|
||||
bool select_inside_pcells_mode () const
|
||||
{
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ public:
|
|||
set_name ("Basic");
|
||||
set_description ("Basic layout objects");
|
||||
|
||||
// register all the PCell's:
|
||||
// register all the PCells:
|
||||
layout ().register_pcell ("TEXT", new BasicText ());
|
||||
layout ().register_pcell ("CIRCLE", new BasicCircle ());
|
||||
layout ().register_pcell ("ELLIPSE", new BasicEllipse ());
|
||||
|
|
|
|||
|
|
@ -376,7 +376,7 @@ GDS2ReaderBase::do_read (db::Layout &layout)
|
|||
|
||||
if (cell == 0) {
|
||||
|
||||
// ignore everything in proxy cells: these are created from the libraries or PCell's.
|
||||
// ignore everything in proxy cells: these are created from the libraries or PCells.
|
||||
|
||||
} else if (rec_id == sPROPATTR) {
|
||||
|
||||
|
|
|
|||
|
|
@ -171,7 +171,7 @@ VariantUserClassBase::clear_class_table ()
|
|||
std::string
|
||||
VariantUserClassBase::translate_class_name (const std::string &lc_clsname)
|
||||
{
|
||||
// Note: for pre-0.23 versions to be able to read PCell's generated by 0.23 and further
|
||||
// Note: for pre-0.23 versions to be able to read PCells generated by 0.23 and further
|
||||
// (see #601), we need to use the old "complex type" names, specifically "layer" instead of "layerinfo".
|
||||
if (lc_clsname == "layerinfo") {
|
||||
return "layer";
|
||||
|
|
|
|||
Loading…
Reference in New Issue