======================== Version Param =================================================

This text is a draft suggestion for the definition of the Technology Xml syntax in future Electric
releases.

The syntax is being protyped by
    com/sun/electric/technology/xml/TechnologyParam.xsd - syntax of Xml language
    com/sun/electric/technology/xml/XmlPara,.xsd - reader/writer of Xml language
    com/sun/electric/technology/technologies/mocmosParam.xml - an example in this syntax
but currently they are not at their final syntax.

Technology description will be in symbolic form, where distances are expressed
by the Xml construct "Distance".
Distance is a linear expression which is a sum of terms.
There is an arbitrary number of variable terms and an optional constant term.

<xsd:group name="Distance">
    <xsd:sequence>
        <xsd:element name="rule" minOccurs="0" maxOccurs="unbounded">
            <xsd:complexType>
                <xsd:attribute name="ruleName" type="tns:RuleName" use="required"/>
                <xsd:attribute name="layer" type="tns:LayerName">
                <xsd:attribute name="layer2" type="tns:LayerName">
                <xsd:attribute name="k" type="xsd:double"/>
            </xsd:complexType>
        </xsd:element>
        <xsd:element name="lambda" type="xsd:double" minOccurs="0"></xsd:element>
    </xsd:sequence>
</xsd:group>

The constant term is a double-precision value in display units.
The variable term is a name of a variable and constant double multiplier "k".
The name of the variable is either simple name "ruleName" or
"ruleName" indexed by one or two layers.

Examples of terms are
    <rule ruleName="width" layer="P-Active" k="0.5"/>
    <rule ruleName="overhang" layer="P-Select" layer2="P-Active">
    <lambda>3.0</lambda>

A construct to define values of rules indexed by layer is <layerRule>.
It has ruleName and a map from layers to Distance expressions.
For example:
    <layerRule ruleName="width">
        <layer name="Metal-1>  <rule ruleName="7.1"/></layer>
        <layer name="Metal-2>  <rule ruleName="9.1"/></layer>
    </layerRule>

There will be a section in <foundry> which defines foundry specific rules, for example:
    <Foundry name="SUBM">
        <ruleDef ruleName="7.1" value="3.0"/>
    </Foundry>

Some layer rules are used implicitly. They are:
    <rule name="width" layer="layerName"/>     used as default width of pure layer nodes
    <rule name="thick3d" layer="layerName"/>   used in Display3D and (possibly) in parasitics extraction
    <rule name="height3d" layer="layerName"/>  used in Display3D and (possibly) in parasitics extraction
