Home > Community > Forums > Custom IC SKILL > Netlist creation error

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: *

 Netlist creation error 

Last post Tue, Feb 18 2014 2:05 PM by jshi. 3 replies.
Started by yongs 26 Jul 2013 02:18 PM. Topic has 3 replies and 2037 views
Page 1 of 1 (4 items)
Sort Posts:
  • Fri, Jul 26 2013 2:18 PM

    • yongs
    • Not Ranked
    • Joined on Fri, Jul 26 2013
    • Posts 1
    • Points 20
    Netlist creation error Reply

    Hi, I'm trying to use the schematics and simulation setups provided in CMOSedu.com.

    When I added IC6.1 library (I'm using virtuoso 6.1.5 version) and other directories and ran the spectre simulation, I got Netlist Error:  

    Could not find netlist procedure:ABbnNetlistProc instance "M0" in cell-view "Ch26_IC61" "Fig26_10" "schematic"

    for all of the 3-terminal nmos and pmos transistors.

    In the CDF editing window, the netlistProcedure field is written as "ABbnNetlistProc". After I deleted 'ABbnNetlistProc' and empty the field, the error message disappeared and netlist could be created, however, there's another error message: Error found by spectre during hierarchy flattening. ERROR (CMI-2116): M0: Too few terminals given (3 < 4) while running simulation. 

    Any suggestion to solve this error?

    • Post Points: 20
  • Thu, Aug 1 2013 8:20 AM

    • skillUser
    • Top 10 Contributor
    • Joined on Fri, Sep 19 2008
    • Austin, TX
    • Posts 2,535
    • Points 14,940
    Re: Netlist creation error Reply

     Hi,

    I don't have time to download and install materials from the site that you mentioned, but the general message seems to be that the netlist procedure ABbnNetlistProc is not defined - this is required to netlist the MOS component's bulk terminal.  Check that your start up procedures are loading SKILL from a .cdsinit file, or perhaps from a library libInit.il file (in the PDK library, for example) - this is most likely where the procedure should be loaded from. If this information does not help, you could look through *.il files and search for the ABbnNetlistProc, it is most likely defined in one of them somewhere but not being loaded, hence the error.

    Good luck.

    Lawrence.

    • Post Points: 20
  • Thu, Aug 1 2013 10:25 AM

    Re: Netlist creation error Reply

    I suspect that the code is as below - this is from a very old solution (11004934) that is no longer on Cadence Online Support because it's obsolete (it was intended to help customers migrate from the old spectreS way of handling programmable bulk nodes, to the new inherited connection method - the old way was not supported when spectre (direct) was introduced back in IC443).

    So the code was to help around 14 years ago... the clue that it was from me was the "AB" in the function name ;-)

    Here's the code from that solution (apologies for the blank lines in the solution; it got munged slightly in a migration of our support system to a new system):

    defun(ABbnNetlistProc (inst)

        let((formatter netlister bulk sigs)

            ;----------------------------------------------------------------

            ; Get hold of the formatter and netlister objects

            ;----------------------------------------------------------------

            formatter=nlGetFormatter(inst)

            netlister=nlGetNetlister(formatter)

     

            nlPrintInstComments(formatter inst)

            nlPrintIndentString(netlister)

            nlPrintInstName(formatter inst)

            ;----------------------------------------------------------------

            ; Print the standard signals. Can't use nlPrintInstSignals

            ; because the parentheses would be around the terminals in

            ; the termOrder, and not include the bulk node

            ;----------------------------------------------------------------

            sigs=nlGetSignalList(inst)

            nlPrintString(netlister " (" car(sigs))

            foreach(sig cdr(sigs)

                nlPrintString(netlister " " sig)

            ) ; foreach

            ;----------------------------------------------------------------

            ; Get the bn parameter and output that as the connection, if

            ; it is set

            ;----------------------------------------------------------------

            bulk=nlGetParamStringValue(inst "bn")

            when(member(bulk '("D" "G" "S"))

                bulk=nlGetTerminalSignalName(inst bulk)

                )

            when(bulk

                nlPrintString(netlister " " bulk)

                )

            ;----------------------------------------------------------------

            ; Write out the close parenthesis, now that the bulk is written

            ;----------------------------------------------------------------

            nlPrintString(netlister ")")

     

            nlPrintModelName(formatter inst)

            nlPrintInstParameters(formatter inst)

            )

        )

     

    • Post Points: 20
  • Tue, Feb 18 2014 2:05 PM

    • jshi
    • Not Ranked
    • Joined on Tue, Jul 22 2008
    • Posts 2
    • Points 10
    Re: Netlist creation error Reply
    Thanks Andrew. you rocks!
    • Post Points: 5
Page 1 of 1 (4 items)
Sort Posts:
Started by yongs at 26 Jul 2013 02:18 PM. Topic has 3 replies.