• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC SKILL
  3. About View Level Functions

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 144
  • Views 13949
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

About View Level Functions

Adhil
Adhil over 13 years ago

hey guys!!

 I was exploring the skill user manual, and i came across "View Level Functions". I would be thankful to anyone who could elaborate

1. What these functions do.
2. how they can be useful.

I was also trying to test some of the functions in the following manner

cv = geGetEditCellView() 
geGetAllAreaViewLevel(cv)

however, I got the following errors.

Error* geGetAllAreaViewLevel: argument #1 should be a window type (type template = "w") - db:0x1427bf12
Loading verilogI.cxt

Can anyone explain why this is so, I am using IC6 latest.

Adhil.

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 13 years ago

    Adhil,

    The functions (which correspond to the  View->Area Display menu in VLS) allow you to alter the start and stop display level for an area of the design, rather than being applied to the entire design (as set via the Options->Display form). This you can keep everything at level 0 (just instance boxes), but show full depth (or whatever for one or more regions of the layout).

    The reason why it failed was quite clearly described in the error message - you gave it a cellView ID, but it is expecting a window ID. So you'd need to pass something like the result of hiGetCurrentWindow() to the function instead. Unless you've set an area, it will return nil (but you could always use the geSetAreaViewLevel function).

    There's also the ge.*InstViewLevel functions which allow the view level to be on specific instances. There's no UI for this (for some reason), but I wrote this SKILL function many years ago to allow me to easily toggle the view depth on selected instances:

    /* abToggleSelInstView.il
    
    Author     A.D.Beckett
    Group      Structured Custom, Cadence Design Systems Ltd
    Machine    SUN
    Date       Apr 22, 1993 
    Modified   May 10, 2004
    By         
    
    Function to toggle the Inst View level on selected objects
    between 0 and 20.
    
    abSetInvSelInstView() will set the depth on everything except
    the selected instances.
    
    abDeleteInstView() will delete all selected instance views.
    
    ***************************************************
    SCCS Info: @(#) abToggleSelInstView.il 11/20/08.15:26:21 1.2
    
    */
    
    (procedure (abToggleSelInstView)
      (prog (depth win)
    	(setq win (hiGetCurrentWindow))
    	(foreach inst (geGetSelectedSet)
    		 (if (equal (dbGetq inst objType) "inst")
    		     (progn
    		      (setq depth (secondElement (geGetInstViewLevel win inst)))
    		      (if depth
    			  (geDeleteInstViewLevel win inst)
    			  (geSetInstViewLevel win inst 0 20)))))))
    
    (procedure (abSetInvSelInstView)
      (let (win selSet cv)
           (setq win (hiGetCurrentWindow))
           (setq selSet (geGetSelSet win))
           (setq cv (geGetEditCellView win))
           (foreach inst (dbGetq cv instances)
    		(unless (or (equal (dbGetq inst objType) "mosaicInst")
    			    (member inst selSet))
    			(geSetInstViewLevel win inst 0 20)))
           (foreach mosaic (dbGetq cv mosaics)
    		(unless (member mosaic selSet)
    			(geSetInstViewLevel win mosaic 0 20)))
           t
           ))
    
    (procedure (abDeleteInstView)
      (let (win cv)
           (setq win (hiGetCurrentWindow))
           (setq cv (geGetEditCellView win))
           (foreach inst (dbGetq cv instances)
    		(unless (equal (dbGetq inst objType) "mosaicInst")
    			(geDeleteInstViewLevel win inst))
    		)
           (foreach mosaic (dbGetq cv mosaics)
    		(geDeleteInstViewLevel win mosaic))
           t
           ))

     

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 13 years ago

    Adhil,

    The functions (which correspond to the  View->Area Display menu in VLS) allow you to alter the start and stop display level for an area of the design, rather than being applied to the entire design (as set via the Options->Display form). This you can keep everything at level 0 (just instance boxes), but show full depth (or whatever for one or more regions of the layout).

    The reason why it failed was quite clearly described in the error message - you gave it a cellView ID, but it is expecting a window ID. So you'd need to pass something like the result of hiGetCurrentWindow() to the function instead. Unless you've set an area, it will return nil (but you could always use the geSetAreaViewLevel function).

    There's also the ge.*InstViewLevel functions which allow the view level to be on specific instances. There's no UI for this (for some reason), but I wrote this SKILL function many years ago to allow me to easily toggle the view depth on selected instances:

    /* abToggleSelInstView.il
    
    Author     A.D.Beckett
    Group      Structured Custom, Cadence Design Systems Ltd
    Machine    SUN
    Date       Apr 22, 1993 
    Modified   May 10, 2004
    By         
    
    Function to toggle the Inst View level on selected objects
    between 0 and 20.
    
    abSetInvSelInstView() will set the depth on everything except
    the selected instances.
    
    abDeleteInstView() will delete all selected instance views.
    
    ***************************************************
    SCCS Info: @(#) abToggleSelInstView.il 11/20/08.15:26:21 1.2
    
    */
    
    (procedure (abToggleSelInstView)
      (prog (depth win)
    	(setq win (hiGetCurrentWindow))
    	(foreach inst (geGetSelectedSet)
    		 (if (equal (dbGetq inst objType) "inst")
    		     (progn
    		      (setq depth (secondElement (geGetInstViewLevel win inst)))
    		      (if depth
    			  (geDeleteInstViewLevel win inst)
    			  (geSetInstViewLevel win inst 0 20)))))))
    
    (procedure (abSetInvSelInstView)
      (let (win selSet cv)
           (setq win (hiGetCurrentWindow))
           (setq selSet (geGetSelSet win))
           (setq cv (geGetEditCellView win))
           (foreach inst (dbGetq cv instances)
    		(unless (or (equal (dbGetq inst objType) "mosaicInst")
    			    (member inst selSet))
    			(geSetInstViewLevel win inst 0 20)))
           (foreach mosaic (dbGetq cv mosaics)
    		(unless (member mosaic selSet)
    			(geSetInstViewLevel win mosaic 0 20)))
           t
           ))
    
    (procedure (abDeleteInstView)
      (let (win cv)
           (setq win (hiGetCurrentWindow))
           (setq cv (geGetEditCellView win))
           (foreach inst (dbGetq cv instances)
    		(unless (equal (dbGetq inst objType) "mosaicInst")
    			(geDeleteInstViewLevel win inst))
    		)
           (foreach mosaic (dbGetq cv mosaics)
    		(geDeleteInstViewLevel win mosaic))
           t
           ))

     

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information