10 Replies Latest reply on Jun 4, 2012 6:21 AM by chris_balcom

    about connectivity inheritance




      i have a question about connectivity inheritance..


      in the case below


      m1_a = m1 not b

      connect m1 m2 by cont


      does m1_a inherit connectivity of m1?

      so m1_a and m2 are connected by cont (via layer) , is it right?

        • 1. Re: about connectivity inheritance

          Hi KM -


          I have not tested it, but I believe you are correct.  The SVRF manual says NOT preserves connectivity, so m1_a should have m1's net connections.  The Calibre Verification User's Manual provides examples similar to yours in the topic "Node Preserving Layer Operations".


          Do note, however, that if you have a CONNECT statement that has m1_a in it, that takes precedence over the inheritance.  The topic I linked to gives an example with the Copy operation and cmetal1.





          • 2. Re: about connectivity inheritance

            thanks for your reply,


            then how is that m1_a is not included in Net Layers entry of the net ?



            layer txt 1

            text layer txt

            attach 1 m1


            m1_a = m1 not b

            connect m1 m2 by cont


            I assigned 'V1' label on m1, and expected m1_a layer appears in Net V1 Net layer lists..


            but there are only m1, cont, and m2.


            is it a reasonable result?

            • 3. Re: about connectivity inheritance

              Is layer m1_a used anywhere?  Calibre only uses layers that are involved in the output in some way.  If m1_a is not either output itself (usually through a rule check, used to copy layers to the new layout with output) or part of a derivation chain eventually leading to an output layer, it gets discarded.


              What are you trying to do?  Is there a bigger problem that you suspect is caused by m1_a not receiving connectivity?





              • 4. Re: about connectivity inheritance

                when i extract parasitic capacitance, i find that the capacitance between m1_a and m2 on the same net(ex. V1) is extracted as an intrinsic capacitance.


                capacitance order m1 m2

                pex alias m1 m1_a m1_b ignore primary




                but when m1_a and m2 is connected by contact layer or m1 and m1_a is connected explicitly, the intrinsic cap. between m1_a and m2 disappears.


                connect m1_a m2 by cont




                connect m1 m1_a


                do i need to connect m1_a explicitly?

                • 5. Re: about connectivity inheritance

                  Hi - what version of Calibre are you using?



                  • 6. Re: about connectivity inheritance

                    it's v2011.3.

                    • 7. Re: about connectivity inheritance

                      so.. there are not any answers and any solutions now??

                      anyway, have you tried this?

                      • 8. Re: about connectivity inheritance

                        Hi km,


                        In the simplest case, m1_a will inherit connectivity information from m1, after the NOT operation. I think it might be called "implicit" connectivity. Different connectivity can be achieved "explicitly" by other CONNECT statements. So, it is possible that CONNECT statements elsewhere in the rule file can play a part in this. In one of your examples I think I saw CONNECT M1 M1_A, and in that case, m1_a will be forced to have the same connectivity as m1. (as mentioned earlier, m1_a could also inherit the same connectivity implicitly from m1 after the NOT operation but that could be influenced in unexpected ways by other CONNECT related statements in the rule file that aren't being shown here in the thread so far)


                        Here are a few checks you could run in DRC to confirm the connectivity you are actually getting. Maybe after seeing the results from these DRC checks we could see if the PEX results still make sense? You might try these following checks with/without the extra forcing CONNECT statement to test the implicit connectivity. Just as a final reminder, m1_a in the basic case can indeed inherit connectivity from m1 but it can also be overruled by CONNECT statements elsewhere in the rule file that we may not be seeing in this thread.


                        // show M1 that is on the net named "V1"

                        'V1_M1'{net M1 V1}


                        // show M1 that is not on the net named "V1"
                        'not_V1_M1'{not net M1 V1}


                        // show M1_A that is on the net named "V1"

                        'V1_M1_A'{net M1_A V1}


                        // show M1_A that is not on the net named "V1"

                        'not_V1_M1_A'{not net M1_A V1}

                        • 9. Re: about connectivity inheritance

                          Thank you for your reply, Chris.


                          I could confirm the connectivity by DRC, as you suggested.

                          and i confirmed that NOT operation passes connectivity.

                          but i wonder why i can't find 'implicitly' connected layer in Net Layers of RVE info tab.

                          there isn't m1_a layer but it is the same net with m1.(i could check this by DRC)


                          I think xRC also has an error on this issue too.

                          when m1 is connected m2 by contact layer, intrinsic capacitance between m2 and m1_a is extracted though m1_a is on the same net with m1.

                          but if m1_a is explicitly connected with m1, the intrinsic capacitance disappears.

                          • 10. Re: about connectivity inheritance

                            The m1_A may not really exist for certain LVS runs unless it is an explicit part of the connectivity, such as required to form a device, or as part of the CONNECT statements.


                            As an experiment for LVS-RVE you might consider creating a special debug device that actually uses m1_a. Maybe something like this following statement could be added for the experiment:


                            DEVICE M1_A_DEV m1_a m1_a(m1_a_pin)


                            With that statement in the rule file, you could run connectivity extraction again (calibre -spice for instance) and a device shouls appear in the extracted netlist for every m1_a shape, along with the net name or id it is part of. I would also expect m1_a to appear in your LVS-RVE after this experiment because it is truly used now.