9 Replies Latest reply on Jul 26, 2017 2:14 PM by dan_liddell

    BJT device definition on LVS check rule file - SVRF language

    ronaldompotne

      I need to write my own LVS check rule file for the technology I am currently using, but I am quite new on this.

      I have checked the SVRF manual to understand the language syntax and also some examples but I am having trouble to define the BJT device for proper recognition.

      My BJT is vertical, and on the manual, the syntax shown is basically:

       

      "Example: DEV Q(BJT)

      DEV Q(BJT) base coll base emit Here the component type is Q, the model name is BJT,

      Here the component type is Q, the model name is BJT, base is the device layer, and there are three pins. If property A is calculated, it is netlisted as AREA, but is traced as A."

       

      Bellow is my NPN bipolar layout:

       

      Screenshot from 2017-07-20 19-21-57.png

       

      Collector is SN (shallow N), base is SP (shallow P) and emitter is SN again.

       

      So I am defining the device as:

       

      //=================

      //Bipolar device

      //=================

       

      emitt = SN INSIDE SP //emitter area

      base = NOT SP emitt // base area

      coll  = SN NOT INSIDE SP //collector area

      DEVICE Q(BJT) base SN(C) base(B) emitt(E) (C E)

      [property A

      A = AREA(base)

      ]

      //compare the areas of source and layout

      TRACE PROPERTY Q(BJT) A A 0

      //compare the multiplicity if source and layout

      TRACE PROPERTY Q(BJT) m m 0

       

      When I run the LVS, Calibre reports me errors regarding both the net of devices and device recognition.

      So, basically, I believe my code is not correct.

      Please, find below the log output.

      Would you be, so kind, to help me with this?

      I am struggling with this for so long already and there is no other support for me since people here do not have expertise on writing on SVRF.

      Thank you very much in advance.

      I am looking forward to your support.

      Best regards.

       

      LOG OUTPUT

      ===================================================================================================

                         CELL COMPARISON RESULTS ( TOP LEVEL )

       

                        #   #         ##################### 

                         # #          #                   # 

                          #           #     INCORRECT     # 

                         # #          #                   # 

                        #   #         ##################### 

       

        Error:    Different numbers of nets (see below).

        Error:    Different numbers of instances (see below).

        Error:    Connectivity errors.

      LAYOUT CELL NAME:         bipolar_dummy

      SOURCE CELL NAME:         bipolar_dummy

       

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

      NUMBERS OF OBJECTS

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

                      Layout    Source         Component Type

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

      Ports:              0         0

      Nets:               1         3    *

      Instances:          0         1    *    Q (3 pins): c b e

                           1         0    *    Q (3 pins): (c e) b   ** non-standard device **

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

      Total Inst:         1         1

       

             * = Number of objects in layout different from number in source.

      **************************************************************************************************************

                                       INCORRECT OBJECTS

      **************************************************************************************************************

      LEGEND:

      -------

        ne  = Naming Error (same layout name found in source

              circuit, but object was matched otherwise).

      **************************************************************************************************************

                                         INCORRECT NETS

      DISC#  LAYOUT NAME                                               SOURCE NAME

      **************************************************************************************************************

        1    Net 2                                                     ** no similar net **

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

        2    ** no similar net **                                      net01

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

        3    ** no similar net **                                      net02

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

        4    ** no similar net **                                      net06

      **************************************************************************************************************

                                       INCORRECT INSTANCES

      DISC#  LAYOUT NAME                                               SOURCE NAME

      **************************************************************************************************************

        5    Q0(63.000,53.000)  Q(BJT)                                 ** missing instance **

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

        6    ** missing instance **                                    QI11  Q(NP)

      **************************************************************************************************************

                                     INFORMATION AND WARNINGS

      **************************************************************************************************************

                        Matched    Matched    Unmatched    Unmatched    Component

                         Layout     Source       Layout       Source    Type

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

         Ports:               0          0            0            0

       

       

         Nets:                0          0            1            3

       

       

         Instances:           0          0            0            1    Q(NP)

                              0          0            1            0    Q(BJT)

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

         Total Inst:          0          0            1            1

      **************************************************************************************************************

                                               SUMMARY

      **************************************************************************************************************

      Total CPU Time:      0 sec

      Total Elapsed Time:  0 sec

        • 1. Re: BJT device definition on LVS check rule file - SVRF language
          ronaldompotne

          Does anyone have any idea or suggestion for my issue?

          I appreciate whatever input that can lead to solving the problem.

          Thanks again.

          • 2. Re: BJT device definition on LVS check rule file - SVRF language
            dan_liddell

            Hi Ronaldo,

             

            At some point you may want to read the "Device Recognition" chapter of the Calibre Verification User's Manual. That gives a thorough introduction to Device statements and property computations.

             

            When you see this in an LVS report:

             

            Nets:           1     3*

             

            this often means there are shorts in the layout, so I suspect your device's C and E pins are shorted in the current rule configuration. So we need to get that corrected. Now let's look at your code:

             

            emitt = SN INSIDE SP //emitter area

            base = NOT SP emitt // base area

            coll  = SN NOT INSIDE SP //collector area

            DEVICE Q(BJT) base SN(C) base(B) emitt(E) (C E)

             

            Notice we don't have "coll" declared as a collector pin layer in the Device statement, we have SN instead. I'm guessing that's really not the intent. What happens if you declare coll as the C pin layer?

             

            dan

            • 3. Re: BJT device definition on LVS check rule file - SVRF language
              ronaldompotne

              Hi Daniel,

               

              Thank you very much for your reply. I am really struggling with that.

              Unfortunately, I also have tried your suggestion prior to your comment, but Calibre reports an error when I declare coll as the C pin layer.

              That's why I put SN instead.

              Do you have further suggestions?

              Thanks again.

              • 4. Re: BJT device definition on LVS check rule file - SVRF language
                ronaldompotne

                Please, check the error msg bellow when I try to declare coll as the C pin.

                 

                Screenshot from 2017-07-24 21-39-48.png

                • 5. Re: BJT device definition on LVS check rule file - SVRF language
                  dan_liddell

                  All pin layers require connectivity to be established on them. So somewhere the "coll" layer needs to appear in a Connect, Sconnect, or be derived from a connectivity layer using a node-preserving layer operation.

                   

                  How does the SN layer get its connectivity?

                   

                  dan

                  • 6. Re: BJT device definition on LVS check rule file - SVRF language
                    ronaldompotne

                    Hello Dan,

                    Thanks again for your reply.

                    I think I am almost there, but I am still facing some problems.

                    Well, first I could give proper connectivity to the "coll" layer but I am still getting some errors that I am trying to figure out what is going on.

                    As you can see in the picture of my BJT, the "coll" layer is not a rectangle but a path.

                    So I am wondering how to define this layer properly using the boolean functions that I see on the SVRF manual.

                    I tried many different versions, but without success. Errors vary from "Nothing in Layout. Corresponding cells could not be identified" (so I suppose my "coll" definition does not see anything) to "Incorrect nets. Unmatched objects" (so somehow I create undesirable shorts in the pins).

                    Below I show some examples I have tried:

                     

                    1. coll  = NW AND (SN NOT INSIDE SP) // Error: "Nothing in Layout. Corresponding cells could not be identified"
                    2. coll  = SN NOT INSIDE SP // Error: "Nothing in Layout. Corresponding cells could not be identified"
                    3. coll = NOT RECTANGLE SN // Error: "Nothing in Layout. Corresponding cells could not be identified"
                    4. SP_GR = SP NOT INSIDE //This is just the definition of the guard ring around the collector, the SP (red layer)
                      NW coll = NW AND (SN NOT SP_GR) // Error: "Incorrect nets. Unmatched objects."
                    5. coll = SN // Error: "Incorrect nets. Unmatched objects."

                     

                    Regarding definitions 1, 2 and 3, my feeling why it reports errors is because these boolean operations take into account polygons and the collector layer is a path, instead.
                    On item 4 and 5, collector and emitter are shorted so the definition is probably wrong.

                    From the errors I get, I believe I am not defining the layers of my device properly because I have both rectangles and paths. I don't know.

                    So considering this, is there any way that I can visualize the results of my BOOLEAN operations (i.e. the results of items 1 to 5) so I can be more confident about the output I am generating?

                    Since I know you are not hired to answer questions on help communities, please consider my sincere gratitudes on any help.

                    I am looking forward to hearing from you again.

                    Best regards.

                     

                     

                     

                    • 7. Re: BJT device definition on LVS check rule file - SVRF language
                      dan_liddell

                      Hi Ronaldo,

                       

                      Layer derivations do not affect whether Calibre sees anything in the layout. A "Nothing in Layout" error means the layout specified in the Layout Path statement is empty; that is, it has no layers. Oftentimes this problem occurs when there is a layer mapping issue for streaming out the GDS from the layout editor for Calibre.

                       

                      Calibre converts path objects (that are not 0-width) to polygons automatically, so you don't need any special layer derivation for path objects versus polygons.

                       

                      I suggest putting the following into your rules:

                       

                      LVS EXECUTE ERC YES

                      ERC CELL NAME YES CELL SPACE XFORM

                      ERC RESULTS DATABASE erc.db

                      ERC SUMMARY REPORT erc.report HIER

                       

                      SN { COPY SN}

                      coll {COPY coll}

                      emitt {COPY emitt}

                      base {COPY base}

                       

                      GROUP erc_checks SN coll emitt base

                       

                      ERC SELECT CHECK erc_checks

                       

                      Run circuit extraction (calibre –spice, or however you do it in your environment). Then open erc.db in RVE as a DRC-type database. The rule checks results have the same names as the derived layers of interest.

                       

                      There seems to be a problem in the layer derivations or the CONNECT sequence. If doing what I suggest above doesn't help, I suggest putting together a minimal test case where the GDS layout simply contains the device cell and your rules. Then enter a service request and send the test case.

                       

                      dan

                      • 8. Re: BJT device definition on LVS check rule file - SVRF language
                        ronaldompotne

                        Hi again Dan,

                        Thank you very much for your helpful contributions.

                        I was able to include the commands you created for the rule file and now I can see the outputs of my Boolean operations. Thanks!!

                        The only problem I face now is how to pass the connectivity to each pin (collector, base and emitter) properly.

                        I am not sure whether I am doing this right or not, but my device definition is now:

                         

                        DEVICE Q(NP) base NW(C) base(B) emitt_pin(E)

                         

                        where,

                         

                        base = SP NOT INTERACT SN

                        emitt_pin = SN NOT INTERACT SP

                         

                        I tried to define the collector pin layer as (SN NOT INTERACT SP) AND NW, but it gets again the error "nothing in layout" and I only could make it to work defining it as the NW layer.

                        Then I try to pass connectivity as:

                         

                        CONNECT M1 base BY CT

                        CONNECT M1 emitt_pin BY CT

                         

                        But then the base and emitter pins get shorted.

                        Do you have any suggestion how can I overcome this issue?

                        Moreover, do I also have to create the connectivity to the NW (collector)?

                        Thank you very much for your help.

                        • 9. Re: BJT device definition on LVS check rule file - SVRF language
                          dan_liddell

                          You're welcome.

                           

                          I suggest opening a service request. Prep a small test case to send in.

                           

                          dan