• Home
  • :
  • Community
  • :
  • Forums
  • :
  • Mixed-Signal Design
  • :
  • AMS simulator netlist error using pPar parameters

Mixed-Signal Design Forums

AMS simulator netlist error using pPar parameters

Jan Cools
Offline Jan Cools 4 months ago

Hello,

I'm using AMS designer as my simulator for my full chip as I have mixed signal blocks. However I designed an analog block which is a tapered inverter buffer in 28nm TSMC. I parameterized this cell using the pPar("FWN"), pPar("FWP"),... as transistor properties and created the symbol. Now I create and simulate the design by placing the created symbol and setting the instance parameters to variable names and sweep them in ADE using spectre simulator. All went fine and I was able to determine a good sizing. Now I wanted to insert this block into my mixed signal design and simulate with AMS simulator. However I get a bunch of errors from the irun log that I am missing right parenthesis or left or semicolon: (I left some technology info out)

ncvlog: *E,EXPRPA (./netlist.vams,33|1512): expecting a right parenthesis (')') [4.2(AMSLRM)].

pmose_rf_ulvt_5t #(..........A LOT OF FORMULAS HERE CONTAINING MY VARIABLES) ........) M0 ( instance ports defenition )

ncvlog: *E,EXPLPA (./netlist.vams,33|1513): expecting a left parenthesis ('(') [12.1.2][7.1(IEEE)].

pmose_rf_ulvt_5t #(..........A LOT OF FORMULAS HERE CONTAINING MY VARIABLES) ........) M0 ( instance ports defenition )

ncvlog: *E,EXPSMC (./netlist.vams,33|2568): expecting a semicolon (';') [12.1.2][7.1(IEEE)].

pmose_rf_ulvt_5t #(..........A LOT OF FORMULAS HERE CONTAINING MY VARIABLES) ........) M0 ( instance ports defenition )

Strange thing is, when I was testing this block using spectre simulator everything worked fine, so I don't expect any setup problems.

It seems that these pPar's are not working using AMS simulator. Any advice? I tried using cells without the parameters and then the simulaton works, however it requires me to make different cells and change there transistors parameters seperately.

Best regards

  • Reply
  • Cancel
  • Cancel
  • Jan Cools
    Offline Jan Cools 4 months ago

    I furhter simplified/debugged the problem: In IC618 I created a new library AMSTEST. In this I created a cell with a resistor from the analogLib and set its value to pPar("RES"). I created the symbol, made a testbench with a simple DC supply and assigned the instance parameter a variable to simulate in ADE. First I simulated with Spectre simulator -> Succes, then I simulated with AMS simulator -> Succes. So this means that the parameter handling of AMS is correct. Now I inserted a transistor into the cell as MOS diode and set it's width to pPar("FWP") (I also made sure to update the base CDF variables to incorperate this new parameter). Again I assigned a variable when instance was placed in testbench to allow the variable to be in ADE. I simulate with spectre -> Succes, then I simulate with AMS -> FAIL, again with the same error messages as above:

    file: ./netlist.vams
    pmos_rf_5t #( --------THIS IS A PLACEHOLDER FOR A 3412 CHARACTER FORMULA -------- ) M0 (A, B, A, A, A);
    |
    ncvlog: *E,DIGAFX (./netlist.vams,28|2045): expecting a digit after an exponent start [2.5.2][2.5(IEEE)].
    pmos_rf_5t #(--------THIS IS A PLACEHOLDER FOR A 3412 CHARACTER FORMULA -------- ) M0 (A, B, A, A, A);
    |
    ncvlog: *E,EXPRPA (./netlist.vams,28|2046): expecting a right parenthesis (')') [4.3][9.7(IEEE)].
    pmos_rf_5t #(--------THIS IS A PLACEHOLDER FOR A 3412 CHARACTER FORMULA -------- ) M0 (A, B, A, A, A);
    |
    ncvlog: *E,EXPLPA (./netlist.vams,28|2048): expecting a left parenthesis ('(') [12.1.2][7.1(IEEE)].
    pmos_rf_5t #(--------THIS IS A PLACEHOLDER FOR A 3412 CHARACTER FORMULA -------- ) M0 (A, B, A, A, A);
    |
    ncvlog: *W,DIGAFP (./netlist.vams,28|3076): expecting a digit after a decimal point [2.5.2][2.5(IEEE)].
    pmos_rf_5t #(--------THIS IS A PLACEHOLDER FOR A 3412 CHARACTER FORMULA -------- ) M0 (A, B, A, A, A);
    |
    ncvlog: *E,PLMIXU (./netlist.vams,28|3083): ordered and named port list mixed syntax [12.3.3][12.3.4(IEEE)].
    pmos_rf_5t #(--------THIS IS A PLACEHOLDER FOR A 3412 CHARACTER FORMULA -------- ) M0 (A, B, A, A, A);
    |
    ncvlog: *E,EXPSMC (./netlist.vams,28|3428): expecting a semicolon (';') [12.1.2][7.1(IEEE)].
    module AMSTEST.RTEST:schematic
    errors: 6, warnings: 1

    Is it possible that the NCvlog command is unable to cope with this massive amount of characters in the formulas?

    EDIT: I now tested this simplified test in IC617 as in IC618 and have the same error. To me it seems that the AMS simulator cannot handle the large formula's when using transistors from a PDK? As it does work for a analogLib resistor. I'm also seeing the same behaviour as mentioned in this forum post: https://community.cadence.com/cadence_technology_forums/f/mixed-signal-design/33868/using-ppar-in-ams-simulation

    EDIT2: I compared the spectre netlist with the AMS unified netlist. The formula in the spectre netlist is longer than the one of AMS unified netlister. Hereunder is snapshot to compare the spectre created netlist with the AMS unified netlist (only the last portion which contains the error is shown)t:

    Spectre:

    LONG FORMULA-((1.125e-06+FWP)/20.0+2.77778e-09)*exp((1.125e-06+FWP)*-1.8e+07)) \
    sodx=80n sodx1=308.909n sodx2=927.325n sodx4=352.412n sodxa=80n \
    sodxb=80n sody=505.00n spa=100n spa1=100n spa2=100n spa3=100n \
    spba=115.715n spba1=117.043n sd=1e-07 spmb=1.11111e+15 \
    spmt=1.11111e+15 spomb=0 spomb1=1.11111e+60 spomt=0 \
    spomt1=1.11111e+60 wr=FWP

    AMS unified netlister (problem indicated by arrow):

                                                                                                                                                 |

                                                                                                                                                 V

    LONG FORMULA-(((1.035e-06+(3-1)*(3e-08+1e-07))+3e-08)/20.0+2.77778e-09)*exp(((1.), .sodx(8e-08), .sodx1(3.08909e-07), .sodx2(9.27325e-07), .sodx4(3.52412e-07), .sodxa(8e-08), .sodxb(8e-08), .sody(5.05e-07), .spa(1e-07), .spa1(1e-07), .spa2(1e-07), .spa3(1e-07), .spba(1.15715e-07), .spba1(1.17043e-07), .sd(1e-07), .spmb(1.11111e+15), .spmt(1.11111e+15), .spomb(0), .spomb1(1.11111e+60), .spomt(0), .spomt1(1.11111e+60), .wr(FWP)) M0 (A, B, A, A, A);

    This is where the formula somehow seems to be truncated.

    Best regards

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • Andrew Beckett
    Offline Andrew Beckett 4 months ago in reply to Jan Cools

    I don't think we're going to get anywhere without being able to see your data. There are a lot of moving parts here, and potentially a number of places where there could be a problem. I'm not aware of any specific issue with long expressions being a problem, but these do seem to be extremely long so maybe there's a bug somewhere in the netlist assembly process.

    You should contact customer support so that we can debug this.

    Thanks,

    Andrew.

    • Cancel
    • Up 0 Down
    • Reply
    • 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.