Home > Community > Forums > Digital Implementation > How to get rectilinear core coordinates

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: *

 How to get rectilinear core coordinates 

Last post Tue, Jun 19 2012 4:31 AM by Nataraja G. 10 replies.
Started by Nataraja G 03 Oct 2010 10:36 PM. Topic has 10 replies and 5381 views
Page 1 of 1 (11 items)
Sort Posts:
  • Sun, Oct 3 2010 10:36 PM

    • Nataraja G
    • Not Ranked
    • Joined on Sun, Jun 20 2010
    • Hyderabad, Andhra Pradesh
    • Posts 16
    • Points 360
    How to get rectilinear core coordinates Reply

     we got die coordinates using

    dbGet top.fPlan.boxes 

     

    but how to get core boxes  ? 

     

    thx

    -Nataraja G
    • Post Points: 35
  • Wed, Oct 6 2010 6:42 AM

    • BobD
    • Top 25 Contributor
    • Joined on Fri, Jul 11 2008
    • Chelmsford, MA
    • Posts 247
    • Points 9,325
    Re: How to get rectilinear core coordinates Reply

    These boxes aren't stored in the db directly so I can't show you an easy way to get the core boxes for a rectilinear design unfortunately.

    If you could share some information about what you're trying to accomplish maybe we could suggest another way to get you the data you're looking for.  For example you might want to query the standard cell row boxes instead of the overall core boxes with:

    dbGet top.fplan.rows

    Thanks,
    Bob

     

    • Post Points: 20
  • Wed, Oct 6 2010 9:53 AM

    • bharat kurra
    • Not Ranked
    • Joined on Tue, Jun 22 2010
    • hyd, Andhra Pradesh
    • Posts 14
    • Points 365
    Re: How to get rectilinear core coordinates Reply

     

    Not exactly our intention is to draw a shield metal around our tile,we could draw it for rectangular tile by having the core coordinates...if we can get the core cooridinates for a rectilineartile also....our job is done

    Thanx

    Bharat kurra

    • Post Points: 35
  • Fri, Oct 8 2010 9:02 AM

    • jgentry
    • Top 150 Contributor
    • Joined on Thu, Sep 11 2008
    • Fort Collins, CO
    • Posts 51
    • Points 1,185
    Re: How to get rectilinear core coordinates Reply

    If having the points associated with the polygon that surrounds the core box would be helpful, you could process the coordinates that come back from 'dbGet top.fplan.rows.box'.  For instance:

    unset -nocomplain polys points
    foreach rect [dbGet top.fplan.rows.box] {
      foreach {llx lly urx ury} $rect {break}
      foreach x [list $llx $urx] {
        foreach y [list $lly $ury] {
          if {! [info exists points($x,$y)]} {
            set points($x,$y) 0
          } else {
            incr points($x,$y)
          }
        }
      }
    }
    foreach xy [array names points] {
      if {$points($xy) == 0} {
        lappend polys [split $xy ,]
      }
    }


    ...Now the 'polys' list contains the points corresponding to the core polygon. 

    Jason

    • Post Points: 20
  • Fri, Oct 8 2010 11:23 AM

    • BobD
    • Top 25 Contributor
    • Joined on Fri, Jul 11 2008
    • Chelmsford, MA
    • Posts 247
    • Points 9,325
    Re: How to get rectilinear core coordinates Reply

    In our 10.1 release, we'll have a multi-purpose geometric shape processing command which would be helpful in this scenario.  Until then, I hope a scripted approach like JasonG's will get you the information you're seeking.

    10.1 is due out later this year.

    • Post Points: 20
  • Mon, Nov 14 2011 4:01 PM

    • pdgeek
    • Not Ranked
    • Joined on Wed, Feb 11 2009
    • Tempe, AZ
    • Posts 6
    • Points 90
    Re: How to get rectilinear core coordinates Reply

    Hello,

    Oddly enough I have a need for getting the same list of coordinates and was able to use this script to generate them. But ... of course there is always a but.

    But now that I have the list of points that are returned in $polys I was trying to pass this list to create a rectilinear partition using something like this:

    setObjFPlanPolygon Module MODULENAME $polys

    but the setObj* cmd does not like the list I passed it. I think part of the problem is that the list that is returned in $polys is not in rectilinear order going around the shape; it has the list of points basically but they may not be sorted rectilinearly.

    BobD, you mentioned some commands in 10.1 that might help with multi-purpose shape processing. Can you shed more light on what these commands are and if they might possibly help here?

    Tom 

    • Post Points: 20
  • Tue, Nov 15 2011 5:21 AM

    • BobD
    • Top 25 Contributor
    • Joined on Fri, Jul 11 2008
    • Chelmsford, MA
    • Posts 247
    • Points 9,325
    Re: How to get rectilinear core coordinates Reply

    Hi Tom,

    Thanks for giving us all a reason to come back and revisit this issue after some time has passed and the tool has improved.

    dbShape is the command that debuted in 10.1 that makes this easier. Here's how you could use it to define a rectilnear partition that is coincident with the rectilinear shape that makes up all of the rows in the design. Say I have an "L" shaped design and the core to left/right/top/bottom is 5 microns. The rows get snapped (depending on preferences) to something like the M2 pitch horizontally and the standard cell rows vertically. If we want to get the box of each row:

    encounter 1> dbGet top.fplan.rows.box
    {5.28 5.04 94.38 10.08} {5.28 10.08 94.38 15.12} {5.28 15.12 94.38 20.16} {5.28 20.16 94.38 25.2} {5.28 25.2 94.38 30.24} {5.28 30.24 94.38 35.28} {5.28 35.28 94.38 40.32} {5.28 40.32 44.88 45.36} {5.28 45.36 44.88 50.4} {5.28 50.4 44.88 55.44} {5.28 55.44 44.88 60.48} {5.28 60.48 44.88 65.52} {5.28 65.52 44.88 70.56} {5.28 70.56 44.88 75.6} {5.28 75.6 44.88 80.64} {5.28 80.64 44.88 85.68} {5.28 85.68 44.88 90.72}

    Then we can merge these shapes with dbShape:

    encounter 11> dbShape [dbGet top.fplan.rows.box]
    {44.88 5.04 94.38 40.32} {5.28 5.04 44.88 90.72}

    dbShape has a lot of other functionality but when called here it can find a simple list of boxes that represent a list of shapes. It can also output polygons instead, but there's a dbSetObjFPlanBoxList command that can accept a list of rectangles to create a rectilinear shape so I'll use that.

    Notice this problem that comes up however:

    encounter 15> setObjFPlanBoxList Module i_a [dbShape [dbGet top.fplan.rows.box]]           
    No help is available for 'rdaGetBoxList'.
          You might have typed the command name incorrectly
          (command names are case sensitive), or this is an
          unknown or unsupported command.

    **ERROR: (ENCSYC-194):  Incorrect usage for command 'rdaGetBoxList'.

    What's happening is that setObjFPlanBoxList expects a flat list of coordinates rather than lists. If we flatten the list with "join", setObjFPlanBoxList successfully 

    encounter 16> setObjFPlanBoxList Module i_a [join [dbShape [dbGet top.fplan.rows.box]]]

    Looks like we need to improve setObjFPlanBoxLists's tolerance to accept list of lists and in the mean time improve the error messaging. Longer term it might also make sense to allow dbSet to set the "boxes" value directly. I'll check with our developers and push for improvements.

    Let us know if you have any comments or questions on this.

    Thanks!
    -Bob

    • Post Points: 20
  • Wed, Nov 16 2011 4:51 PM

    • Kevin P Thomas
    • Not Ranked
    • Joined on Thu, Nov 6 2008
    • Trivandrum, Kerala
    • Posts 9
    • Points 210
    Re: How to get rectilinear core coordinates Reply

    dbGet top.fPlan.corebox will give the core box coordinates.

    But this can be used for block level implementation.

    In Chip sometimes the core box will be overlapping with the IO cells. 

    Filed under:
    • Post Points: 5
  • Wed, Nov 23 2011 10:30 AM

    • pdgeek
    • Not Ranked
    • Joined on Wed, Feb 11 2009
    • Tempe, AZ
    • Posts 6
    • Points 90
    Re: How to get rectilinear core coordinates Reply

    Hi Bob,

    Thank you very much for your quick response and sorry I did not reply back sooner. This forum thread has been very helpful to provide a means for setting a rectilinear shape on a partition module in our design.

    Your response to my bump to the thread showing the use of dbShape and the subtle error you got with setObjFplanBoxList and the related use of join gave me exactly what I needed to try and it worked.

    One side comment. So in your response you used setObjFplanBoxList rather than the setObjFplanPolygon I had showed in my post but I did not catch this detail despite you mentioning that you chose *BoxList since "can accept a list of rectangles". I typed in your example cmds in my real design understanding them individually and then the final one, etc. and it all worked. But then I went to my TCL code where I had my previous *Polygon and did not change that but instead just passed everything else after that; I didn't really notice you had used a different function and of course it did not work. I quickly noticed the difference and now have it working in our TCL code.

    It makes me wonder if there are any good useful primers on the differences in how polygons or lists or lists of list can be used in FE TCL in difference cases, I suppose with a focus on physical shapes and coordinates and if not it might be a potential blog post idea. Even the subtle join thing I still have not fully tried to appreciate.

    One other observation is that this post thread just like others often originates back in time from earlier versions of EDI and as I look at other useful blog/forum posts on use of dbGet, etc. sometimes will see "this proc had an issue with this aspect and we are planning improvements in upcoming release. Maybe some of those posts will get bumped in a similar way in case the newer EDI versions have been enhanced to do things better than before.

    Thanks again everyone for this thread and your suggestions!

    Regards,

    Tom

    • Post Points: 5
  • Tue, Jun 19 2012 4:29 AM

    • Nataraja G
    • Not Ranked
    • Joined on Sun, Jun 20 2010
    • Hyderabad, Andhra Pradesh
    • Posts 16
    • Points 360
    Re: How to get rectilinear core coordinates Reply
    polys is having the END coordinates but the order is not correct because the order in polys depends on the order of the list [array names points] !! Can you check this ?
    -Nataraja G
    • Post Points: 5
  • Tue, Jun 19 2012 4:31 AM

    • Nataraja G
    • Not Ranked
    • Joined on Sun, Jun 20 2010
    • Hyderabad, Andhra Pradesh
    • Posts 16
    • Points 360
    Re: How to get rectilinear core coordinates Reply
    The above comment is inline with Jason's message "If having the points associated with the polygon that surrounds the core box would be helpful, you could process the coordinates that come back from 'dbGet top.fplan.rows.box'. For instance: unset -nocomplain polys points foreach rect [dbGet top.fplan.rows.box] { foreach {llx lly urx ury} $rect {break} foreach x [list $llx $urx] { foreach y [list $lly $ury] { if {! [info exists points($x,$y)]} { set points($x,$y) 0 } else { incr points($x,$y) } } } } foreach xy [array names points] { if {$points($xy) == 0} { lappend polys [split $xy ,] } } ...Now the 'polys' list contains the points corresponding to the core polygon. Jason "
    -Nataraja G
    • Post Points: 5
Page 1 of 1 (11 items)
Sort Posts:
Started by Nataraja G at 03 Oct 2010 10:36 PM. Topic has 10 replies.