• 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. SKILL code to generate lower routes with same path properties...

Stats

  • Locked Locked
  • Replies 24
  • Subscribers 143
  • Views 22196
  • 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

SKILL code to generate lower routes with same path properties of the selected path

Neeraj Vardhan
Neeraj Vardhan over 13 years ago

Hi,

I am trying to generate lower routes with same path properties as of the selected path. Can any one assist me how can i do it using SKILL.

Thanks  

 

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

    Neeraj,

    I was right - the problem is outside the code you originally posted...

    Most functions in SKILL return the last thing executed. The cond() function is the same - it is of this form:

    cond(
      (condExpr1 expr11 expr12 expr13)
      (condExpr2 expr21 expr22 expr23)
      ...
    )

    It tries each conditional expression (e.g. condExpr1) and if non-nil, the rest of that branch is executed. It will successively evaluate exprN1, exprN2, exprN3 and so on, and the return value will be the last expression on that branch (e.g. expr13 or expr23). In your case, the condition branch for w>=0.28  has two expressions, the two list() calls - and the return value will be the second of these.

    Since you want it to be a list of lists, the answer is to alter the code have the cond() one level up, so for example:

     

       ?subRect
        
             cond(
       
       (w <=0.27
               
       list(
                                                         list(
            
                ?layer   list("VIA1" "drawing")
                  ?width     0.05
              ?length     0.05
                ?beginOffset  -0.05
                              ?endOffset    -0.05
      ?beginSegOffset 0
      ?endSegOffset 0
      ;?space 0
    ?sep 0
    ?choppable t
    ?justification "center"
    ;?gap 0.08
    ;?connectivity "none" 
        
            )     
                                                           )
                                   )
         
         
         (w >=0.28 list(  
       
       list(
        
                 ?layer   list("VIA1" "drawing")
                 ?width     0.05
               ?length     0.05
                 ?beginOffset  -0.05
                             ?endOffset    -0.05
     ?beginSegOffset 0
     ?endSegOffset 0
     ?space 0.08
     ?sep 0.075
     ?choppable t
     ?justification "center"
     ?gap "distribute"
                                
                            )
     
                     list(
         
                 ?layer   list("VIA1" "drawing")
                 ?width     0.05
               ?length     0.05
                 ?beginOffset  -0.05
                             ?endOffset    -0.05
     ?beginSegOffset 0
     ?endSegOffset 0
     ?space 0.08
     ?sep -0.065
     ?choppable t
     ?justification "center"
     ?gap "distribute"
     
                                
                              )
                  )
       )  
         ) 
     
     
    Your brackets didn't match properly in your code, and it looked as if you'd tried to get the second branch to return a list of lists, but since you had a list() around the cond, that wouldn't have been correct either.
     
    BTW, you shouldn't use css() in your code. This is a private SKILL function and not documented. It might get changed or removed at some point in the future. So use car(geGetSelSet()) instead.
     
    Regards,
     
    Andrew
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 13 years ago

    Neeraj,

    I was right - the problem is outside the code you originally posted...

    Most functions in SKILL return the last thing executed. The cond() function is the same - it is of this form:

    cond(
      (condExpr1 expr11 expr12 expr13)
      (condExpr2 expr21 expr22 expr23)
      ...
    )

    It tries each conditional expression (e.g. condExpr1) and if non-nil, the rest of that branch is executed. It will successively evaluate exprN1, exprN2, exprN3 and so on, and the return value will be the last expression on that branch (e.g. expr13 or expr23). In your case, the condition branch for w>=0.28  has two expressions, the two list() calls - and the return value will be the second of these.

    Since you want it to be a list of lists, the answer is to alter the code have the cond() one level up, so for example:

     

       ?subRect
        
             cond(
       
       (w <=0.27
               
       list(
                                                         list(
            
                ?layer   list("VIA1" "drawing")
                  ?width     0.05
              ?length     0.05
                ?beginOffset  -0.05
                              ?endOffset    -0.05
      ?beginSegOffset 0
      ?endSegOffset 0
      ;?space 0
    ?sep 0
    ?choppable t
    ?justification "center"
    ;?gap 0.08
    ;?connectivity "none" 
        
            )     
                                                           )
                                   )
         
         
         (w >=0.28 list(  
       
       list(
        
                 ?layer   list("VIA1" "drawing")
                 ?width     0.05
               ?length     0.05
                 ?beginOffset  -0.05
                             ?endOffset    -0.05
     ?beginSegOffset 0
     ?endSegOffset 0
     ?space 0.08
     ?sep 0.075
     ?choppable t
     ?justification "center"
     ?gap "distribute"
                                
                            )
     
                     list(
         
                 ?layer   list("VIA1" "drawing")
                 ?width     0.05
               ?length     0.05
                 ?beginOffset  -0.05
                             ?endOffset    -0.05
     ?beginSegOffset 0
     ?endSegOffset 0
     ?space 0.08
     ?sep -0.065
     ?choppable t
     ?justification "center"
     ?gap "distribute"
     
                                
                              )
                  )
       )  
         ) 
     
     
    Your brackets didn't match properly in your code, and it looked as if you'd tried to get the second branch to return a list of lists, but since you had a list() around the cond, that wouldn't have been correct either.
     
    BTW, you shouldn't use css() in your code. This is a private SKILL function and not documented. It might get changed or removed at some point in the future. So use car(geGetSelSet()) instead.
     
    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