bbVariablePorts
Define an expression for a port prefix.Use this field to define that some port names are dynamic, the working of which is not yet settled within the standard, so its availability is software dependent.
The properties will be used for all the ports apart from the label field, which should be the prefix per port and have a sequence 0..n, with n=count-1 being appended.
refIn and refOut should be used on the 0 ports only.
Structure
The attributes and elements are shown below, in a sorted per type fashion.In case a list is printed after an element, it indicates that you can have many, otherwise it should be a single element. With a optional it tells the element is not required.
<bbVariablePorts label="..." org="..." portCheck="..." portMapToName="..." refIn="..." refOut="..." refport="..." ... > ...
<count> ... </count>
<direction> ... </direction> optional
<doc> ... </doc> optional
<domain> ... </domain> optional
<drcAngles> ... </drcAngles> optional
<drcMaximumX> ... </drcMaximumX> optional
<drcMaximumY> ... </drcMaximumY> optional
<drcMinimumX> ... </drcMinimumX> optional
<drcMinimumY> ... </drcMinimumY> optional
<position> ... </position> optional
<radius> ... </radius> optional
<software> ... </software> optional
<tex> ... </tex> optional
<width> ... </width> optional
<xsection> ... </xsection> optional
</bbVariablePorts>
XSD The schema file can be downloaded or viewed at xPDK_BB.
Details
count
Define the amount of ports that are there, so the n from the docu. Type pdaExpression documentation:Expression need to be commonly evaluated by many software, so having a restricted set of math / types and so on is key. In PDAFlow lib2/expr there is a yacc/lex parser available with some unit support as well as double / complex expressions. An alternative is tinyexpr, but this is more restrictive, so may be very unhandy for things like waveguide model expressions.
direction
Type pdaPortDirection documentation:For photonics ports the signals are bi-directional - also the output of a laser acts as input in the sense that if you send in optical power there, you modify the laser performance. However for a designer it is a logical output.
The same holds for a 1:2 splitter - it has a single logical input and two logical outputs, otherwise you would call it a 2:1 combiner. The geometry can be the same in optics!
Allowed values: In, Out and InOut.
doc
Type pdaDocumentation documentation:This field allows some (short, few lines) documentation to be written. It can be a long string, but the idea is not to replace a design manual.
This fields is like
tex
which allows documentation in LaTex format; doc
is restricted to plain text.domain
Type pdaDomain documentation: match for both building blocks on the same port/pin.drcAngles
Type pdaDoubleList documentation: text (attribute or element).drcMaximumX
Type pdaExpression documentation:Expression need to be commonly evaluated by many software, so having a restricted set of math / types and so on is key. In PDAFlow lib2/expr there is a yacc/lex parser available with some unit support as well as double / complex expressions. An alternative is tinyexpr, but this is more restrictive, so may be very unhandy for things like waveguide model expressions.
drcMaximumY
Type pdaExpression documentation:Expression need to be commonly evaluated by many software, so having a restricted set of math / types and so on is key. In PDAFlow lib2/expr there is a yacc/lex parser available with some unit support as well as double / complex expressions. An alternative is tinyexpr, but this is more restrictive, so may be very unhandy for things like waveguide model expressions.
drcMinimumX
Type pdaExpression documentation:Expression need to be commonly evaluated by many software, so having a restricted set of math / types and so on is key. In PDAFlow lib2/expr there is a yacc/lex parser available with some unit support as well as double / complex expressions. An alternative is tinyexpr, but this is more restrictive, so may be very unhandy for things like waveguide model expressions.
drcMinimumY
Type pdaExpression documentation:Expression need to be commonly evaluated by many software, so having a restricted set of math / types and so on is key. In PDAFlow lib2/expr there is a yacc/lex parser available with some unit support as well as double / complex expressions. An alternative is tinyexpr, but this is more restrictive, so may be very unhandy for things like waveguide model expressions.
label
Type pdaIdentifier documentation:Identifiers are used in the Python library for the
getName()
and
setName()
function and can thus be used to identify the different elements in list
s.In text the specification is a letter, followed by letters, numbers, underscore. The XSD schema validation is a regular expression: [A-Za-z]([A-Za-z0-9_])*
org
portCheck
Type epistring documentation: Wrap a string for name space API aspects.portMapToName
Type portMapToName documentation: or something like that - it is a ml::setPort(this: label -> this@portMapToName );position
Define the port location as function of # which runs from 0 to count-1. It should result in a Point type of location, so you can use the specific language of the software to get its components and drop them in the port location by replacing this with a suitable iterator name. Type pdaExpression documentation:Expression need to be commonly evaluated by many software, so having a restricted set of math / types and so on is key. In PDAFlow lib2/expr there is a yacc/lex parser available with some unit support as well as double / complex expressions. An alternative is tinyexpr, but this is more restrictive, so may be very unhandy for things like waveguide model expressions.
radius
Type pdaValue documentation: none, and value is the expression in the content. The difference with attributes is that they are more like annotation; basically key/value string to add more information in a software specified way.refIn
refOut
refport
Type pdaPortReference documentation:software
Type software documentation: Define the software versions to use with this PDK.This information is used in the design manual creation but can be embedded in the software specific design kit also
tex
Type pdaTexDocumentation documentation:doc
, but tex
can be a long text in LaTex format to
document the layer in more detail if needed.You can document anything relevant for the topic you want to define.
Multiple paragraphs is fine. Format is Latex, so more complex content is possible.