3 Replies Latest reply on Aug 16, 2012 9:48 AM by samantha_lizak

    About waiver of DRC check

    51tz

      Hi Guy,I confused why Calibre reports one DRC error (GR510_or) which is actually "waiver",  Who can help?

      Below was quoted from master deck file:

      ...

      #IFNDEF WAIVER

      GR510_or {@All CAs must meet Rule 510a or 510b         

                @GR510a [CA touching (M1 > 0.345um wide)] minimum within M1 (rectangular enclosure) >= 0.02         

                @GR510b >= 0.000 if two opp sides overlap >= 0.05         

                CAtouchM1  = CA INTERACT M1_345         

                RECTANGLE ENCLOSURE (CAtouchM1 NOT CELLSNR) M1 ABUT>0<90 SINGULAR OUTSIDE ALSO         

                GOOD 0.020 SQUARE 0.020 SQUARE 0.020 SQUARE 0.020 SQUARE    //510a         

                GOOD 0.000 0.05 0.000 0.05      //510b

                 }

      #ENDIF

       

      INCLUDE $TECHDIR/DRC/Include_Waiver/waiver_GR510_or.cal

      ...

       

      Below was quoted from "waiver_GR510_or.cal“

       

      #IFDEF WAIVER   

               waiver_x_gr510_or:1_1 = EXTENT CELL "*BFR1END4" "*BBFRUP_M"   

               waiver_x_gr510_or_1 = COPY waiver_x_gr510_or:1_1   

       

               waiver_x_gr510_or:1_2 = EXTENT CELL "*FLXP_FR" "*RREN"   

               waiver_x_gr510_or_2 = COPY waiver_x_gr510_or:1_2   

       

               waiver_x_gr510_or:1_3 = EXTENT CELL "*FWR" "*FCWR"   

               waiver_x_gr510_or_3 = COPY waiver_x_gr510_or:1_3    

        

               waiver_gr510_or_1 = COPY waiver_x_gr510_or_1   

               waiver_gr510_or_2 = COPY waiver_x_gr510_or_2   

               waiver_gr510_or_3 = COPY waiver_x_gr510_or_3

       

      GR510_or {@All CAs must meet Rule 510a or 510b         

               @GR510a [CA touching (M1 > 0.345um wide)] minimum within M1 (rectangular enclosure) >= 0.02         

               @GR510b >= 0.000 if two opp sides overlap >= 0.05         

               CAtouchM1  = CA INTERACT M1_345         

               GR510_or_err = RECTANGLE ENCLOSURE (CAtouchM1 NOT CELLSNR) M1 ABUT>0<90 SINGULAR OUTSIDE ALSO         

               GOOD 0.020 SQUARE 0.020 SQUARE 0.020 SQUARE 0.020 SQUARE    //510a         

               GOOD 0.000 0.05 0.000 0.05      //510b 

                     waiver_gr510_or = (waiver_gr510_or_1 OR waiver_gr510_or_2) OR waiver_gr510_or_3 

                     GR510_or_err OUTSIDE waiver_gr510_or           }

       

      GR510_or_waiver1 {@All CAs must meet Rule 510a or 510b         

               @GR510a [CA touching (M1 > 0.345um wide)] minimum within M1 (rectangular enclosure) >= 0.01         

               @GR510b >= 0.000 if two opp sides overlap >= 0.05         

               CAtouchM1  = CA INTERACT M1_345         

               GR510_or_err = RECTANGLE ENCLOSURE (CAtouchM1 NOT CELLSNR) M1 ABUT>0<90 SINGULAR OUTSIDE ALSO         

               GOOD 0.010 SQUARE 0.010 SQUARE 0.010 SQUARE 0.010 SQUARE    //510a         

               GOOD 0.000 0.05 0.000 0.05      //510b         

                     waiver_gr510_or = waiver_gr510_or_1 OR waiver_gr510_or_2         

                     GR510_or_err NOT OUTSIDE waiver_gr510_or           }

       

      GR510_or_waiver2 {@All CAs must meet Rule 510a or 510b         

               @GR510a [CA touching (M1 > 0.345um wide)] minimum within M1 (rectangular enclosure) >= 0.02         

               @GR510b >= 0.000 if two opp sides overlap >= 0.035         

               CAtouchM1  = CA INTERACT M1_345         

               GR510_or_err = RECTANGLE ENCLOSURE (CAtouchM1 NOT CELLSNR) M1 ABUT>0<90 SINGULAR OUTSIDE ALSO         

               GOOD 0.020 SQUARE 0.020 SQUARE 0.020 SQUARE 0.020 SQUARE    //510a         

               GOOD 0.000 0.035 0.000 0.035      //510b         

                     waiver_gr510_or = COPY waiver_gr510_or_3         

                    GR510_or_err NOT OUTSIDE waiver_gr510_or           }

       

      #ENDIF

       

       

      Yes, I really defined ”WAIVER“, so "waiver_GR510_or.cal" should work, why Calibre report "GR510_or" as well?

        • 1. Re: About waiver of DRC check
          samantha_lizak

          Hi 51-

           

          I notice that you have "GR510.or" as rule check in both the IFDEF and IFNDEF blocks. That means a rule check by that name is going to run whether you define WAIVER or not.  Do you know for sure which GR510.or check is running?

           

          If you don't want to rename one (perhaps it is referenced in a script downstream), try giving one of them different comments so you will know.

           

          Hope this helps-

           

          Sam.

          • 2. Re: About waiver of DRC check
            51tz

            HI Sam,

             

            Got it with many thanks.

             

            I defined WAIVER, thus IFDEF process should work, right?

            • 3. Re: About waiver of DRC check
              samantha_lizak

              Whether IFDEF or IFNDEF is followed depends on a few things:

               

              • How is WAIVER defined?  If it was passed in from the shell, the line should be "#IFDEF $WAIVER", if I understood the documentation correctly. (In case the link does not work, see "Conditional Directives for Process Control" in Chapter 2 of the SVRF manual.)

              • What does the fully expanded rule file look like?  Does anything #UNDEFINE?  Is the #DEFINE before the #IFDEF/IFNDEF? 

               

              I can't recall whether this variable will cause the preprocessor lines to be echoed, or just show the blocks used in the compiled run, but try setting the environment variable "CALIBRE_ECHO_RULE_FILE" to ON before running. This variable causes the rules as seen by Calibre to appear in the transcript.  That is, not just the top-level rules but also the rules in all included files.  (Encrypted parts such as parasitic extraction rules remain encrypted.)

               

               

              Regards-

               

              Sam.