LVS DeviceExtractorBase

Hello, I need to create custom primitive devices for LVS. It appears that I need to make a new class or instance derived from the DeviceExtractorBase class and feed it into the extract_devices() command. I have been unable to find any explicit examples of how to create this custom device and need some help please.

thank you!


  • For @Dan_Kanna, I hope I can provide a different solution (see our mail exchange).

    For the others: real custom devices classes are not well supported now. This is going to be a feature for later releases. The main deficit is the ability to define device classes with other terminals or combination behaviour than the predefined classes.


  • I'll take this opportunity to advocate for a truly generic extractor.

    I would like to be able to arbitrarily define an arbitrary number of pins with arbitrary layer_logictext "pin recognizers" and a layer_logictext "type recognizer" and a pin-order map. Also use layout features to assert (rather than deduce) params, handy for weirdball layouts where logic is difficult - just place a rectangle on "housekeeping layers" like "length", "width" and per finger "mult" such that their area equals the quantity of interest (if working in integer-micron technologies) or with a scale factor if submicron and let the PCell place those features driven by input params.

    For example a 40V JI LDMOS device define pins and attributes logic

    LDMOS_40V_recog := dnwellvnwelltexted("LDMOS_40V")

    G := poly(contacttexted("G", contact))
    S := npluspwell(contacttexted("S", contact))
    D := vnwell
    nplus(contacttexted("D", contact))
    B := dnwellpplus(contacttexted("B", contact))
    L := area(length
    W := area(width
    M := area(mult

    Netlist line
    "M"%0 "LDMOS_40V" %D %G %S %B "W="%W "L="%L "M="%M
    M1 LDMOS_40V VBOOT GHSF VOUT VOUT W=1000 L=1.5 M=1

    There has to be some "backstop" for devices that don't have a built-in extractor.

    A truly generic extractor might replace all of the built-ins?

  • @dick_freebird there actually is a generic extractor already. It should offer all the flexibility possible. Plus there is the netlist reader and writer delegate which can take care of the way the devices are read or written to SPICE.

    But that's not nicely wrapped up, so it's not easy to use out of the box. Right now, the solution involves pretty basic programming. I feel however that is a tribute to the manifold ways, devices can be described and eventually extracted.

    I assume that can be wrapped into a kind of library one needs to include to enable more kind of devices.


Sign In or Register to comment.