Keith

Forum Replies Created

Viewing 15 posts - 121 through 135 (of 861 total)
  • Author
    Posts
  • in reply to: Grid resolution #2118
    Keith
    Keymaster

    You might be able to use the Edit->Scale command to scale cells after changing the dbu size.

    in reply to: Grid resolution #2115
    Keith
    Keymaster

    No, it's something you set when you create a library. For example the File->New Library command. Or when importing a techfile for the first time.

    You can set a library's DBU retrospectively, for example

    lib = getLibByName("some_lib_name")
    lib.dbuPerUU(10000)

    Then any cellViews subsequently created will inherit this dbuPerUU factor. Or, you can set an existing cellView's DBUPerUU by querying its properties (q bindkey). This will have the side effect of scaling anything in the cellView.

    in reply to: Grid resolution #2113
    Keith
    Keymaster

    What's your database resolution?

    e.g. open a cellview and in the command line type

    cv = getEditCellView()
    print cv.dbuPerUU()

    If it's 1000, then snapping will be rounded to 1nm. YOu would need to set it to 2000, or maybe 10000 in order to accept sub-nm grid/snapping.

    in reply to: NCSU 15nm PDK #2109
    Keith
    Keymaster

    I updated it this morning as it was missing the extraction pcells.

    in reply to: Align option not working #2106
    Keith
    Keymaster

    The align command doesn't work on the selected set – after starting the command and setting any options you use the 'Set Reference Object' button and click on the reference to align to, then click sequentially on the shapes you want to align.

    in reply to: NCSU 15nm PDK #2105
    Keith
    Keymaster

    Normally you would get that error if using an older version of Glade which does not support the latest library version.

    Have you tried with the latest version (4.6.27)?

    in reply to: enclosure rule error #2102
    Keith
    Keymaster

    If you are an academic user the advanced DRC feature is free, just send an email with your host ID (use the hostid program in the distribution directory) from your university address. If a commercial user, please enquiry for more details.

    in reply to: enclosure rule error #2100
    Keith
    Keymaster

    These are part of the Advanced DRC functionality for Finfet etc. technologies. and are licensed.

    Please send an email to support@peardrop.co.uk for more details.

    regards

    Keith

    in reply to: Exporting LEF file from layout #2098
    Keith
    Keymaster

    There are some requirements for exporting LEF. You need to add connectivity to the shapes you want to designate as pins, for example. Have you looked at the section in the FAQ about creating LEF from GDS2? That gives some details of a typical flow.

    in reply to: drcUnInit w/o drcInit crashes Glade #2095
    Keith
    Keymaster

    It shouldn?t crash, but for various reasons if drcInit() or the preferred geomBegin() is not called, then things are highly likely to fail.

    in reply to: reading points from existing shapes #2088
    Keith
    Keymaster

    What you're trying to do is read data in one cellView (let's call it cv1) and write data to another cellView (cv2), and you have to open the cellViews yourself.

    So in general you want to open a cellView to get a pointer to it. e.g. if lib is the library that contains both cellViews,

    # open a cellView with the given cell name and view name in read mode:
    cv1 = lib.dbOpenCellView('mycell', 'layout', 'r')

    # open a cellView with another cellName/viewName in write ('w') or append ('a') mode:
    cv2 = lib.dbOpenCellView('mycell', 'abstract', 'a')

    Of course as previously if you just want to process the current open cellView you can use getEditCellView() for the first case.

    If the two cells are in the same library then lib = cv.lib() will get you the library… if you want to get some named library, assuming it exists, then

    lib = getLibByName('libName')

    will find it for you, or return a NoneType if it fails.

    Don't forget to use cv.update() to commit any shape creation to the cellView.

    in reply to: reading points from existing shapes #2086
    Keith
    Keymaster

    The answer as always is that it depends on what you're trying to do.

    Some cell libraries have layout data which includes a boundary rectangle for the std cell. Then its just a case of getting this, and creating a rectangle of similar size in your abstract view, on the required layer (for LEF export this is the 'boundary drawing' layer/purpose pair.

    Other cases which you need to work out the size of the rectangle are going to depend on exactly what's there.

    In general, you can use on of two methods:
    – get the lpp (layer purpose pair) of shapes of interest, then iterate thru them, identifying the ones of interest and extracting the required coordinates
    – use a region query to find shapes on a specified lpp in a specified area

    Look in the cellView class / lpp class for iterators and query ( getOverlaps() will get you just shapes in a rectangular region).

    Then, by iterating through the shapes on the layer in question, you could for example get the max/min x/y values and create a rectangle using those values.

    An example (I haven't tested it):

    Code:
    cv = getEditCellView()

    lib = cv.lib()
    tech = lib.tech()
    layerNum = tech.getLayerNum('METAL1', 'pin')
    lpp = cv.getLpp(layerNum)

    # Gett an iterator of all the shapes in the lpp
    iter = objIterator(lpp)
    while not iter.end() :
    obj = iter.value()
    obj = obj.toShape()
    box = obj.bBox()
    # Do something with the shape, in this case print its bounding box
    print '(', box.left(), ',', box.bottom(), ') (', box.right(), ',', box.top(), ')'
    iter = iter.next()
    #

    in reply to: abstract layer clarification #2084
    Keith
    Keymaster

    This issue is fixed in a patch version of 4.6.21 dated 16th Nov 2017

    in reply to: abstract layer clarification #2080
    Keith
    Keymaster

    When you select a shape, the brief info on the status bar gives the layer name , or, if the shape also has net info, it gives the net info instead. If the selected object is an instance, it gives the instance name.

    If you want more info on what is selected, use the ?q? bindkey or edit properties command.

    I?m not sure if there is some confusion here about ?net?, you can have a layer with purpose ?net?, but whether a shape has connectivity information i.e a net name is different.

    If you import a LEF then the abstract views will normally have shapes on e.g layer M1, purpose ?pin?, and these shapes will have a net associated with them. Other shapes (obstructions) will be on e.g M1 purpose ?boundary? and have no net info.

    It is hard to know exactly what you have without seeing an example. A single cell would probably be enough.

    in reply to: view/display shapes #2078
    Keith
    Keymaster

    Sure, use saveDerived(edgelayer, ?layername?, ?purposename?)
    Where edgelayer is the derived layer you wish to save, and layername/purposename are an existing layer/purpose. You can use a system layer e,g ?y4? ?drawing? for the destination layer/purpose.

Viewing 15 posts - 121 through 135 (of 861 total)