Home > Community > Forums > PCB SKILL > Skill to check minimum cline segment

Email

* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

 Skill to check minimum cline segment 

Last post Wed, Nov 13 2013 1:31 AM by PAVANRKS. 24 replies.
Started by Alice 2009 15 Sep 2010 01:58 AM. Topic has 24 replies and 9318 views
Page 1 of 2 (25 items) 1 2 Next >
Sort Posts:
  • Wed, Sep 15 2010 1:58 AM

    Skill to check minimum cline segment Reply

    Hi,

    I am trying to write an skill to check cline segment length and show DRC if it violate the minimum cline segment.

    Does anyone have similar skill that I can refer? please share.

    Thanks,

    Alice. 

    Filed under: , ,
    • Post Points: 20
  • Wed, Sep 15 2010 7:52 PM

    • leonlee
    • Top 200 Contributor
    • Joined on Tue, Jul 22 2008
    • Shanghai, Shanghai
    • Posts 38
    • Points 580
    Re: Skill to check minimum cline segment Reply

    Hi Alice,

     I'd like to share you the idea:

    MinL = 0.5 ; the minimum length you set
    axlVisibleLayer( "etch" t )
    axlClearSelSet()
    axlSetFindFilter( ?enabled "Clinesegs" ?onButtons "Clinesegs" )  
    allClinesegs = axlGetSelSet( axlAddSelectAll())
    ;To get the violated cline segments, which length is less than your minimun value.
    violateSegs = setof( item, allClines, axlDBGetLength( item ) < MinL )

    Then you can use axlDBCreateExternalDRC to create DRC mark for eatch items in the list violateSegs.

    FYI.

    Leon

    • Post Points: 20
  • Fri, Sep 17 2010 1:56 AM

    Re: Skill to check minimum cline segment Reply

    Hi Leon,

    Thanks for the idea. I manage to create the DRC. However, I still have some Q:-

    #1. Is there syntax to clear the DRC created by axlDBCreateExternalDRC() ? If not, any other manual way to remove created DRC?

    #2. Can I use a variable instead of actual value for the last argument of this axlDBCreateExternalDRC() ?

    axlDBCreateExternalDRC('("Minimum Cline Length" "50um") 1500:1900 "drc error class/layer2" nil nil variable)

    If not, is there a way to show the variable value in the DRC created?

    Thanks,

    Alice

     

    • Post Points: 20
  • Fri, Sep 17 2010 2:21 AM

    • leonlee
    • Top 200 Contributor
    • Joined on Tue, Jul 22 2008
    • Shanghai, Shanghai
    • Posts 38
    • Points 580
    Re: Skill to check minimum cline segment Reply

     

    #1 To delete external DRC:

         axlDeleteObject(setof(item, axlDBGetDesign()->drcs, item->name=="Externally Determined Violation"))

    #2, Of course, you can use variant as the value.

    Try it~~

    • Post Points: 20
  • Fri, Sep 17 2010 2:31 AM

    Re: Skill to check minimum cline segment Reply

    Hi Leon,

     When I use variable "clineLength" as show below, it gives me warning and the DRC did not appear. Please advise.

    clineLength=axlDBGetLength( item )

    axlDBCreateExternalDRC('("Minimum Cline Length" "50um") 1500:1900 "drc error class/layer2" nil nil clineLength)

    W- *WARNING* (axlDBCreateExternalDRC): Invalid string - 33.06258

     

    Thanks,

    Alice

    • Post Points: 20
  • Sat, Sep 18 2010 5:54 PM

    • leonlee
    • Top 200 Contributor
    • Joined on Tue, Jul 22 2008
    • Shanghai, Shanghai
    • Posts 38
    • Points 580
    Re: Skill to check minimum cline segment Reply

    Hello Allice,

     It just need a string. You can replace a line to convert the variant into string:

       clineLength = sprintf( nil "%n" axlDBGetLength( item ) )

    Hope it works.

    • Post Points: 20
  • Tue, Sep 21 2010 1:05 AM

    Re: Skill to check minimum cline segment Reply

    Hi Leon,

    It works well. Thanks =)

    Regards,

    Alice 

     

    • Post Points: 5
  • Tue, Sep 21 2010 6:32 PM

    Re: Skill to check minimum cline segment Reply

    Hi leon,

     I used the same syntax to display the constraint value, but it did not works.

    MinL =50

    MinLString = sprintf( nil "%d" MinL )

    then axlDBCreateExternalDRC('("Minimum Cline Length" MinLString ) car(item->startEnd) "drc error class/layer2" nil nil clineLengthString)

    Result:

    LISTING: 1 element(s)

               < DRC ERROR >          

      Class:           DRC ERROR CLASS
      Subclass:        LAYER2
      Origin xy:       (7022.11 -4928.33)
      Constraint:      Externally Determined Violation
      Constraint Set:  Minimum Cline Length
      Constraint Type: DESIGN

      Constraint value: MinLString
      Actual value:     33.062585

      Properties attached to drc error
        EXTERNAL_DRC_VALUE  = MinLString
        EXTERNAL_VIOLATION_DESCRIPTION  = Minimum Cline Length

     

    Please advise. 

    Thanks,

    Alice

    • Post Points: 20
  • Tue, Sep 21 2010 6:51 PM

    • eDave
    • Top 10 Contributor
    • Joined on Sun, Jul 13 2008
    • Christchurch, 00-NZ
    • Posts 738
    • Points 16,055
    Re: Skill to check minimum cline segment Reply

    Hi Alice,

    You have used the quote on the list incorrectly.

    Try:

    axlDBCreateExternalDRC(list("Minimum Cline Length" MinLString ) car(item->startEnd) "drc error class/layer2" nil nil clineLengthString)

    Regards,

    Dave

    Dave Elder, Tait Communications
    • Post Points: 20
  • Tue, Sep 21 2010 6:58 PM

    Re: Skill to check minimum cline segment Reply

    Hi Dave,

    You are right, it works now =)

    Thanks,

    Alice 

     

    • Post Points: 5
  • Wed, Sep 22 2010 2:22 AM

    Re: Skill to check minimum cline segment Reply

    Hi,

    I am trying to append the form file into the skill file. However, some thing is wrong:-

    Result: E- *Error* axlFormDisplay: argument #1 should be any user-defined (other) type (type template = "o") - nil

    mincline_drc_form = axlFormCreate( (gensym) "mincline_drc_form" nil 'mincline_drc_form_Action t)

    axlFormDisplay(mincline_drc_form)

    ; create form

    ; ------------

    (defun mincline_drc_form ()

    ; Define the pop up

    LayerCountPopup=axlUIPopupDefine(nil

    list(

    list("2" '2)

    list("4" '4)))

    printf(mincline_drc_form "FILE_TYPE=FORM_DEFN VERSION=2\n")

    printf(mincline_drc_form "FORM toolwindow\n")

    printf(mincline_drc_form "FIXED\n")

    printf(mincline_drc_form "PORT 44 15\n")

    printf(mincline_drc_form "HEADER \"Minimum Line Width DRC\"\n\n")

    printf(mincline_drc_form "TILE\n")

    ;========== using LONGFILLIN

    printf(mincline_drc_form "TEXT \"Minimum Cline Width used in Top Layer: \"\n")

    printf(mincline_drc_form "FLOC 1 1\n")

    printf(mincline_drc_form "ENDTEXT\n\n")

    printf(mincline_drc_form "FIELD ClineWidthTop\n")

    printf(mincline_drc_form "FLOC 32 1\n")

    printf(mincline_drc_form "LONGFILLIN 10 15\n")

    printf(mincline_drc_form "ENDFIELD\n\n")

    ;========== END LONGFILLIN

    ;========== using LONGFILLIN

    printf(mincline_drc_form "TEXT \"Minimum Cline Width used in Bottom Layer: \"\n")

    printf(mincline_drc_form "FLOC 1 4\n")

    printf(mincline_drc_form "ENDTEXT\n\n")

    printf(mincline_drc_form "FIELD ClineWidthBottom\n")

    printf(mincline_drc_form "FLOC 32 4\n")

    printf(mincline_drc_form "LONGFILLIN 10 15\n")

    printf(mincline_drc_form "ENDFIELD\n\n")

    ;========== END LONGFILLIN

    ;========== using POPUP

    printf(mincline_drc_form "TEXT \"Layer Count: \"\n")

    printf(mincline_drc_form "FLOC 1 7\n")

    printf(mincline_drc_form "ENDTEXT\n\n")

    printf(mincline_drc_form "FIELD LayerCountPop\n")

    printf(mincline_drc_form "FLOC 10 7\n")

    printf(mincline_drc_form "ENUMSET 5\n")

    printf(mincline_drc_form "ENDFIELD\n\n")

    ;========== END POPUP

    ;========== using MENUBUTTON

    printf(mincline_drc_form "FIELD Run_button\n")

    printf(mincline_drc_form "FLOC 25 10\n")

    printf(mincline_drc_form "MENUBUTTON \"Run\" 7 3\n")

    printf(mincline_drc_form "ENDFIELD\n\n")

    printf(mincline_drc_form "FIELD Close_button\n")

    printf(mincline_drc_form "FLOC 35 10\n")

    printf(mincline_drc_form "MENUBUTTON \"Close\" 7 3\n")

    printf(mincline_drc_form "ENDFIELD\n\n")

    printf(mincline_drc_form "ENDTILE\n\n\n")

    printf(mincline_drc_form "ENDFORM\n")

    )

    ) ;end procedure mincline_drc_form

     

    Please advise if my popup variable definition is correct, or the create form portion has something wrong.

    Thanks,

    Alice

    • Post Points: 20
  • Wed, Sep 22 2010 1:57 PM

    • eDave
    • Top 10 Contributor
    • Joined on Sun, Jul 13 2008
    • Christchurch, 00-NZ
    • Posts 738
    • Points 16,055
    Re: Skill to check minimum cline segment Reply

    Hi Alice,

    Well, there's a lot wrong with your code. I've corrected enough to get you going again.

    I'm not sure what you are trying to do with the popup.

    Keep at it and good luck!

    Regards,

    Dave

    Dave Elder, Tait Communications
    • Post Points: 35
  • Wed, Sep 22 2010 5:12 PM

    Re: Skill to check minimum cline segment Reply
    Hi Dave, I managed to modified the script and get correct DRC. Thanks a lot for the help.

    Regards,
    Alice
    • Post Points: 20
  • Tue, Sep 3 2013 11:03 PM

    • PAVANRKS
    • Top 500 Contributor
    • Joined on Tue, Sep 3 2013
    • Bengaluru, Karnataka
    • Posts 24
    • Points 485
    Re: Skill to check minimum cline segment Reply

    Hi Dave,

    if run my minmu cline drc skill means this below error coming. 

    E- Command not found: mincline_drc

     

    Good Day,

    Pavan Kumar Kulkarni 

    • Post Points: 5
  • Mon, Sep 23 2013 8:25 PM

    • PAVANRKS
    • Top 500 Contributor
    • Joined on Tue, Sep 3 2013
    • Bengaluru, Karnataka
    • Posts 24
    • Points 485
    Re: Skill to check minimum cline segment Reply

    Hi Alice,

     

    Can you share your .il for minimum cline segment.

     

    Good Day,

    Pavan Kumar Kulkarni

    • Post Points: 20
Page 1 of 2 (25 items) 1 2 Next >
Sort Posts:
Started by Alice 2009 at 15 Sep 2010 01:58 AM. Topic has 24 replies.