Home > Community > Forums > Custom IC SKILL > Deleting Schematic instance and instantiating another device on the same origin

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

 Deleting Schematic instance and instantiating another device on the same origin 

Last post Tue, Aug 7 2012 11:49 PM by Reinice. 19 replies.
Started by Vijay Srinivas 01 Jan 2012 04:21 PM. Topic has 19 replies and 6505 views
Page 1 of 2 (20 items) 1 2 Next >
Sort Posts:
  • Sun, Jan 1 2012 4:21 PM

    Deleting Schematic instance and instantiating another device on the same origin Reply

    Dear All,

    I am looking to do the following thing using SKILL

    1. Open a schematic and look for a specific instance.

    2. Delete the instance.

    3. Instantiate another cell at the same origin (Both the symbols match in pin locations.)

     

    I am not able to identify, how I can get the origin of the original instance before deleting it. Any kind of help is much appreciated.

     

    Please help!

     

    Thanks,

    Vijay

    • Post Points: 20
  • Sun, Jan 1 2012 11:12 PM

    Re: Deleting Schematic instance and instantiating another device on the same origin Reply

    Vijay,

    You'll want instId~>xy to get the location of the existing instance. You will also want instId~>orient to get the orientation of the instance too (so the new instance has the same rotation).

    To find the existing instance, if you know the name, you can use dbFindAnyInstByName, and it would be dbDeleteObject to delete it.

    Regards,

    Andrew.

    • Post Points: 20
  • Mon, Jan 2 2012 9:53 AM

    Re: Deleting Schematic instance and instantiating another device on the same origin Reply

    Hi Andrew,

     

    Thank you for your quick and accurate response. I have to find specific devices and copy over some of the existing parameters to the new instantiations. 

    I am planning to use dbOpenCellViewByType and use dbCreateInst to create the instance. And then update the specific parameters with the parameters I had saved previously.

    One quick question I have is, will the call-backs be triggered if I do the step mentioned above? Or should I open it graphically to trigger the call-backs?

     Regards,

    Vijay

     

    • Post Points: 20
  • Mon, Jan 2 2012 10:08 AM

    • skillUser
    • Top 10 Contributor
    • Joined on Fri, Sep 19 2008
    • Austin, TX
    • Posts 2,587
    • Points 15,915
    Re: Deleting Schematic instance and instantiating another device on the same origin Reply

    Hi Vijay,

    If you instantiate devices using SKILL, or update instance parameters using SKILL then callbacks are not triggered, they are only triggered when using the Edit Object Properties form or Add Instance form and interacting with the CDF properties there, so you will most likely need the solution to trigger the CDF callbacks procedurally with SKILL.

    Hope this helps,

    Lawrence.

    • Post Points: 35
  • Mon, Jan 2 2012 10:40 AM

    Re: Deleting Schematic instance and instantiating another device on the same origin Reply

    Hi Lawrence,

     

    Thank you for the quick help! I will explore the direction you have pointed to.

     

    Thanks,

    Vijay

    • Post Points: 5
  • Tue, Jan 3 2012 7:34 PM

    Re: Deleting Schematic instance and instantiating another device on the same origin Reply

    Hi Lawrence,

     

    I tried using the callback function, but it was too slow. Since I know what parameters to change I thought I will write a custom script, but I am getting stuck with some errors in saving the file. Would you please help to resolve that issue?

     

       if(cv=geOpen(?lib libName ?cell cell~>name ?view view~>name ?mode "a") then
           wId =hiGetCurrentWindow()
           thisCell=geGetWindowCellView()
           foreach(inst thisCell~>instances
               ;---Process relevant instances
            ;
            if(member(inst~>cellName InstList) then         
           ;---Change param
           ;
           printf("\nTrigger %s" inst~>cellName)
           geSelectFig(inst)
                 schHiObjectProperty()
                 sprintf(str "ParamOrg = schObjPropForm->%s->value" SelParam)
           j=evalstring(str)
                 ;
           sprintf(str "schObjPropForm->%s->value = TempVal" SelParam)
           j=evalstring(str)            
           hiFormDone(schObjPropForm)
           ;
           schHiObjectProperty()
                 sprintf(str "schObjPropForm->%s->value = ParamOrg" SelParam)
           j=evalstring(str)                
           hiFormDone(schObjPropForm)
          );if member
         );foreach inst
         schCheck( thisCell )
               geSave( thisCell )
         hiCloseWindow(wId)
       );if cv

     

    Thanks,

    Vijay

    • Post Points: 20
  • Tue, Jan 3 2012 8:23 PM

    Re: Deleting Schematic instance and instantiating another device on the same origin Reply

     Vijay,

    Try using the code that Lawrence pointed you to (this was written by me, BTW), and use the ?order argument to specify the parameters you are changing. With many PDKs specifying just a single parameter is sufficient because all the callbacks are essentially the same.

    So you could do:

    CCSinvokeInstCdfCallbacks(instId ?order list("w"))

    to just invoke the "w" callback on the instance. The default behaviour is to call it for every parameter - sometimes this can be rather expensive if the callbacks are long, and if the callbacks are really common to all parameters, you're just repeating the same computation over and over again.

    Trying to interact with a form as you are doing in your code will be much harder, because something maybe blocking (I really wouldn't go down that route as it can get messy quickly).

    Regards,

    Andrew.

     

    • Post Points: 20
  • Tue, Jan 3 2012 8:37 PM

    Re: Deleting Schematic instance and instantiating another device on the same origin Reply

    Hi Andrew,

     

    Works like a magic! Thanks a lot for your valuable suggestions and help!

     

     

    Thanks,

    Vijay

    • Post Points: 20
  • Wed, Aug 1 2012 11:29 PM

    • Reinice
    • Top 150 Contributor
    • Joined on Thu, Jul 26 2012
    • Posts 59
    • Points 915
    Re: Deleting Schematic instance and instantiating another device on the same origin Reply

    Hi All,

    We used skill to change the schematic instances from one process(old) to another one process(new).

    We want to keep the origin and orientation of the old process and put it on the new process.

    We're having a hard time doing this.Can someone help us.

    Thanks,

    Reinice

    • Post Points: 20
  • Thu, Aug 2 2012 12:14 AM

    Re: Deleting Schematic instance and instantiating another device on the same origin Reply
    Hi Reinice, You can get the origin by using "instId~>xy" and the orientation by "instId~>orient". Then on the new instantiation you can use these values to retain the origin and orientation stored from the above statements. For more information see the previous posts by Andrew, Lawrence and myself in this thread. Vijay
    • Post Points: 20
  • Thu, Aug 2 2012 2:54 AM

    • Reinice
    • Top 150 Contributor
    • Joined on Thu, Jul 26 2012
    • Posts 59
    • Points 915
    Re: Deleting Schematic instance and instantiating another device on the same origin Reply

    Hi Vijay,

    Thanks for your reply

    I've tried the previous posts. It's working. I think I have to rephrase my question.

    For example the old process has it's origin in the S(Source of nch_33) terminal but the new process has it's origin in the BULK(Bulk of nch_hvt)

    How can I keep the position of the old process to the new process?

    Thanks,

    Reinice

    • Post Points: 5
  • Thu, Aug 2 2012 6:02 PM

    • Reinice
    • Top 150 Contributor
    • Joined on Thu, Jul 26 2012
    • Posts 59
    • Points 915
    Re: Deleting Schematic instance and instantiating another device on the same origin Reply

    Hi All,

    I'am migrating my schematic from old process to new process. I want to keep the position(orientation and xy position) and wiring of the old process to the new process. Example, I have an old instance in my schematic that when replaced by the new process is smaller in size. How can I keep the position and wiring of the old process to the new process?

    Can anyone help me?

    Thanks and Regards,

    Reinice

    • Post Points: 20
  • Fri, Aug 3 2012 2:59 AM

    Re: Deleting Schematic instance and instantiating another device on the same origin Reply

    Sounds as if the following could be useful (at least as a starting point):

    /* abMapAndWire.ils
    
    Author     A.D.Beckett
    Group      Custom IC (UK), Cadence Design Systems Ltd.
    Language   SKILL
    Date       May 20, 2004 
    Modified   
    By         
    
    Map instances from one library to another, with wiring
    because the symbols are a different size.
    
    Two main entry functions:
    
    (abMapAndWireLoadConfig "config.file")
    (abMapAndWire cellView)
    
    The config file is in this format (it can have comments
    too, using normal SKILL conventions):
    
    (
      nil
      xSnapSpacing 0.0625   ; defaults to 0.0625
      ySnapSpacing 0.0625   ; defaults to 0.0625
      fontHeight 0.0625     ; defaults to xSnapSpacing
      addWireLabels t       ; if it should add labels for wire stubs left by
                            ; inherited connections
      map
      (
       (nil
        ; lib/cell/view to be converted, from and to.
        ; all to setting default to the from settings, and the
        ; fromView defaults to "symbol".
        fromLib "gpdk"
        fromCell "nmosa1"
        fromView "symbol"
        toLib "gpdk"
        toCell "nmosa2"
        toView "symbol"
        ; if any pin names need mapping, do that here. Otherwise
        ; can omit
        pinMap (("G" "g") ("D" "d"))
        ; Which pins should not be wired, but should replace with a
        ; netSet on the instance
        pinToNetSet (("B" "nbulk"))
        ; which pin should be considered the origin - in other words,
        ; stay where it is. It does not have to be the origin of the symbol
        pinOrigin "G"
        ; this is the orientation you need to give to the new symbol 
        ; to rotate it to the same orientation as the old symbol
        orient "R90"
        )
       ; and now for another mapping...
       (nil
        fromLib "gpdk"
        fromCell "pmosa1"
        fromView "symbol"
        toLib "gpdk"
        toCell "pmosa2"
        toView "symbol"
        pinOrigin "G"
        orient "R90"
        )
       )
      )
    
    ***************************************************
    
    SCCS Info: @(#) abMapAndWire.ils 05/27/04.16:01:39 1.4
    
    */
    
    ;------------------------------------------------------------------------
    ; The two functions which will be public later in the lexical
    ; scope
    ;------------------------------------------------------------------------
    (define abMapAndWireLoadConfig nil)
    (define abMapAndWire nil)
    
    (let (mapData xSnapSpacing ySnapSpacing wireCatch addWireLabels fontHeight)
    
    /***************************************************************
    *                                                              *
    *                  (getPinPositions cellView)                  *
    *                                                              *
    *   Private function to Get the positions of the centres of    *
    *  each pin on the symbol, and return a table with these in.   *
    *                                                              *
    ***************************************************************/
    
      (defun getPinPositions (cellView)
             (let (positionArray pin)
                  (setq positionArray (makeTable "pinPositions" nil))
                  (foreach terminal (getq cellView terminals)
                           ;-------------------------------------------------
                           ; Only looking at the location of the first pin
                           ; for each terminal - in practice there will be only
                           ; one anyway
                           ;-------------------------------------------------
                           (setq pin (car (getq terminal pins)))
                           (when pin
                                 (setarray positionArray (getq terminal name)
                                           (centerBox
                                            (getq (getq pin fig) bBox)
                                            )
                                           )
                                 )
                           )
                  positionArray
                  )
             ) ; defun getPinPositions
    
    /******************************************************************
    *                                                                 *
    *                       (getMapDetails dpl)                       *
    *                                                                 *
    *  Private function to figure out all the information about the   *
    * master (both from and to), as well as the transformation needed *
    *          to map from the old symbol to the new symbol.          *
    *                     Returns the fromMaster.                     *
    *                                                                 *
    ******************************************************************/
    
      (defun getMapDetails (dpl)
             (let (fromMaster toMaster toPin fromPin fromPos toPos badMaps)
                  (setq fromMaster
                        (dbOpenCellViewByType
                         (getq dpl fromLib)
                         (getq dpl fromCell)
                         (or (getq dpl fromView) "symbol")
                         ))
                  (getWarn)
                  (if fromMaster
                      (progn
                       (setq toMaster
                             (dbOpenCellViewByType
                              (or (getq dpl toLib) (getq dpl fromLib))
                              (or (getq dpl toCell) (getq dpl fromCell))
                              (or (getq dpl toView) (getq dpl fromView) "symbol")
                              ))
                       (getWarn)
                       (unless toMaster
                               (printf "NOTE: map from %s/%s/%s to %s/%s/%s skipped due to missing destination cellView\n"
                                       (getq dpl fromLib) 
                                       (getq dpl fromCell)
                                       (getq dpl fromView)
                                       (getq dpl toLib) 
                                       (getq dpl toCell)
                                       (getq dpl toView)
                                       )
                               (setq fromMaster nil)
                               )
                       )
                      ;------------------------------------------------------
                      ; Else fromMaster doesn't exist
                      ;------------------------------------------------------
                      (printf "NOTE: map from %s/%s/%s to %s/%s/%s skipped due to missing source cellView\n"
                              (getq dpl fromLib) 
                              (getq dpl fromCell)
                              (getq dpl fromView)
                              (getq dpl toLib) 
                              (getq dpl toCell)
                              (getq dpl toView)
                              )
                      )
                  ;----------------------------------------------------------
                  ; Only do the rest if we're going to keep this mapping
                  ;----------------------------------------------------------
                  (when
                   fromMaster
                   (putpropq dpl fromMaster fromMaster)
                   (putpropq dpl toMaster toMaster)
                   (putpropq dpl (getPinPositions fromMaster) fromPinPositions)
                   (putpropq dpl (getPinPositions toMaster) toPinPositions)
                   ;----------------------------------------------------------
                   ; Check all the pin mappings are OK
                   ;----------------------------------------------------------
                   (setq badMaps
                         (setof pinMap (getq dpl pinMap)
                                (and
                                 (arrayref (getq dpl fromPinPositions) (car pinMap))
                                 (null (arrayref (getq dpl toPinPositions) (cadr pinMap)))
                                 )))
                   (when badMaps
                         (error "The pinMap contains invalid pins %L for %s/%s/%s\n"
                                (mapcar 'cadr badMaps)
                                (getq toMaster libName)
                                (getq toMaster cellName)
                                (getq toMaster viewName)
                                ))
                   (setq toPin (getMappedPin dpl (getq dpl pinOrigin)))
                   ;----------------------------------------------------------
                   ; Figure out the transform needed to map from one to
                   ; another
                   ;----------------------------------------------------------
                   (setq fromPin (getq dpl pinOrigin))
                   (setq toPos (arrayref (getq dpl toPinPositions) toPin))
                   (setq fromPos (arrayref (getq dpl fromPinPositions) fromPin))
                   (unless toPos 
                           (error "Could not find mapped pin %s on %s/%s/%s\n"
                                  toPin
                                  (getq toMaster libName)
                                  (getq toMaster cellName)
                                  (getq toMaster viewName)
                                  ))
                   (unless fromPos 
                           (error "Could not find pin %s on %s/%s/%s\n"
                                  fromPin
                                  (getq fromMaster libName)
                                  (getq fromMaster cellName)
                                  (getq fromMaster viewName)
                                  ))
                   (putpropq dpl 
                             (dbConcatTransform
                              (dbConcatTransform
                               (list 
                                (mapcar minus toPos)
                                "R0"
                                )
                               (list
                                (list 0 0)
                                (getq dpl orient)
                                )
                               )
                              (list
                               fromPos
                               "R0"
                               )
                              )
                             transform
                             )
                   ) ; when
                  fromMaster
                  )
             ) ; defun getMapDetails
    
    /***************************************************************
    *                                                              *
    *                    (checkMapDetails dpl)                     *
    *                                                              *
    *  Private function for checking that the minimum information  *
    *              has been provided for a map entry.              *
    *                                                              *
    ***************************************************************/
    
      (defun checkMapDetails (dpl)
             (unless
              (and
               (getq dpl fromLib)
               (getq dpl fromCell)
               (getq dpl fromView)
               (getq dpl pinOrigin)
               )
              (error "Minimum of fromLib, fromCell, fromView, pinOrigin must be specified in config file\n")
              )
             ) ; defun checkMapDetails
    
    /*******************************************************************
    *                                                                  *
    *                     (loadConfig configFile)                      *
    *                                                                  *
    * Public function (exported as abMapAndWireLoadConfig) to load the *
    * config file for the mapping, and set up all the data structures  *
    *                 needed for doing the conversion.                 *
    *                                                                  *
    *******************************************************************/
    
      (defun loadConfig (configFile)
             (let (prt data fromMaster)
                  (setq prt (infile configFile))
                  (unless prt (error "Could not open config file %s\n" configFile))
                  ;----------------------------------------------------------
                  ; skip over blank lines/comments
                  ;----------------------------------------------------------
                  (while (equal (setq data (lineread prt)) t) t)
                  (setq data (car data))
                  (close prt)
                  ;----------------------------------------------------------
                  ; Take out the top level options from the config
                  ;----------------------------------------------------------
                  (setq xSnapSpacing (or (getq data xSnapSpacing) 0.0625))
                  (setq ySnapSpacing (or (getq data ySnapSpacing) 0.0625))
                  (setq wireCatch (list (times xSnapSpacing 0.5) (times ySnapSpacing 0.5)))
                  (setq addWireLabels (getq data addWireLabels))
                  (setq fontHeight (or (getq data fontHeight)
                                       (getq data xSnapSpacing)
                                       0.0625))
                  ;----------------------------------------------------------
                  ; Now create the config table
                  ;----------------------------------------------------------
                  (setq mapData (makeTable "mapData" nil))
                  (foreach dpl (getq data map)
                           (checkMapDetails dpl)
                           (setq fromMaster (getMapDetails dpl))
                           (when fromMaster
                                 (setarray mapData fromMaster dpl)
                                 )
                           )
                  mapData
                  )
             ) ; defun loadConfig
    
    /******************************************************************
    *                                                                 *
    *                   (getMappedPin dpl pinName)                    *
    *                                                                 *
    *    Private function for getting the pin name in the toMaster    *
    * if it has been mapped (or the original name if it is unmapped). *
    *                                                                 *
    ******************************************************************/
    
      (defun getMappedPin (dpl pinName)
             (or (cadr (assoc pinName (getq dpl pinMap))) pinName)
             )
    
    /***************************************************************
    *                                                              *
    *                     (isNetLabelled net)                      *
    *                                                              *
    * Private function to guess whether a label is needed. If the  *
    * net has a terminal (then there is a pin, and so it is going  *
    *  to be autonamed), or if there is a label attached. Doesn't  *
    *                   spot supply/ground taps.                   *
    *                                                              *
    ***************************************************************/
    
      (defun isNetLabelled (net)
             (or
              (getq net term)
              (exists fig (getq net figs) (equal (getq fig objType) "label"))
              )
             )
    
    /*******************************************************************
    *                                                                  *
    *                      (replaceInstance inst)                      *
    *                                                                  *
    *   Private function to replace an individual instance, and then   *
    * do the wiring up to the old locations, or add netSet expressions *
    *                            if needed.                            *
    *                                                                  *
    *******************************************************************/
    
      (defun replaceInstance (inst)
             (let (dpl cellView newTransform oldTransform fromPinPositions toPinPositions
                       fromPos toPos termsToNets wire wireBox netSet netName)
                  (setq dpl (arrayref mapData (getq inst master)))
                  (when dpl
                        (setq cellView (getq inst cellView))
                        ;----------------------------------------------------
                        ; Record all the instTerm information - need it
                        ; later for the netSet handling
                        ;----------------------------------------------------
                        (setq termsToNets
                              (foreach mapcar instTerm (getq inst instTerms)
                                       (list (getq instTerm name) 
                                             (getq (getq instTerm net) name))))
                        ;----------------------------------------------------
                        ; Work out the transformation, and replace the instance
                        ;----------------------------------------------------
                        (setq oldTransform (getq inst transform))
                        (setq newTransform (dbConcatTransform (getq dpl transform)
                                                              oldTransform))
                        (putpropq inst (getq dpl toMaster) master)
                        (putpropq inst (car newTransform) xy)
                        (putpropq inst (cadr newTransform) orient)
                        ;----------------------------------------------------
                        ; Now do the routing
                        ;----------------------------------------------------
                        (setq fromPinPositions (getq dpl fromPinPositions))
                        (setq toPinPositions (getq dpl toPinPositions))
                        (foreach pin fromPinPositions
                                 (cond
                                  ;------------------------------------------
                                  ; If it is one of the pins to be handled with
                                  ; a netSet, do that
                                  ;------------------------------------------
                                  ((setq netSet (assoc pin (getq dpl pinToNetSet)))
                                   (setq netName (cadr (assoc pin termsToNets)))
                                   (dbCreateProp inst (cadr netSet) "netSet" netName)
                                   ;-----------------------------------------
                                   ; Check to see if we're supposed to be adding 
                                   ; labels, and there doesn't already seem to be one
                                   ;-----------------------------------------
                                   (when 
                                    (and 
                                     addWireLabels
                                     (null
                                      (isNetLabelled 
                                       (dbFindNetByName cellView netName))
                                      )
                                     )
                                    ;----------------------------------------
                                    ; Find the wire end where the pin used to be.
                                    ;----------------------------------------
                                    (setq fromPos (arrayref fromPinPositions pin))
                                    (setq fromPos
                                          (geTransformUserPoint 
                                           fromPos oldTransform))
                                    (setq wireBox
                                          (list
                                           (mapcar difference fromPos wireCatch)
                                           (mapcar plus fromPos wireCatch)
                                           ))
                                    (setq wire 
                                          (car
                                           (dbGetOverlaps
                                            cellView wireBox '("wire" "drawing") 0)))
                                    ;----------------------------------------
                                    ; Now add a wire label, just to be safe.
                                    ;----------------------------------------
                                    (schCreateWireLabel
                                     cellView
                                     wire
                                     fromPos
                                     netName
                                     "lowerLeft"
                                     "R0"
                                     "stick"
                                     fontHeight
                                     nil
                                     )
                                    )
                                   ) ; end of arm for netSet
                                  ;------------------------------------------
                                  ; Otherwise if it is not the pin marked as the 
                                  ; origin, wire it up.
                                  ;------------------------------------------
                                  ((nequal pin (getq dpl pinOrigin))
                                   (setq fromPos (arrayref fromPinPositions pin))
                                   (setq toPos 
                                         (arrayref toPinPositions 
                                                   (getMappedPin dpl pin)))
                                   (when
                                    (and fromPos toPos)
                                    (setq fromPos
                                          (geTransformUserPoint 
                                           fromPos oldTransform))
                                    (setq toPos
                                          (geTransformUserPoint
                                           toPos newTransform))
                                    (schCreateWire
                                     cellView
                                     "route"
                                     "full"
                                     (list fromPos toPos)
                                     xSnapSpacing
                                     ySnapSpacing
                                     0.0
                                     )
                                    ) ; when
                                   ) ; end of arm for pin wiring
                                  ) ; cond
                                 ) ; foreach
                        t
                        ) ; when
                  ) ; let
             ) ; defun replaceInstance
    
    /***************************************************************
    *                                                              *
    *                (replaceInstances [cellView])                 *
    *                                                              *
    *   Public function (exported as (abMapAndWire) ) to do the    *
    *        mapping and wiring for the cellView passed in.        *
    *                                                              *
    ***************************************************************/
    
      (defun replaceInstances (@optional (cellView (geGetEditCellView)))
             (foreach instance (getq cellView instances)
                      (replaceInstance instance)
                      )
             t
             ) ; defun replaceInstances
    
      (setq abMapAndWireLoadConfig loadConfig)
      (setq abMapAndWire replaceInstances)
      ) ; end of lexical scope

     

    • Post Points: 35
  • Fri, Aug 3 2012 4:17 AM

    • Reinice
    • Top 150 Contributor
    • Joined on Thu, Jul 26 2012
    • Posts 59
    • Points 915
    Re: Deleting Schematic instance and instantiating another device on the same origin Reply

    Hi Andrew,

    Thank you very much for the starting point to workaround. = )

    Thanks and Regards,

    Reinice

    • Post Points: 5
  • Sun, Aug 5 2012 11:18 PM

    • Reinice
    • Top 150 Contributor
    • Joined on Thu, Jul 26 2012
    • Posts 59
    • Points 915
    Re: Deleting Schematic instance and instantiating another device on the same origin Reply

    Hi Andrew,

    I 'am trying your abMapAndWire.ils

    I want to migrate this instance to the new process:               pnp5(old process)                       pnp(new process)

    Instance Name is                                                                         "Q1"                                          "Q0"

    Instance Orientation is                                                                 "MY"                                          "R0"

    Instance Terminal Name is                                                             "C"                                           "C"

    Pin Name is                                                                             "IO|P__2"                                       "3"

    Instance Terminal Name is                                                             "E"                                           "B"

    Pin Name is                                                                             "IO|P__1"                                       "2"

    Instance Terminal Name is                                                             "B"                                           "E"

    Pin Name is                                                                              "IO|P__0"                                      "1"

    But I'am having an error on (abMapAndWireLoadConfig "config.file")
     

    Here is the content of my config.file

    (
      nil
      xSnapSpacing 0.0625   ; defaults to 0.0625
      ySnapSpacing 0.0625   ; defaults to 0.0625
      fontHeight 0.0625     ; defaults to xSnapSpacing
      addWireLabels t       ; if it should add labels for wire stubs left by
                            ; inherited connections
      map
      (
       (nil
        ; lib/cell/view to be converted, from and to.
        ; all to setting default to the from settings, and the
        ; fromView defaults to "symbol".
        fromLib "TSMC90G1033"
        fromCell "pnp5"
        fromView "symbol_xform"
        toLib "tsmcN40"
        toCell "pnp"
        toView "symbol"
        ; if any pin names need mapping, do that here. Otherwise
        ; can omit
        pinMap (("IO|P__2" "3") ("IO|P__1" "2") ("IO|P__0" "1"))
        ; Which pins should not be wired, but should replace with a
        ; netSet on the instance
        ;pinToNetSet (("B" "nbulk"))
        ; which pin should be considered the origin - in other words,
        ; stay where it is. It does not have to be the origin of the symbol
        pinOrigin "IO|P__0"
        ; this is the orientation you need to give to the new symbol
        ; to rotate it to the same orientation as the old symbol
        orient "MY"
        )
       )
      )
     

    *Error* Could not find mapped pin 1 on tsmcN40/pnp/symbol

    and when I comment pinMap (("IO|P__2" "3") ("IO|P__1" "2") ("IO|P__0" "1")), here is the error:

    *Error* Could not find mapped pin 1 on tsmcN40/pnp/symbol

    What would be the correct input for my config.file?

    Is it needed that pin names of an instance must be the same for old process and new process so that errors such as above will not show?

    Hope you can help me on this. Thanks in advance.

    Thanks and Regards,

    Reinice

    • Post Points: 20
Page 1 of 2 (20 items) 1 2 Next >
Sort Posts:
Started by Vijay Srinivas at 01 Jan 2012 04:21 PM. Topic has 19 replies.