• 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. SPICEIN: How to import mutual inductance K?

Stats

  • Locked Locked
  • Replies 7
  • Subscribers 126
  • Views 15205
  • 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

SPICEIN: How to import mutual inductance K?

acharlet
acharlet over 4 years ago

Hi,

I am using SPICEIN to import a SPICE netlist to a schematic. The SPICE netlist contains resistor, capacitor, inductance and mutal inductance.

I am using a deviceMap file.

Resistor, capacitor and inductance gets imported well but not mutual inductance.

I do not know how to fill the deviceMap file for mutual inductor.

Any idea?

Alex

  • Cancel
Parents
  • Frank Wiedmann
    Frank Wiedmann over 4 years ago

    I don't have any experience with SPICEIN, but I can tell you that mutual inductance is represented by the mind component from analogLib.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • acharlet
    acharlet over 4 years ago in reply to Frank Wiedmann

    Yes the analogLib component for mutual inductor is "mind". Thank you.

    But what I need is if I have a SPICE netlist as shown below.

    .SUBCKT BLOCK1
    + IN1
    + IN2
    + OUT1
    + OUT2

    L1 IN1 OUT1 1.0e-09
    L2 IN2 OUT2 1.0e-09
    K1_2 L1 L2 0.1

    .EndS

    How to define the deviceMap file to also import correctly the mutual inductance K1?

    My deviceMap currently looks like this.

    -- ;#####################################################
    -- ; basic devices
    devSelect := capacitor cap
    propMatch := subType CAPACITOR
    propMap := model MODEL
    propMap := C c
    devSelect := resistor res
    propMatch := subType RESISTOR
    propMap := model MODEL
    propMap := R r
    devSelect := ind ind
    propMatch := subType INDUCTOR
    propMap := model MODEL
    propMap := L l

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 4 years ago in reply to acharlet


    Dear acharlet,


    > How to define the deviceMap file to also
    > import correctly the mutual inductance K1?

    > My deviceMap currently looks like this.

    -- ;#####################################################
    -- ; basic devices
    devSelect := capacitor cap
    propMatch := subType CAPACITOR
    propMap := model MODEL
    propMap := C c
    devSelect := resistor res
    propMatch := subType RESISTOR
    propMap := model MODEL
    propMap := R r
    devSelect := ind ind
    propMatch := subType INDUCTOR
    propMap := model MODEL
    propMap := L l

    It does not appear that you have specified the properties for the analogLib mind component in your device mapping file to allow SPICEIN to translate your mutual inductor to a mind component. The URL to a Cadence on-line support article details the syntax to specify the
    two inductor values for the mind component.

    support.cadence.com/.../ArticleAttachmentPortal

    Figure 1 shows the query result for the mind component where each of the two inductors is expressed as:

    "In the image shown above, the first coupled inductor ‘L0’ is present inside the ‘I0’ instance and the second coupled inductor ‘L1’ is present inside the ‘I1’ instance. The mind instance is netlisted as:

    K0 mutual_inductor coupling=0 ind1=I0.L0 ind2=I1.L1"

    In your device mapping file, I don't see maps for the L0 and L1 nor the coupling coefficient. Am I overlooking something? There is also a set of references, with a tar file and video on the use of SPICEIN at the on-line support article:

    support.cadence.com/.../ArticleAttachmentPortal

    if you have not seen some of these articles. They may provide some added insight. I hope this helps acharlet!

    Shawn

    Figure 1

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • acharlet
    acharlet over 4 years ago in reply to ShawnLogan

    Thanks for the help.

    At the end, I found on Cadence Support in the Assura and Cdl section that mutual inductor are not supported. They cannot be imported with SpiceIn.

    Unsupported SPICE Elements

    Kxx

    Coupled (mutual) inductor

    Assura Physical Verification Command Reference 4.1_USR5_HF6 (https://support.cadence.com/apex/techpubDocViewerPage?path=assuracommandref/assuracommandref4.1_USR5_HF6/comref_app_b_cdl.html#1035250)

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • acharlet
    acharlet over 4 years ago in reply to ShawnLogan

    Thanks for the help.

    At the end, I found on Cadence Support in the Assura and Cdl section that mutual inductor are not supported. They cannot be imported with SpiceIn.

    Unsupported SPICE Elements

    Kxx

    Coupled (mutual) inductor

    Assura Physical Verification Command Reference 4.1_USR5_HF6 (https://support.cadence.com/apex/techpubDocViewerPage?path=assuracommandref/assuracommandref4.1_USR5_HF6/comref_app_b_cdl.html#1035250)

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • ShawnLogan
    ShawnLogan over 4 years ago in reply to acharlet

    Dear acharlet,

    acharlet said:
    At the end, I found on Cadence Support in the Assura and Cdl section that mutual inductor are not supported. They cannot be imported with SpiceIn.

    Thank you for your update!

    I did see the URL to the Assura article, but from your description of the problem, I thought you were using SPICEIN to import a SPICE file with a mutual inductor into a Virtuoso schematic. Hence, I am not sure why you need to rely on Assura for a SPICE netlist import only - this may be my ignorance though! From my understanding Assura is only used for CDL import not a SPICE file import.

    In any case, perhaps you can take an alternate approach and create a model for your mutual inductor that uses only simple, non-mutual inductors in your SPICE netlist for import. This can be done in a couple of ways. One way is to include a current controlled voltage source in series with each of the two inductors. The voltage is set as M*di/dt where M is the mutual coupling coefficient you are trying to model. For example one of the two controlled sources in series with inductor L1 with current i1 is M(di2/dt) where i2 is the current through the second inductor. A second model uses three non-coupled inductors whose L values are L1+M, L2+M, and -M or L1-M, L2-M, and M. The inductor of value M sits between the series connection of the the other two. Both of these create an equivalent circuit for a mutual inductor without the need for a mutual inductor component.

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to ShawnLogan

    To follow on from what Shawn says, all you need to do is use "SPICE" as the input language (CDL makes no sense, since this is a SPICE netlist, not CDL), and then the device mapping is very simple:

    devSelect := inductor ind

    devSelect := mutual_inductor mind

    All you then need to do is set analogLib as the reference library, and all works fine. No other mapping is needed because the component values are imported directly, and the mutual inductor also gets created with the correct reference components.

    The keywords (inductor, mutual_inductor) are fairly obvious because if you try to import without the mapping, it tells you the name of the component that it couldn't map. So you update the device map and try again (that's what I did with your example, anyway). Here's what I got:

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • acharlet
    acharlet over 4 years ago in reply to Andrew Beckett

    Andrew, it worked like a charm. My mistake was indeed to use the CDL as input language instead of the SPICE one.

    Thanks all for the help.

    • 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