6 Replies Latest reply on Nov 28, 2012 8:10 AM by chris_balcom

    DEVICE statement

    rennel.fruto

      Hi

       

      Good day, I just want to ask if the below construction of DEVICE statement are correct since I am encountering error on bad device since the device can't be recognized in LVS.

      In the rule file we had two versions for resistor, the p-sub and nwell.

       

      //P-SUB VERSION

      DEVICE  R(res) layer_dev pin_layer_1(pos) pin_layer_2(neg) psub(sub)

       

      //NWELL VERSION

      DEVICE  R(res) layer_dev pin_layer_1(pos) pin_layer_2(neg) nwell(sub)

       

      As you can see, the difference between the two are only the sub. This two are in the rule file since both are used.

       

      When I'm using the device with nwell it flagged as bad device but when removed, it cleans.

       

      When I tried to commented out the P-SUB VERSION, the one with nwell cleans but the one without nwell doesn't recognized.

       

      How can we made that either or both are recognized? Please help.

       

       

      Thanks and regards,

      Rennel

        • 1. Re: DEVICE statement
          chris_balcom

          Hi Rennel,

           

          Can you share the warning message regarding the bad device? There should be some information about pins that were found, maybe too many, or too few, along with some details that may help. That message should be in the lvs.rep.ext file.

           

          Best regards,

          -chris

          • 2. Re: DEVICE statement
            rennel.fruto

            Hi Chris,

             

            These are what the *lvs.rep.ext file contains in my run

             

            WARNING: BAD DEVICE on layer layer_dev at location (2.5,3.98) in cell res_test

                     (No matching DEVICE operation).

                     Found 4 interaction(s):

                     Pin on layer pin_layer_1, net "vcc!" at location (2.5,4.48)

                     Pin on layer pin_layer_2, net "vss!" at location (10,4.48)

                     Pin on layer psub, net 4 at location (2.5,4.48)

                     Pin on layer nwell, net "vcc!" at location (2.5,4.48)

                     Possible Element Names: R(res) R(res)

             

            Regards,

            Rennel

            • 3. Re: DEVICE statement
              rennel.fruto

              Hi Chris,

               

              Just want to also ask if this two versions have the same result in the psub output:

               

              1)  bulk = SIZE (EXTENT) BY <number> 

                   sized_subid = SIZE sub_ by <number>
                   psub = (bulk NOT sized_subid) OR sub_

                  

                2) bulk = SIZE (EXTENT) BY <number>

                    psub_bulk = bulk NOT nwell
                    sized_subid = SIZE sub_ by <number>
                    psub_moat = sized_subid NOT sub_
                    psub = (psub_bulk NOT psub_moat) OR (sub_ NOT nwell)

               

              Since when I'm using the no. 1, it produces the "BAD DEVICE" error but when using the no. 2, the bad device was not produced and I also want to make the code short. Please advise. Thanks.

               

              Regards,

              Rennel

              • 4. Re: DEVICE statement
                chris_balcom

                I think the problem is highlighted here:

                 

                Pin on layer psub, net 4 at location (2.5,4.48)

                Pin on layer nwell, net "vcc!" at location (2.5,4.48)

                 

                Both pin layers were present, causing the bad device. Your modified code removes psub from areas covered by nwell, so psub and nwell won't both exist in the same place under the device. I think the following line has the right idea:

                 

                psub_bulk = bulk NOT nwell

                 

                In the last line, I think you don't need this part:

                 

                OR (sub_ NOT nwell)

                 

                ...because  the EXTENT would have already incorporated the SUB_, and the nwell areas were already removed from the bulk.

                1 of 1 people found this helpful
                • 5. Re: DEVICE statement
                  rennel.fruto

                  Hi Chris,

                   

                  Thanks for the response.

                  So you are saying that the long code is much better than the short one? or psub_bulk = bulk NOT nwell is the line that was missing on the short code that why it produces "BAD DEVICE" error?

                   

                  Thanks and regards,

                  Rennel

                  • 6. Re: DEVICE statement
                    chris_balcom

                    Based on your examples, the following might be good to try.

                    The extra OR at the end is removed. I also reversed the usage of sized_subid

                    so that it wouldn't expand beyond the original boundaries of the cells it may be in.

                    Just some ideas you might try to see if they work for you.

                     

                          bulk = SIZE (EXTENT) BY <number>

                          psub_bulk = bulk NOT nwell
                          sized_subid = SIZE sub_ by <small negative number>
                          psub_moat = sub_ NOT sized_subid

                          psub = psub_bulk NOT psub_moat