• 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 Design
  3. Changing single transistor instance parameters via SKIL...

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 125
  • Views 13791
  • 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

Changing single transistor instance parameters via SKILL

KevinWarren
KevinWarren over 5 years ago

I have custom transistor compact models that have what amounts to a fail flag. The flag establishes a certain type of behavior for that one transistor when set to one. I would like to be able to set that flag in one single transistor instance in an arbitrarily large hierarchical structure without having it propagate to other instances of identical cells. For example:

I have a top-level schematic view myinverters that contains three inverters wired in series, all of schematic cellview inv1 and they are named I0, I1, and I2.  Within inv1 there is a pmosfet and a nmosfet.  If I descend into I0 (inv1) and modify the fail flag in the pmosfet it will set that flag for all instances of inv1, (i.e., I0, I1, and I2). What I want is a SKILL based approach that will, for example, set only the pmosfet fail flag in I0 and not propagate to instances I1 and I2. 

Does a mechanism exist for this type of operation and if so could I get a push in the right direction? A kludgy way would be for me to build a data structure for the hierarchy, find all the fet instances, identify the parent cell, create a copy, modify the one transistor, rebuild the schematic, and simulate from there but I'm hoping for something simpler and more native. I should add that ultimately the goal is, via SKILL, to iterate through all fets in the design (of a known model type), simulating each case, and building a results table of the impact of the fail flag on each.  

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago

    If you want to set a parameter on a specific hierarchical occurrence, ADE XL/Explorer/Assembler don't support this, unfortunately. They support instance-based parameterisation, but not occurrence-based parameterisation.

    You could do it by putting pPar("flag") on the parameter on the transistor in the inverter, and then in the parameters section of XL/Explorer/Assembler, setting flag on the I0 instance. Hope that's clear.

    Spectre itself also supports occurrence-based alters, so can do this:

    //
    
    model nch bsim4 type=n
    model pch bsim4 type=p
    
    subckt myinv (y a vdd vss)
    MP1 (y a vdd vdd) pch w=1u l=200n
    MN1 (y a vss vss) nch w=0.5u l=200n
    ends myinv
    
    // three inverters (outside Ebbing, Missouri)
    subckt threeinvs (z b vdd vss)
    I0 (int1 b vdd vss) myinv
    I1 (int2 int1 vdd vss) myinv
    I2 (z int2 vdd vss) myinv
    ends threeinvs
    
    vvdd (vdd 0) vsource dc=1.2
    vvss (vss 0) vsource dc=0
    vin (in 0) vsource type=pulse val0=0 val1=1.2 rise=.1n period=30n width=15n
    Itop (op in vdd vss) threeinvs
    
    //tran tran stop=200n
    
    myalt alter dev=Itop.I1.MP1 param=w value=2u
    elements info what=inst where=logfile
    

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • KevinWarren
    KevinWarren over 5 years ago in reply to Andrew Beckett

    Andrew, thank you for providing a couple of paths. I'm not versed enough in the guts of the tools to follow, "you could do it by putting pPar("flag") on the parameter on the transistor in the inverter, and then in the parameters section of XL/Explorer/Assembler, setting flag on the I0 instance." While I get it conceptually I'm not yet good enough put together a complete picture. I will speak with more experienced users and see if they can fill in the details for me. If not I might be back looking for some clarification. 

    I was unaware you could do occurrence based parameter changes in Spectre. That is tremendously helpful to know and in fact may be the more sensible approach for full-on/production analyses. 

    Thanks again. 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

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