• 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. Help on pcell code.

Stats

  • Locked Locked
  • Replies 12
  • Subscribers 144
  • Views 18318
  • 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

Help on pcell code.

Sarvani
Sarvani over 13 years ago

hi all,

        I created pcell using the code specified in rod objects in my install directory. To achieve it entered following code in my CIW and created pcells. My version is 6.1.

setSkillPath(cons(prependInstallPath("samples/ROD/rodPcells")
getSkillPath()))
load("install/spcLoadInstall.il")
spcInstall()

         Pcell working fine without any errors. Then I created a schematic with all options(fingers, multipliers....) and get all devices in layout by doing Gen From source. When I overlap two pcells then it automatically adjusts side by side by merging drains and taps. Now I need control of that adjustments because I didn't get minspacing at drain/source merging. 

 

Thank you.

  • Cancel
Parents
  • Sarvani
    Sarvani over 13 years ago

     Hi Andrew,

                       Thankyou very much. Now it works superbly. But I have a problem when running LVS. I have pcells spcnmos, spcpmos(layout,symbol,auLvs,ivpcell...) in library.  I created one inverter(layout and schematic)by using that pcells. It oparates well in VXL mode. While doing LVS it shows following error. 

    1 0 ((L "Y")((1 "spcnmos" ( "D" "G" "S" "B"))(1 "spcpmos" ( "D" "G" "S" "B")))(S "Y")((1 "car" ( "D" "G" "S" "B"))(1 "car\" ( "D" "G" "S" "B"))))

    ^

    SYNTAX ERROR found at line 1 column 129 of file *string*

    In LVS extractfile.rul file I wrote this for device recognition, parameter extraction.

       extractMOS(
        "spcnmos"  spcnmos
        cpoly("G") ndiff("S" "D") psub("B")
        spiceModel( "spcnmos" )
        flagMalformed
        cellView( "spcnmos ivpcell" )
      ); end extractMOS

        l_NMOS = measureParameter( length ( spcnmos inside cpoly ) 0.5u )
        w_NMOS = measureParameter( length ( spcnmos coincident cpoly ) 0.5u )

        nameParameter( l_NMOS "l" )
        nameParameter( w_NMOS "w" )
        nameParameter( w_NMOS "effW" ); REQUIRED FOR SPECTRE
        
        
    /* 1v pmos */

      extractMOS(
        "spcpmos" spcpmos
        cpoly("G") pdiff("S" "D") nwell("B")
        spiceModel( "spcpmos" )
        flagMalformed
        cellView( "spcpmos ivpcell" )
      ); end extractMOS

        l_PMOS = measureParameter( length ( spcpmos inside cpoly ) 0.5u )
        w_PMOS = measureParameter( length ( spcpmos  coincident cpoly ) 0.5u )

        nameParameter( l_PMOS "l" )
        nameParameter( w_PMOS "w" )
        nameParameter( w_PMOS "effW" ); REQUIRED FOR SPECTRE

     

    Thankyou.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Sarvani
    Sarvani over 13 years ago

     Hi Andrew,

                       Thankyou very much. Now it works superbly. But I have a problem when running LVS. I have pcells spcnmos, spcpmos(layout,symbol,auLvs,ivpcell...) in library.  I created one inverter(layout and schematic)by using that pcells. It oparates well in VXL mode. While doing LVS it shows following error. 

    1 0 ((L "Y")((1 "spcnmos" ( "D" "G" "S" "B"))(1 "spcpmos" ( "D" "G" "S" "B")))(S "Y")((1 "car" ( "D" "G" "S" "B"))(1 "car\" ( "D" "G" "S" "B"))))

    ^

    SYNTAX ERROR found at line 1 column 129 of file *string*

    In LVS extractfile.rul file I wrote this for device recognition, parameter extraction.

       extractMOS(
        "spcnmos"  spcnmos
        cpoly("G") ndiff("S" "D") psub("B")
        spiceModel( "spcnmos" )
        flagMalformed
        cellView( "spcnmos ivpcell" )
      ); end extractMOS

        l_NMOS = measureParameter( length ( spcnmos inside cpoly ) 0.5u )
        w_NMOS = measureParameter( length ( spcnmos coincident cpoly ) 0.5u )

        nameParameter( l_NMOS "l" )
        nameParameter( w_NMOS "w" )
        nameParameter( w_NMOS "effW" ); REQUIRED FOR SPECTRE
        
        
    /* 1v pmos */

      extractMOS(
        "spcpmos" spcpmos
        cpoly("G") pdiff("S" "D") nwell("B")
        spiceModel( "spcpmos" )
        flagMalformed
        cellView( "spcpmos ivpcell" )
      ); end extractMOS

        l_PMOS = measureParameter( length ( spcpmos inside cpoly ) 0.5u )
        w_PMOS = measureParameter( length ( spcpmos  coincident cpoly ) 0.5u )

        nameParameter( l_PMOS "l" )
        nameParameter( w_PMOS "w" )
        nameParameter( w_PMOS "effW" ); REQUIRED FOR SPECTRE

     

    Thankyou.

    • 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