DRC isolated single vias

I am trying to write a design rule check for isolated single vias.
Here I catch all the single vias between m1 and m2:

When I look for those single vias that are isolated, I get the vias that are NOT isolated:

How do I correctly catch the single vias that does not have any nearby vias?

Comments

  • You might have to go at it backwards, like make a
    derived layer that is "not(grow(via, lonelinessCriterion))"
    (excuse the lack of syntax-clue) and then do a dimension
    check on all those "holes" looking for anything that's
    minimum-area (not minimum dimension as one axis
    could be that, and still pass).

    That's my initial thought anyhow.

  • edited May 2021

    I have found a solution to this based upon your feedback.
    Actually it was a much simpler solution.

    To find the isolated vias, I size up all vias so non isolated vias overlap, and then only select those that do not overlap.
    Lastly I select the single vias from the set of isolated vias.

    report("Output reported")
    
    metal1 = input(16)    #The metal layer below vias
    via12 = input(17)     #The vias
    metal2 = input(18)  #The metal layer above the vias
    
    m12 =metal1 & metal2  #I get the area of overlap between m1 and m2
    
    singleV12 = m12.covering(via12, 1..1) & via12 #Find all single vias covered by m1 and also m2
    
    isoDistance = 25.0.um #The isolation distance 
    iso12 = via12.sized(isoDistance/2) #All vias are sized up by half of the isolation distance. Now all vias closer to eachother than 25 um will have an overlapping iso layer
    
    singleIsoV12 = iso12.covering(via12, 1..1) & singleV12 #All the isolated vias will not create overlapping layers, and will therefore be alone. Then only the single vias are selected from this
    
    singleIsoV12.output(100, "Isolated single via warning! Single via distance to other vias should be less than 25 um.")
    
  • @MartinKP You discovered a new feature of 0.27 :)

    Until 0.26, there was no covering and no count selector. I have added this just to make single-via discovery easier :)

    Matthias

  • @Matthias the covering feature is really useful! Thanks for adding it :)

Sign In or Register to comment.