
www.Usenet.com
| <-- __Chronological__ --> | <-- __Thread__ --> |
Hi Frank,
I thought last night after appending about something else I meant to mention,
which is that the underlying hash package was re-implemented by R&D for
the IC5033 release, and it solves some bugs and is much better performing too.
I see the problem for the bitmap processing. One idea might be to create all the
shapes once (on a fixed layer), and then you just need to go through them all
and change the layer to the layer you want. Probably what I'd do is:
for(x 0 127
for(y 0 127
rect=dbCreateRect(cv "y0" list(x:y x+1:y+1)
rect~>myCoord=x:y
)
)
Then when you come to use these at some later point, you might want to build
a hash table to speed lookup of each rectangle:
shapeLookup=makeTable('shapeLookup nil)
y0=car(exists(lpp cv~>layerPurposePairs lpp~>layerName=="y0")))
foreach(shape y0~>shapes
shapeLookup[shape~>myCoord]=shape
)
And then you can go through and do things like
shapeLookup[10:15]~>layerName="y2"
which would be much quicker than recreating each time.
Note the above code is not tested in anyway - just pseudo-skill code.
Andrew.
On Tue, 25 Nov 2003 16:40:20 -0800, "gennari" <[EMAIL PROTECTED]> wrote:
>Thanks Andrew.
>
>I didn't know about the bitfield operators and wish I had known about them
>earlier. I just tried '&', '|', and '^', and similar operations which didn't
>work as intended and no one in my office knew how to do these types of
>things.
>
>The bitmap is different. It's for visualization of shapes overlaid on the
>gometry. I'm working in lithography, so I would like to overlay images such
>as simulation results of printed shapes over the original layout shapes in
>Virtuoso. I'm also working on image/pattern matching, so I'm overlaying
>approximate images with complex features (pixel accurate curves) onto the
>layout. I could probably also do this by taking a screenshot of a layout and
>combining that with the image in a graphics program, but then I have to do
>everything by hand instead of using the power of SKILL. It works in SKILL,
>it's just so slow to create a 128x128 image with 16,384 rectangles on
>various layers.
>
>Frank
>
>"Andrew Beckett" <[EMAIL PROTECTED]> wrote in message
>news:[EMAIL PROTECTED]
>> Frank,
>>
>> On Tue, 25 Nov 2003 13:16:02 -0800, "gennari" <[EMAIL PROTECTED]>
>wrote:
>>
>> >A few years ago I had to write a separate C++ program to get around some
>of
>> >the limitations of SKILL, and then call that program from SKILL. In
>> >particular, SKILL/Cadence crashed when I tried to create a hash table of
>> >several hundred thousand x/y points. Also, I couldn't find any way of
>> >performing bit-level operations in SKILL such as bitshifts, bit masking,
>> >etc. In fact I think skill uses 32 bits in all integers, even when I only
>> >need to store an 8-bit value, and that's 4X memory overhead. I eventually
>> >had to implement the layout database and gometry query functions into my
>C++
>> >program to aviod writing I/O files of many MB. Now the program is
>> >independent of Cadence, but I wonder if all that work was really worth
>it.
>> >
>>
>> functions such as bor, band - which are equivalent to operators | and &.
>Also
>> bnand, bnor, bxor, bxnor (operators for each of these too).
>> leftshift, rightshift (<< and >>).
>> The bitfield, bitfield1 functions as well are useful. These are
>equivalents
>> of doing something like:
>>
>> a=1234
>> a<4:2> => 4
>> a<4> => 1
>> a<<1 => 2468
>> a>>2 => 308
>> a&10 => 2
>> a|5 => 1239
>> a^2 => 1232 (xor)
>>
>> Bet you didn't know you could do that ;-(
>>
>> They're all documented, and have been there for as long as I can remember.
>>
>> >Oh, and as a side note, is there any way to create a small bitmap image
>in
>> >Cadence other than building it from single pixel rectangles on the
>> >multi-colored "y0" - "y9" layers in the LSW? It takes a really long time
>to
>> >do this in SKILL.
>> >
>>
>> Depends what you want to use the bitmap for. If it's for menu items, icons
>> etc in DFII, then hiStringToIcon and related functions would help. Some of
>the
>> ^dl (displayList) functions can be used too (don't get used much, but can
>be
>> quite handy).
>>
>> Andrew.
>>
>> >Frank
>> >
>> >"Andrew Beckett" <[EMAIL PROTECTED]> wrote in message
>> >news:[EMAIL PROTECTED]
>> >> You could use the Integrators Toolkit (ITK-DB). This allows you to
>write
>> >> standalone applications which access the database from C, and there is
>> >some
>> >> (limited) support for invoking SKILL from this.
>> >>
>> >> However, I suspect this is not what you want. You can't (for example)
>link
>> >in
>> >> some C code with DFII and call that from SKILL (we don't support that,
>for
>> >> a variety of reasons - one being that it is rarely necessary). What you
>> >can do
>> >> however is to write your computationally intensive tasks in a separate
>> >program,
>> >> which you can then invoke using the ipc function calls (e.g.
>> >ipcBeginProcess),
>> >> and then communicate to that external program either synchronously or
>> >> asynchronously. This can be quite an effective means of doing things
>> >outside.
>> >>
>> >> What sort of intensive operations are you talking about? SKILL can be
>> >pretty
>> >> quick provided that you do things correctly (it's byte-code compiled,
>> >> and runs on a virtual machine).
>> >>
>> >> Regards,
>> >>
>> >> Andrew.
>> >>
>> >>
>> >> On Mon, 24 Nov 2003 15:20:13 -0700, sampath <[EMAIL PROTECTED]> wrote:
>> >>
>> >> >Hi,
>> >> >is there anyway that i can mix skill and c code,
>> >> >I am looking for a way to do some runtime intensive operations in c
>and
>> >> >get the data into a skill code?
>> >> >can somebody tell a solution?
>> >> >sampath
>> >>
>> >> --
>> >> Andrew Beckett
>> >> Senior Technical Leader
>> >> Custom IC Solutions
>> >> Cadence Design Systems Ltd
>> >
>>
>> --
>> Andrew Beckett
>> Senior Technical Leader
>> Custom IC Solutions
>> Cadence Design Systems Ltd
>
--
Andrew Beckett
Senior Technical Leader
Custom IC Solutions
Cadence Design Systems Ltd
| <-- __Chronological__ --> | <-- __Thread__ --> |