Re: Digest for electricvlsi@googlegroups.com - 3 updates in 2 topics

8 views
Skip to first unread message

Alexandre Rusev

unread,
Nov 30, 2020, 10:18:20 AM11/30/20
to electr...@googlegroups.com
My question may be unclear, sorry.

I mean node cuts scaling rules. This is about  how to add cuts or vias automatically when we are increasing size of resistor or capacitor.



Where the cut replication rules are coded in this  fragment of XML desc?
(How cuts are placed when size of resistor scaled in X/Y directions)

    <primitiveNode name="Hi-Res-Poly2-Resistor" fun="RESHIRESPOLY2">
        <nodeBase>
            <box>
                <lambdaBox klx="-20.0" khx="20.0" kly="-5.0" khy="5.0"/>
            </box>
        </nodeBase>
        <nodeLayer layer="Hi-Res" style="FILLED">
            <box>
                <lambdaBox klx="-22.0" khx="22.0" kly="-7.0" khy="7.0"/>
            </box>
        </nodeLayer>
        <nodeLayer layer="Metal-1" style="FILLED">
            <box khx="-1.0">
                <lambdaBox klx="-27.0" khx="-23.0" kly="-2.0" khy="2.0"/>
            </box>
        </nodeLayer>
        <nodeLayer layer="Metal-1" style="FILLED" portNum="1">
            <box klx="1.0">
                <lambdaBox klx="23.0" khx="27.0" kly="-2.0" khy="2.0"/>
            </box>
        </nodeLayer>
        <nodeLayer layer="Poly-Cut" style="FILLED">
            <multicutbox khx="-1.0" sizex="2.0" sizey="2.0" sep1d="3.0" sep2d="3.0">
                <lambdaBox klx="-26.0" khx="-24.0" kly="0.0" khy="0.0"/>
            </multicutbox>
        </nodeLayer>
        <nodeLayer layer="Poly-Cut" style="FILLED">
            <multicutbox klx="1.0" sizex="2.0" sizey="2.0" sep1d="3.0" sep2d="3.0">
                <lambdaBox klx="24.0" khx="26.0" kly="0.0" khy="0.0"/>
            </multicutbox>
        </nodeLayer>
        <nodeLayer layer="Polysilicon-2" style="FILLED">
            <box>
                <lambdaBox klx="-30.0" khx="30.0" kly="-5.0" khy="5.0"/>
            </box>
        </nodeLayer>
        <primitivePort name="left">
            <portAngle primary="0" range="180"/>
            <portTopology>0</portTopology>
            <box khx="-1.0">
                <lambdaBox klx="-26.0" khx="-24.0" kly="-1.0" khy="1.0"/>
            </box>
            <portArc>Metal-1</portArc>
        </primitivePort>
        <primitivePort name="right">
            <portAngle primary="0" range="180"/>
            <portTopology>1</portTopology>
            <box klx="1.0">
                <lambdaBox klx="24.0" khx="26.0" kly="-1.0" khy="1.0"/>
            </box>
            <portArc>Metal-1</portArc>
        </primitivePort>
    </primitiveNode>




I mean the question in the sense of this paragraph:

Quotation of Chap08-09:
<<When all of the geometry, highlighting, and ports have been placed, you can double-check your work with the Identify Primitive Layers command (in menu Edit / Technology Editing), which will display this information (note that the port name "Center" has been moved away for clarity):
Figure 8.21

The final step in the definition of this node is to create three more copies that illustrate scaling in both axes. This is done simply by selecting all five objects and using the Duplicate command (in menu Edit). Once duplicated in a new location, each piece must be stretched appropriately. In this example, the contact cut is designed so that the number of cut elements grows with the node. Thus, when stretched horizontally or vertically, there are two cuts, and when stretched in both directions there are four cuts. The technology editor will determine precise multicut rules from the cut spacing and the amount of stretch, so that even more cuts will appear as the node grows larger. The finished node definition is shown below. All that is necessary is to convert this library back to a technology, and the new technology will have this node.

Figure 8.22

>>


On Mon, Nov 30, 2020 at 9:30 AM <electr...@googlegroups.com> wrote:
Alexandre Rusev <cybe...@gmail.com>: Nov 30 12:38AM +0300

Looking into Electric docs I don't see extensible explanation ("Creating
new technologies") how scaling rules are coded for nodes in XML file.
 
I need to parse code implementation to make it out ...
 
Could anyone point out document, where scaling of teh nodes in XML is
explained?
Steven Rubin <str...@staticfreesoft.com>: Nov 29 01:58PM -0800

The only scaling rules available for a technology are the "scale units"
that convert lambda distances (the scalable value) to nanometers. This
scale appears near the top of the XML file and is controllable from the
"Technology / Units" Preferences. There is no way to adjust the details
of a technology from this scale.
 
   -Steven Rubin
 
On 11/29/2020 1:38 PM, Alexandre Rusev wrote:
Alexandre Rusev <cybe...@gmail.com>: Nov 29 12:56PM +0300

Ok.
 
Before having good understanding of scaling algos in Electric I am not
ready to code scaling rule infering appropriately ;)
(straight forward approaches to fix it don't work for me)
Postponing my efforts on this direction in favour of using XML description
 
But it would be convenient to use advantage of placing geometries using
GUI, than add scaling rules in textual form.
 
 
Adam had to implement a special code generator due to generate complex
geometries for Sky130..
 
Would you like to include his code to the main repository as example
tech-generator?
https://gitlab.com/westernsemico/com.westernsemico.vlsi
 
 
Alex
 
You received this digest because you're subscribed to updates for this group. You can change your settings on the group membership page.
To unsubscribe from this group and stop receiving emails from it send an email to electricvlsi...@googlegroups.com.

Steven Rubin

unread,
Nov 30, 2020, 1:46:37 PM11/30/20
to electr...@googlegroups.com

Ah, you want to know how multi-cut contacts are specified in the XML. That is explained in the page on technology XML files:

    https://www.staticfreesoft.com/jmanual/mchap08-10.html

Look for the term "multicutbox" and you will see where these contact arrangements are defined.

   -Steven Rubin

--
You received this message because you are subscribed to the Google Groups "Electric VLSI Editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email to electricvlsi...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/electricvlsi/CACoSTqJSDYN%2Bk%3DKrStCEA5yivPeAEN-nqbZC7D-zjdgrTACS9g%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages