Can do a DRC check loop ?

Hi sir,
I want to check min. width in DRC that code as below , But I can't do that function ...
as that file , check rule by 5um first , if that is no any output , check rule by 6um / 7um....
could you please help to check that how to make that?
Thanks.

;DRC command
Rule=5
CapRD = input(210,0)
CapRD.width(Rule.micron).output(254,1)

CapRDWidth = input(254,1)

CapRDWidth.is_empty? do
Rule=Rule+1
CapRD.width(Rule.micron).output(254,1)
CapRDWidth = input(254,1)
end

Comments

  • First, CapRDWidth = input(254,1) is supposed to take the current status from "254/1"? So why not just taking the result of the "width" operation?

    "is_empty?" can have a "do". So you mean "while"?

    So I think the script is supposed to be this:

    Rule=5
    CapRD = input(210,0)
    
    CapRDWidth = CapRD.width(Rule.micron)
    
    while CapRDWidth.is_empty? do
      Rule=Rule+1
      CapRDWidth = CapRD.width(Rule.micron)
    end
    
    CapRDWidth.output(254, 1)
    

    Matthias

  • Hi Matthias ,
    Thanks very much !!
    I can run the DRC as below , this can working.
    (but I have to output the rule result as a polygon layer first. or ".is_empty" can't working")

    Check the min. spacing as looping

    Rule=5
    Step=1
    CapRD = input(42,10)
    CapRD.space(Rule.micron).output(254,Rule)
    CapRDSpace=input(254,Rule)
    while CapRDSpace.is_empty? do
    Rule=Rule+Step
    CapRD.space(Rule.micron).output(254,Rule)
    CapRDSpace=input(254,Rule)
    end

    CapRDSpace.output(254, Rule)

  • Hi sir,
    Is it possible to check what the min. spacing in some one layer?
    I mean export the min. value in the DRC wizard.
    such as ...
    the space rule is 10um , but my layout have spacing 9.8 ..9.7....9.8...9.8...9.7...9.6...9.5....9.4....

    #

    report("DRC _width script")
    Rule=10
    LayerName = PI1
    CapRD = input(42, 10)
    CapRD.width(Rule.micron).output(LayerName, "CapRD width violations")

    #

    in the DRC wizard , I can get all the location to shown where the layout out of rule.(so many location...)
    but I can't get what the spacing value in that.
    could you please let me know how /what solution for this request?
    Thanks very much for your help.

  • edited November 2020

    No, the actual values are not accessible directly. That's how simple DRC usually works. Just error flags.

    Regarding the previous question: you're right, "is_empty?" can be used on EdgePairs currently. But you can use "CapRDSpace.size == 0" instead. No need to read the output layer.

    Matthias

  • Hi Matthias,
    Got it , I will try that way , Thanks very much for your help.

  • when I change the code as this , it is workable.
    Thanks.

    Loop programming for check min. width.

    layer Maping

    CapRD = input(154,1)

    Rule Mapping

    ValueD=10
    ValueE=10
    Step=0.1

    Loop programming for check min. spacing.

    Rule=ValueE
    CapRD.space(Rule.micron).output(354,Rule)
    CapRDSpace=input(354,Rule)
    while CapRDSpace.is_empty? do
    Rule=Rule+Step
    RuleLayer=(Rule*10).to_i
    LayerName="CapRD_Space_ #{RuleLayer}"
    CapRD.space(Rule.micron).output(354,RuleLayer,LayerName)
    CapRDSpace=input(354,RuleLayer)
    end

    CapRDSpace.output(254, Rule)

Sign In or Register to comment.