Quantcast
Channel: Cadence Custom IC Skill Forum
Viewing all articles
Browse latest Browse all 5066

LVS not running

$
0
0

Hi all,

1)         I got following error in log file when I run LVS. Is there any need of schematic change or Compare rule file change.

         ** Parallel MOS combined:
  1st MOS: L = 3e-08 W = 4e-07 m = 1
  2nd MOS: L = 3e-08 W = 2e-07 m = 1
  Resulting: L = 3e-08 W = 6e-07 m = 1
*Error* times: can't handle ("1" * 6e-07)
*ERROR* User supplied SKILL routine failed: '(compareMOS)'. SKILL interpreter could not execute this SKILL function.
    Probably usage of the function is not correct. Try to revise the syntax:
    (compareMOS('(nil l 3e-08 w 6e-07 m 1) '(nil m "1" l 3e-08 w 6e-07)))


*****  nvn fork terminated abnormally  *****\

In compare rule file for comparision of mos devices:

  procedure( compareMOS( layPlist, schPlist )
    prog( (missingLay missingSch)

; IF m (m factor) IS MISSING, SET IT TO 1

      when( !layPlist->m  layPlist->m = float(1) )
      when( !schPlist->m  schPlist->m = float(1) )

; IF W or L IS MISSING GENERATE A PARAMETER MISMATCH
            
      foreach( prop '( w l )
        unless( get( layPlist prop )
          missingLay = cons( prop missingLay )
        ) ;unless
        unless( get( schPlist prop )
          missingSch = cons( prop missingSch )
        ) ;unless
      ) ;foreach

; REPORT ALL MISSING PARAMETERS

      when( ( missingLay || missingSch )
    when( missingSch
       sprintf( msg1 "Sch MOS missing parameters: %s"
             buildString( missingSch ","))
    ) ;when
    when( !missingSch
       sprintf( msg1 "Sch MOS W/L/m %g %g %g"
     float(schPlist->w) float(schPlist->l) float(schPlist->m) )
    ) ;when
    when( missingLay
       sprintf( msg2 "Lay MOS missing parameters: %s"
         buildString( missingLay ",") )
    ) ;when
    when( !missingLay
       sprintf( msg2 "Lay MOS W/L/m %g %g %g"
     float(layPlist->w) float(layPlist->l) float(layPlist->m) )
    ) ;when
    sprintf( msg "Err: %s ; %s" msg1 msg2 )
    return( msg )
      ) ;when
 
;  SETTING VARIABLES

      layM = layPlist->m
      layW = float( layM * layPlist->w )
      layL = float( layPlist->l )
      schM = schPlist->m
      schW = float( schM * schPlist->w )
      schL = float( schPlist->l )
      
      diffW = 100 * (abs( layW - schW ) / schW )
      diffL = 100 * (abs( layL - schL ) / schL )
      Werr  = nil
      Lerr  = nil
      
      when( diffW > mosW_lvsTol Werr = t )
      when( diffL > mosL_lvsTol Lerr = t )

; IF NO ERRORS RETURN NIL

      when( !Werr && !Lerr  return(nil) )
         sprintf( msg "Err: MOS Sch L/W %g %g; Lay L/W %g %g"
          schL schW layL layW  )
        return( msg )

   ) ; end prog
  ) ; end compareMOS


; ************************************************************************

 

2) I need virtual connection set up when I run LVS. I mean when we add same labels or pins for two nets in layout then it will automatically take that as same net.

 

Thank you,

sarvani.

 


Viewing all articles
Browse latest Browse all 5066

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>