Technology contains a set of PrimitiveNode descriptions.
Technology contains pure-layer PrimitiveNodes for each layer and more
complicated PrimitiveNodes like transistors.
Instances of PrimitiveNode in a Cell are called NodeInst.

What do you need:
a) to use some PrimitiveNode from "mocmos" to create a NodeInst;
b) to enhance "mocmos" by a new description of PrimitiveNode ?

There are methods like PrimitiveNode.makeInstacne for (a).

"mocmos" is not easy extendable, because it is highly parameterized.
You can copy its description into text technology file leke mymocmos.xml
and then customize it for (b).




On Mon, Nov 18, 2013 at 2:15 AM, analog_match <[email protected]>wrote:

> Thanks Dima,
>
> Using fromLambda worked for the rectangles and now the bounds match but
> now the PrimitiveNode.newInstance gives an assertion exception as follows:
>
> Rect1 bounds java.awt.Rectangle[x=0,y=0,width=5,height=5]
> Technology Technology mocmos
> Rect2 bounds java.awt.Rectangle[x=5,y=10,width=20,height=30]
> Jython: Traceback (most recent call last):
>   File "<string>", line 32, in <module>
> at
> com.sun.electric.technology.Technology.addNodeProto(Technology.java:2437)
> at com.sun.electric.technology.PrimitiveNode.<init>(PrimitiveNode.java:839)
> at com.sun.electric.technology.PrimitiveNode.<init>(PrimitiveNode.java:785)
> at
> com.sun.electric.technology.PrimitiveNode.newInstance(PrimitiveNode.java:1095)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
>
> java.lang.AssertionError: java.lang.AssertionError
>
> Thanks
>
>
>
>
> On Saturday, November 16, 2013 11:54:06 PM UTC-5, Dima Nadezhin wrote:
>>
>> Use ERectangle.fromLambda(0, 0, 5, 5) for your purposes.
>> ERectangle.fromFixp(...) is a internal method with arguments scaled.
>>
>>
>> On Sun, Nov 17, 2013 at 6:11 AM, analog_match <[email protected]>wrote:
>>
>>> I am trying to write some Jython code that will simply create a new node
>>> using PrimitiveNode.newInstance(). However, there are several issues that
>>> arise that I would appreciate some feedback. The code is below:
>>>
>>> from com.sun.electric.database.geometry import (ERectangle, Poly,
>>> EPoint)
>>> from com.sun.electric.technology import (Technology, PrimitiveNode,
>>> EdgeH, EdgeV, ArcProto, TechFactory, Xml)
>>> from java.awt import Rectangle
>>>
>>>
>>> l=tech.findLayer("Metal-1")
>>> p=tech.findLayer("Polysilicon-1")
>>> e=ERectangle.fromFixp(0,0,5,5)
>>> print 'Rect1 bounds',
>>>
>>> print e.getBounds()
>>> ttf=Technology.findTechnology("mocmos")
>>> print 'Technology',
>>> print ttf
>>>
>>> edg1=EdgeH(0.5, 0.0)
>>> edg2=EdgeV(0.5, 0.0)
>>> edg3=EdgeH(-0.5, 0.0)
>>> edg4=EdgeV(-0.5, 0.0)
>>>
>>> tp1=Technology.TechPoint(edg1, edg2)
>>> tp2=Technology.TechPoint(edg3, edg4)
>>>
>>> tl1=Technology.NodeLayer(p, 1, Poly.Type.FILLED, 2, [tp1, tp2])
>>> tl2=Technology.NodeLayer(l, 3, Poly.Type.FILLED, 4, [tp1, tp2])
>>> #
>>> #aRect=ERectangle.fromFixp(0, 0, 10, 15)
>>> r=Rectangle(5, 10, 20, 30)
>>> aRect=ERectangle.fromFixp(r)
>>> print 'Rect2 bounds',
>>> print aRect.getBounds()
>>> pres=PrimitiveNode.newInstance('YRES', ttf, 10.0, 15.0, aRect, [tl1,
>>> tl2])
>>> #pres=PrimitiveNode.newInstance('YRES', ttf, 10.0, 15.0,  [tl1, tl2])
>>>
>>> When I run the script from Electric I get the following messages:
>>>
>>>
>>> Rect1 bounds java.awt.Rectangle[x=0,y=0,width=1,height=1]
>>> Technology Technology mocmos
>>> Rect2 bounds java.awt.Rectangle[x=0,y=0,width=1,height=1]
>>> Jython: Traceback (most recent call last):
>>>   File "<string>", line 41, in <module>
>>> at com.sun.electric.util.math.EDimension.<init>(EDimension.java:54)
>>>  at com.sun.electric.technology.PrimitiveNode.<init>(
>>> PrimitiveNode.java:820)
>>> at com.sun.electric.technology.PrimitiveNode.<init>(
>>> PrimitiveNode.java:785)
>>>  at com.sun.electric.technology.PrimitiveNode.newInstance(
>>> PrimitiveNode.java:1095)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>  at sun.reflect.NativeMethodAccessorImpl.invoke(
>>> NativeMethodAccessorImpl.java:39)
>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(
>>> DelegatingMethodAccessorImpl.java:25)
>>>  at java.lang.reflect.Method.invoke(Method.java:597)
>>>
>>> java.lang.IllegalArgumentException: java.lang.IllegalArgumentException
>>>
>>>
>>> Issue #1: Although the two rectangles are defined with different
>>> dimensions, the getBounds() return the same value for both.
>>>
>>> Issue #2:Why do I get the IllegalArgumentException. As far as I can make
>>> out, I have used the arguments as described in the documentation.
>>>
>>> Any insight into this or suggestions will be appreciated.
>>>
>>> Thanks
>>>
>>> --
>>> 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 [email protected].
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>
>>  --
> 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 [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to