Home > Community > Forums > Custom IC Design > dbLayerTile need help

Email

* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

 dbLayerTile need help 

Last post Wed, Oct 17 2012 4:59 AM by Andrew Beckett. 12 replies.
Started by lrl1skdev 14 Feb 2009 04:50 AM. Topic has 12 replies and 2981 views
Page 1 of 1 (13 items)
Sort Posts:
  • Sat, Feb 14 2009 4:50 AM

    • lrl1skdev
    • Not Ranked
    • Joined on Sat, Feb 14 2009
    • Posts 2
    • Points 40
    dbLayerTile need help Reply

    Hi everyone,

     I am writing a code where i needed to fracture layers vertically and horiontally. I used dbLayerTile to fracture them vertically and I created my own version that fracture layers horiontally since I could not find anything in the documantation that do this job. My problem is I wanted to boost the performance of the code so my first thought is to rotate them by 90deg and then execute dbLayerTile a second time then bring them altogether to their original position. But how to write this in a code in a simplest way still puzzles me.

    Any suggestions?

    • Post Points: 20
  • Mon, Feb 16 2009 6:38 AM

    • Bernd
    • Top 500 Contributor
    • Joined on Tue, Jul 15 2008
    • Unterhaching, Bavaria
    • Posts 26
    • Points 945
    Re: dbLayerTile need help Reply

    You probably could use 'leChopShape', if you are not going to use it within a PCell.

    leChopShape( d_shapeId l_points g_closed [ g_remove ] [ x_sides ] )
         => l_newShapes | nil


    Cuts the shape d_shapeId using the chop shape l_points.

    Just another lonesome cad guy
    • Post Points: 20
  • Mon, Feb 16 2009 1:13 PM

    • lrl1skdev
    • Not Ranked
    • Joined on Sat, Feb 14 2009
    • Posts 2
    • Points 40
    Re: dbLayerTile need help Reply

    Thanks Bernd for the quick reply.

    Yes you were right, this is exactly what i have done in my code. Now I have already discarded to used dbLayerTile in my code, instead I made a sub routine that fractures a target dbobj both horizontal and vertical using leChopShape. now my code looks much simplier.

    by the way, we are both from unterhaching, I'm from fasanenpark.

    • Post Points: 20
  • Tue, Oct 16 2012 11:21 PM

    • prandi
    • Not Ranked
    • Joined on Wed, Oct 17 2012
    • Posts 10
    • Points 185
    Re: dbLayerTile need help Reply

     Is there any comamnd in skill which splits a polygon into max of 2 rectangles.

    I am writing a skill code which needs stretch  all the poly gates by fixed distance and hence entire layout should move accordingly maintaining others shapes like contacts lengts/widths as constant..can anyone help me of how to  go with this?

     Thanks & Regards,

    prani

    Filed under:
    • Post Points: 20
  • Wed, Oct 17 2012 1:31 AM

    Re: dbLayerTile need help Reply

    What's wrong with dbLayerTile? Obviously if the polygon is not rectangular or L-shaped, it can't be fractured into only two rectangles, but apart from that, surely that does what you want?

    Regards,

    Andrew.

    • Post Points: 20
  • Wed, Oct 17 2012 1:40 AM

    • prandi
    • Not Ranked
    • Joined on Wed, Oct 17 2012
    • Posts 10
    • Points 185
    Re: dbLayerTile need help Reply

     Andrew,

    In few cases, poly is getting fractured into more than two rectangles and all the polys(specially polys of "polygon" lpp) are not getting stretched by same length(say 0.015),I dont know how to overcome this and make my code work properly.

    • Post Points: 20
  • Wed, Oct 17 2012 1:52 AM

    Re: dbLayerTile need help Reply

     It's not that clear to me why you need to fracture it or precisely what you're trying to do - maybe some pictures would help (you can upload a picture via the "Options" tab at the top). 

    Alternatively there are various easily found algorithms for fracturing or decomposing a polygon into rectangles - do a google search for "algorithm to tile polygon with rectangles". However, this is almost certainly overkill if it's an L-shaped polygon - you should be able to detect that reasonably easily and split it yourself. Off the top of my head, without thinking about it enough to be sure that this is correct, I'd say you could do something like this:

    1. Ensure that the polygon has 6 points and all angles are 90 degrees (i.e. each successive point only changes the x or y but not both from the last point)
    2. Find the bBox of the polygon (the database will return this for you via ~>bBox, but it's easy to compute)
    3. Look for a point that is not on one of the four corners of the bounding box, and then that's the point at which you chop the polygon into two (extend the line from the point you've found in the direction of the next point which is not on the bBox corners). That next point will also give you the start of the second rectangle.

    This is all relatively straightforward to solve.

    Regards,

    Andrew.

    • Post Points: 20
  • Wed, Oct 17 2012 2:03 AM

    • prandi
    • Not Ranked
    • Joined on Wed, Oct 17 2012
    • Posts 10
    • Points 185
    Re: dbLayerTile need help Reply

    Andrew,

    Finally,I am writing a skill code which increases poly length by 0.015 for the picture attached.

    I used

    polys=setof(sh cv~>shapes sh~>lpp==list("poly" "drawing"))

    dblayerTile(cv "active"  polys)

    but all the polys are getting increased by 0.015,in few cases there is an increase of 0.01(which is double)

    so,I dont know how to go about it. 


    • Post Points: 20
  • Wed, Oct 17 2012 3:08 AM

    Re: dbLayerTile need help Reply

    Wouldn't it be easier to find the bBox of all the poly, widen that bBox a bit, use dbLayerSize to increase the size of the poly by a certain amount and then And it with the enlarged bBox (to chop off any oversizing at the top and bottom)?

    Something like that?

    Andrew.

    • Post Points: 20
  • Wed, Oct 17 2012 4:23 AM

    • prandi
    • Not Ranked
    • Joined on Wed, Oct 17 2012
    • Posts 10
    • Points 185
    Re: dbLayerTile need help Reply

     And using dbLayerAnd?..ilooks like dbLAyerAnd ts not working out/expected result..

    • Post Points: 20
  • Wed, Oct 17 2012 4:36 AM

    Re: dbLayerTile need help Reply

    dbLayerAnd should work fine - that was what I meant by "And".

    Andrew.

    • Post Points: 20
  • Wed, Oct 17 2012 4:48 AM

    • prandi
    • Not Ranked
    • Joined on Wed, Oct 17 2012
    • Posts 10
    • Points 185
    Re: dbLayerTile need help Reply
    Andrew,
    Thanks a lot for the constant help and support since morning. One last issue: active is getting formed on the extended polys..

    I used the command chk=dbLayerSize(cv "POLY" list(gate) 0.0005)

    and did dbLayerAnd(cv :POLY"  list(chk) list(gate))

    then dbDeleteObject(gate)

    On the final extended poly,active is getting formed...
    • Post Points: 20
  • Wed, Oct 17 2012 4:59 AM

    Re: dbLayerTile need help Reply

    The code you've posted would appear to me to oversize the gates a little (by 0.5nm), and then and those shapes with the original gate, and then delete the original gate. The result of the dbLayerAnd would be the same as the original gates, so I can't see what you're doing here. You'd have both the oversized gates and copy of the gates (the result of the And). I can't see how "active is being formed" since there's no mention of active here.

    Your code doesn't look correct from what you've posted - but I suspect it's only a small bit of the code and not enough detail for anyone to figure out what you're doing.

    Andrew

    • Post Points: 5
Page 1 of 1 (13 items)
Sort Posts:
Started by lrl1skdev at 14 Feb 2009 04:50 AM. Topic has 12 replies.