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.