Home > Community > Forums > Custom IC Design > Problem in reading-in in Spectre

Email

* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

 Problem in reading-in in Spectre 

Last post Wed, Jun 11 2014 2:46 PM by Andrew Beckett. 5 replies.
Started by SaeedR 27 May 2014 04:21 PM. Topic has 5 replies and 1934 views
Page 1 of 1 (6 items)
Sort Posts:
  • Tue, May 27 2014 4:21 PM

    • SaeedR
    • Not Ranked
    • Joined on Tue, May 27 2014
    • Posts 3
    • Points 60
    Problem in reading-in in Spectre Reply

     Hi dear fellows,

     I just upgraded my Cadence from version 5 to 6. In version 5, there was a portAdapter componentwhich was in rfExamples library. After upgrading to version 6 and adding the same library, I can still drag and drop the portAdapter to the schematic but there is a problem while doing the simulation. The error after any simulation is as follows:

     Error found by spectre in `portAdapter', during circuit read-in.
        ERROR (SFE-874): "input.scs" 16: Unexpected comma ",". Expected close parenthesis.
        ERROR (SFE-683): "input.scs" 16: Badly formed parameters statement.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
    Warning from spectre in `portAdapter', during circuit read-in.
        WARNING (SFE-702): "input.scs" 16: Use of the comma character in node lists is not supported.
    Error found by spectre in `portAdapter', during circuit read-in.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-678): "input.scs" 16: Statement is not in Spectre format. Use `simulator lang=spice' to introduce spice language sections.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-874): "input.scs" 16: Unexpected operator "*". Expected end of file or end of line.
        ERROR (SFE-678): "input.scs" 16: Statement is not in Spectre format. Use `simulator lang=spice' to introduce spice language sections.
    Error found by spectre during circuit read-in.
        ERROR (SFE-874): "input.scs" 59: Unexpected comma ",". Expected close parenthesis.

     

    Would you please let me know if you had this problem befroe and how you figured it out.

     

    Thanks

    Saeed

    • Post Points: 20
  • Wed, May 28 2014 1:28 AM

    Re: Problem in reading-in in Spectre Reply

    Saeed,

    Without seeing what your input.scs looks like (particularly the instance of the portAdaptor, and ideally the instances either side of it in case it's a consequence of the previous or subsequent instsance), I can't comment. People still use the portAdapter, and generally it works.

    If you can post your entire input.scs that would be best, then I may be able to spot what is wrong.

    Kind Regards,

    Andrew.

    • Post Points: 20
  • Wed, May 28 2014 3:30 PM

    • SaeedR
    • Not Ranked
    • Joined on Tue, May 27 2014
    • Posts 3
    • Points 60
    Re: Problem in reading-in in Spectre Reply

     Hi Andrew,

    I put the input.scs files of both portAdapter in version 5 Cadence and version 6 one. The first one is version 5 input.scs file. As you see, there are three variables cval, rval and lval specifing variables capacitor, resistor and inductor. Everything is alright in the version 5 and the simulation works pretty well.

    -----------------------------------------------------------------------------------------------------------------------------

     // Generated for: spectre
    // Generated on: May 28 15:33:48 2014
    // Design library name: test_p13_2
    // Design cell name: portAdap_test
    // Design view name: schematic
    simulator lang=spectre
    global 0
    parameters mag_gamma=0.2
    include "/CMC/kits/cmosp13.V1.8.0.0DM/IBM_PDK/cmrf8sf/V1.8.0.1DM/Spectre/models/design.scs"
    include "/CMC/kits/cmosp13.V1.8.0.0DM/IBM_PDK/cmrf8sf/V1.8.0.1DM/Spectre/models/allModels.scs" section=tt

    // Library name: rfExamples
    // Cell name: portAdapter
    // View name: schematic
    subckt portAdapter out portPin
    parameters \
            cval=max((-(2*((0)*sin((0)*3.14159/180.)+(0)*sin((0)*3.14159/180.)))*((1+(hypot((2*((0)*cos((0)*3.14159/180.)+(0)*cos((0)*3.14159/180.))),(2*((0)*sin((0)*3.14159/180.)+(0)*sin((0)*3.14159/180.))))/2)**2-(2*((0)*cos((0)*3.14159/180.)+(0)*cos((0)*3.14159/180.)))))/(((1-(hypot((2*((0)*cos((0)*3.14159/180.)+(0)*cos((0)*3.14159/180.))),(2*((0)*sin((0)*3.14159/180.)+(0)*sin((0)*3.14159/180.))))/2)**2))**2+(2*((0)*sin((0)*3.14159/180.)+(0)*sin((0)*3.14159/180.)))**2))/((50)*(2*3.14159*(1G))),0) \
            rval=((50)*(((1-(hypot((2*((0)*cos((0)*3.14159/180.)+(0)*cos((0)*3.14159/180.))),(2*((0)*sin((0)*3.14159/180.)+(0)*sin((0)*3.14159/180.))))/2)**2))**2+min(0,(2*((0)*sin((0)*3.14159/180.)+(0)*sin((0)*3.14159/180.))))**2)/max(1e-6,((1+(hypot((2*((0)*cos((0)*3.14159/180.)+(0)*cos((0)*3.14159/180.))),(2*((0)*sin((0)*3.14159/180.)+(0)*sin((0)*3.14159/180.))))/2)**2-(2*((0)*cos((0)*3.14159/180.)+(0)*cos((0)*3.14159/180.))))))/((1-(hypot((2*((0)*cos((0)*3.14159/180.)+(0)*cos((0)*3.14159/180.))),(2*((0)*sin((0)*3.14159/180.)+(0)*sin((0)*3.14159/180.))))/2)**2))-(50)) \
            lval=max(((50)*(2*((0)*sin((0)*3.14159/180.)+(0)*sin((0)*3.14159/180.)))/((1+(hypot((2*((0)*cos((0)*3.14159/180.)+(0)*cos((0)*3.14159/180.))),(2*((0)*sin((0)*3.14159/180.)+(0)*sin((0)*3.14159/180.))))/2)**2-(2*((0)*cos((0)*3.14159/180.)+(0)*cos((0)*3.14159/180.))))))/(2*3.14159*(1G)),0)
        C0 (net11 0) capacitor c=cval
        R1 (net11 portPin) resistor r=rval
        L0 (out net11) inductor l=lval
    ends portAdapter
    // End of subcircuit definition.

    // Library name: test_p13_2
    // Cell name: portAdap_test
    // View name: schematic
    PORT1 (net6 net4) port r=50 type=sine
    PORT0 (net3 net4) port r=50 type=sine
    I0 (net3 net6) portAdapter \
            cval=max((-(2*((mag_gamma)*sin((100)*3.14159/180.)+(0)*sin((0)*3.14159/180.)))*((1+(hypot((2*((mag_gamma)*cos((100)*3.14159/180.)+(0)*cos((0)*3.14159/180.))),(2*((mag_gamma)*sin((100)*3.14159/180.)+(0)*sin((0)*3.14159/180.))))/2)**2-(2*((mag_gamma)*cos((100)*3.14159/180.)+(0)*cos((0)*3.14159/180.)))))/(((1-(hypot((2*((mag_gamma)*cos((100)*3.14159/180.)+(0)*cos((0)*3.14159/180.))),(2*((mag_gamma)*sin((100)*3.14159/180.)+(0)*sin((0)*3.14159/180.))))/2)**2))**2+(2*((mag_gamma)*sin((100)*3.14159/180.)+(0)*sin((0)*3.14159/180.)))**2))/((50)*(2*3.14159*(1G))),0) \
            rval=((50)*(((1-(hypot((2*((mag_gamma)*cos((100)*3.14159/180.)+(0)*cos((0)*3.14159/180.))),(2*((mag_gamma)*sin((100)*3.14159/180.)+(0)*sin((0)*3.14159/180.))))/2)**2))**2+min(0,(2*((mag_gamma)*sin((100)*3.14159/180.)+(0)*sin((0)*3.14159/180.))))**2)/max(1e-6,((1+(hypot((2*((mag_gamma)*cos((100)*3.14159/180.)+(0)*cos((0)*3.14159/180.))),(2*((mag_gamma)*sin((100)*3.14159/180.)+(0)*sin((0)*3.14159/180.))))/2)**2-(2*((mag_gamma)*cos((100)*3.14159/180.)+(0)*cos((0)*3.14159/180.))))))/((1-(hypot((2*((mag_gamma)*cos((100)*3.14159/180.)+(0)*cos((0)*3.14159/180.))),(2*((mag_gamma)*sin((100)*3.14159/180.)+(0)*sin((0)*3.14159/180.))))/2)**2))-(50)) \
            lval=max(((50)*(2*((mag_gamma)*sin((100)*3.14159/180.)+(0)*sin((0)*3.14159/180.)))/((1+(hypot((2*((mag_gamma)*cos((100)*3.14159/180.)+(0)*cos((0)*3.14159/180.))),(2*((mag_gamma)*sin((100)*3.14159/180.)+(0)*sin((0)*3.14159/180.))))/2)**2-(2*((mag_gamma)*cos((100)*3.14159/180.)+(0)*cos((0)*3.14159/180.))))))/(2*3.14159*(1G)),0)
    simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=27 \
        tnom=25 scalem=1.0 scale=1.0 gmin=1e-12 rforce=1 maxnotes=5 maxwarns=5 \
        digits=5 cols=80 pivrel=1e-3 sensfile="../psf/sens.output" \
        checklimitdest=psf
    sp sp ports=[PORT0 PORT1] start=1G stop=2G step=0.01G annotate=status
    modelParameter info what=models where=rawfile
    element info what=inst where=rawfile
    outputParameter info what=output where=rawfile
    designParamVals info what=parameters where=rawfile
    primitives info what=primitives where=rawfile
    subckts info what=subckts  where=rawfile
    saveOptions options save=allpub

     ---------------------------------------------------------------------------------------------------------------------------------------------------

    Now, the input.scs file for the version 6 Cadence is as follows:

     ---------------------------------------------------------------------------------------------------------------------------------------------------

    // Generated for: spectre
    // Generated on: May 28 15:45:17 2014
    // Design library name: test_p13_2
    // Design cell name: T_B2
    // Design view name: schematic
    simulator lang=spectre
    global 0
    parameters i59 C=.2p frf=5.2G prf=-10 R=(995p)/C
    include "/nfs/CMC/kits/cmosp13.V1.8.0.0DM/IBM_PDK/cmrf8sf/V1.8.0.1DM/Spectre/models/design.scs"
    include "/nfs/CMC/kits/cmosp13.V1.8.0.0DM/IBM_PDK/cmrf8sf/V1.8.0.1DM/Spectre/models/allModels.scs" section=tt

    // Library name: rfExamples
    // Cell name: portAdapter
    // View name: schematic
    subckt portAdapter out portPin
    parameters \
            cval=max((-(2*((0)*sin((0)*3.)+i59/180.)+(0)*sin((0)*3.14159/180.)))*((1+(hypot((2*((0)*cos((0)*3.)+i59/180.)+(0)*cos((0)*3.14159/180.))),(2*((0)*sin((0)*3.)+i59/180.)+(0)*sin((0)*3.14159/180.))))/2)**2-(2*((0)*cos((0)*3.)+i59/180.)+(0)*cos((0)*3.14159/180.)))))/(((1-(hypot((2*((0)*cos((0)*3.)+i59/180.)+(0)*cos((0)*3.14159/180.))),(2*((0)*sin((0)*3.)+i59/180.)+(0)*sin((0)*3.14159/180.))))/2)**2))**2+(2*((0)*sin((0)*3.)+i59/180.)+(0)*sin((0)*3.14159/180.)))**2))/((50)*(2*3.14159*(1G))),0) \
            rval=((50)*(((1-(hypot((2*((0)*cos((0)*3.)+i59/180.)+(0)*cos((0)*3.14159/180.))),(2*((0)*sin((0)*3.)+i59/180.)+(0)*sin((0)*3.14159/180.))))/2)**2))**2+min(0,(2*((0)*sin((0)*3.)+i59/180.)+(0)*sin((0)*3.14159/180.))))**2)/max(1e-6,((1+(hypot((2*((0)*cos((0)*3.)+i59/180.)+(0)*cos((0)*3.14159/180.))),(2*((0)*sin((0)*3.)+i59/180.)+(0)*sin((0)*3.14159/180.))))/2)**2-(2*((0)*cos((0)*3.)+i59/180.)+(0)*cos((0)*3.14159/180.))))))/((1-(hypot((2*((0)*cos((0)*3.)+i59/180.)+(0)*cos((0)*3.14159/180.))),(2*((0)*sin((0)*3.)+i59/180.)+(0)*sin((0)*3.14159/180.))))/2)**2))-(50)) \
            lval
        C0 (net11 0) capacitor c=cval
        R1 (net11 portPin) resistor r=rval
        L0 (out net11) inductor l=lval
    ends portAdapter
    // End of subcircuit definition.

    // Library name: test_p13_2
    // Cell name: T_B2
    // View name: schematic
    TN1 (net11 net9 net21 net21 net18 0) nfet33tw_rf l=400n w=400.0000u nf=100 \
            m=4 par=4 ngcon=2 ad=8.8e-11 as=9.104e-11 pd=444.000000u \
            ps=453.52u nrd=0.0006 nrs=0.0006 rf_rsub=1 plnest=-1 plorient=-1 \
            pld200=-1 pwd100=-1 lstis=1 lnws=0 rgatemod=3 rbodymod=1 gtab=1 \
            ring=2 cwire=1 panw1=0p panw2=0p panw3=0p panw4=0p panw5=0p \
            panw6=0p panw7=0p panw8=0p panw9=0p panw10=0p sa=6e-07 sb=6e-07 \
            sd=4.4e-07 dtemp=0 t3well=1
    TN0 (net21 In 0 0 net20 0) nfettw_rf l=120.0n w=400.0000u nf=100 m=4 par=4 \
            ngcon=2 ad=7.2e-11 as=7.496e-11 pd=436.000000u ps=445.48u \
            nrd=0.0005 nrs=0.0005 rf_rsub=1 plnest=-1 plorient=-1 pld200=-1 \
            pwd100=-1 lstis=1 lnws=0 rgatemod=3 rbodymod=1 gtab=1 ring=2 \
            cwire=1 panw1=0p panw2=0p panw3=0p panw4=0p panw5=0p panw6=0p \
            panw7=0p panw8=0p panw9=0p panw10=0p sa=5.5e-07 sb=5.5e-07 \
            sd=3.6e-07 dtemp=0 t3well=0
    R3 (net02 In) resistor r=100
    R11 (net7 0) resistor r=205
    R1 (net11 net9) resistor r=R
    R0 (net23 net20) resistor r=6K
    R49 (net22 net18) resistor r=6K
    C1 (out net11) capacitor c=1u
    C0 (In net019) capacitor c=1u
    C41 (net02 net7) capacitor c=65f
    C40 (net7 0) capacitor c=120f
    C38 (net9 0) capacitor c=C
    V3 (net15 0) vsource dc=390.00m type=dc
    V2 (net015 0) vsource dc=3.3 type=dc
    V0 (net22 0) vsource dc=3.3 type=dc
    V1 (net23 0) vsource dc=1.5 type=dc
    L0 (net11 net015) inductor l=1u
    L15 (net02 net15) inductor l=1n
    I15 (out net017) portAdapter \
            cval=max((-(2*((0)*sin((0)*3.)+i59/180.)+(0)*sin((0)*3.14159/180.)))*((1+(hypot((2*((0)*cos((0)*3.)+i59/180.)+(0)*cos((0)*3.14159/180.))),(2*((0)*sin((0)*3.)+i59/180.)+(0)*sin((0)*3.14159/180.))))/2)**2-(2*((0)*cos((0)*3.)+i59/180.)+(0)*cos((0)*3.14159/180.)))))/(((1-(hypot((2*((0)*cos((0)*3.)+i59/180.)+(0)*cos((0)*3.14159/180.))),(2*((0)*sin((0)*3.)+i59/180.)+(0)*sin((0)*3.14159/180.))))/2)**2))**2+(2*((0)*sin((0)*3.)+i59/180.)+(0)*sin((0)*3.14159/180.)))**2))/((50)*(2*3.14159*(1G))),0) \
            rval=((50)*(((1-(hypot((2*((0)*cos((0)*3.)+i59/180.)+(0)*cos((0)*3.14159/180.))),(2*((0)*sin((0)*3.)+i59/180.)+(0)*sin((0)*3.14159/180.))))/2)**2))**2+min(0,(2*((0)*sin((0)*3.)+i59/180.)+(0)*sin((0)*3.14159/180.))))**2)/max(1e-6,((1+(hypot((2*((0)*cos((0)*3.)+i59/180.)+(0)*cos((0)*3.14159/180.))),(2*((0)*sin((0)*3.)+i59/180.)+(0)*sin((0)*3.14159/180.))))/2)**2-(2*((0)*cos((0)*3.)+i59/180.)+(0)*cos((0)*3.14159/180.))))))/((1-(hypot((2*((0)*cos((0)*3.)+i59/180.)+(0)*cos((0)*3.14159/180.))),(2*((0)*sin((0)*3.)+i59/180.)+(0)*sin((0)*3.14159/180.))))/2)**2))-(50))
    PORT1 (net017 0 ) port r=50 num=2 type=sine
    PORT0 (net019 0 ) port r=50 num=1 type=sine freq=frf dbm=prf fundname="F1"
    simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=27 \
        tnom=25 scalem=1.0 scale=1.0 gmin=1e-12 rforce=1 maxnotes=5 maxwarns=5 \
        digits=5 cols=80 pivrel=1e-3 sensfile="../psf/sens.output" \
        checklimitdest=psf
    dcOp dc write="spectre.dc" maxiters=150 maxsteps=10000 annotate=status
    dcOpInfo info what=oppoint where=rawfile
    sp sp ports=[PORT0 PORT1] start=0.001G stop=10G step=0.01G annotate=status
    modelParameter info what=models where=rawfile
    element info what=inst where=rawfile
    outputParameter info what=output where=rawfile
    designParamVals info what=parameters where=rawfile
    primitives info what=primitives where=rawfile
    subckts info what=subckts  where=rawfile
    saveOptions options save=allpub
     

    ------------------------------------------------------------------------------------------------------------------------------------------------

    When I am comparing these two files together, it is interesting that the conversion looks not to work proporly. First of all, 3.14159 in thefirst input.scs file has been tranlated to 3.)+i59, which is very weird. That is why when I start to run the simulation, the simulator asks me to enter the initial value for i59 which is suddenly poped up. Secondly, in version 5 file, all three variables are defined, but in the new one, as you see, only cval and rval are defined and lval is left empty. 

     

    I am not sure how I can figure this problem out so that the portAdapter can be functional in new version as well. Does it depend on the model library? Should I create a new pcell for this component? ... 

    • Post Points: 20
  • Mon, Jun 2 2014 1:30 AM

    Re: Problem in reading-in in Spectre Reply

    My guess from the symptoms is that you may be using Virtuoso in 64 bit mode on a RHEL6 (or similar kernel level to RHEL6) and too old a version of IC61. We only officially started supporting that in IC6.1.5 ISR 12 (might have been 13, I can't recall).

    Can you type: getVersion(t) in the CIW and also "uname -a" on the UNIX command line and post the results here?

    The issue was that there was an underlying change in the implementation of strcpy() in the C libraries in Linux, which violated assumptions that had been valid on all platforms for the last 20 years or so... We had to go back and fix everywhere which had relied on that assumption.

    Regards,

    Andrew.

    • Post Points: 20
  • Wed, Jun 11 2014 11:51 AM

    • SaeedR
    • Not Ranked
    • Joined on Tue, May 27 2014
    • Posts 3
    • Points 60
    Re: Problem in reading-in in Spectre Reply

     Hi dear Andrew

    Sorry for late response. I was in IMS in Tampa last week. 

    Here is the result that I got after executing the commands you posted to me. 

     

    getVersion(t)
    "sub-version  IC6.1.5-64b.72 "

    uname -a
    Linux ict41706.vlsi.enel.ucalgary.ca 2.6.32-431.1.2.el6.x86_64 #1 SMP Thu Dec 12 13:59:19 CST 2013 x86_64 x86_64 x86_64 GNU/Linux

     

    Would you please guide me based on these info to figure this problem out.

    Regards

    Saeed

     

    • Post Points: 20
  • Wed, Jun 11 2014 2:46 PM

    Re: Problem in reading-in in Spectre Reply

    Hi Saeed,

    That version is the base version of IC615. For various reasons that I outlined earlier, we didn't start supporting 64-bit Virtuoso on RHEL6 (which is what you appear to be using, or at least a similar kernel version) until IC615 ISR12 (6.1.5.500.12). So you will need to either run in 32 bit mode (turn off $CDS_AUTO_64BIT or pass -32 on the command line), or move to a more recent hotfix of IC615 or use IC616.

    See solution 11816774 for more details.

    Regards,

    Andrew.

    • Post Points: 5
Page 1 of 1 (6 items)
Sort Posts:
Started by SaeedR at 27 May 2014 04:21 PM. Topic has 5 replies.