K
Kholdoun TORKI
Guest
I found this way to sample non Manhattan shapes to a certain grid.
The Diva deck below has this grid set to 0.1u
Is there a more efficient method, or a function that does this ?
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; This code runs under Diva/DRC (IC 5.1.41)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(drcExtractRules
ivIf((switch "drc?") then
MET1 = geomGetPurpose("MET1" "drawing")
; Non-Manhattan borders extended to 0.1u inside the structure
badedge_int = geomSize(geomGetNon45( "MET1" ) -0.1)
; Non-Manhattan borders extended to 0.1u outside the structure
badedge_ext = geomSize(geomGetNon45( "MET1" ) 0.1)
; Band structure surrounding the Non-Manhattan borders
badedge = geomOr(badedge_int badedge_ext)
; Just to show the Non-Manhattan borders
saveDerived(badedge ("y0" "drawing"))
; This function is slow for large structures
MET1_snap_ext = drc(badedge_int badedge coverage < 0.99 windowSize(0.1)
stepSize(0.1))
; Structures with Non-Manhattan shapes sampled to 0.1u
MET1_snap = geomNot(MET1_snap_ext)
; Final structure
MET1_snap1 = geomAnd(MET1_snap MET1)
; Delete the original structures
geomErase("MET1" "drawing")
; Save the final structure
saveDerived( MET1_snap1 ("MET1" "drawing"))
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Regards,
======================
Kholdoun TORKI
CMP
http://cmp.imag.fr
======================
The Diva deck below has this grid set to 0.1u
Is there a more efficient method, or a function that does this ?
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; This code runs under Diva/DRC (IC 5.1.41)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(drcExtractRules
ivIf((switch "drc?") then
MET1 = geomGetPurpose("MET1" "drawing")
; Non-Manhattan borders extended to 0.1u inside the structure
badedge_int = geomSize(geomGetNon45( "MET1" ) -0.1)
; Non-Manhattan borders extended to 0.1u outside the structure
badedge_ext = geomSize(geomGetNon45( "MET1" ) 0.1)
; Band structure surrounding the Non-Manhattan borders
badedge = geomOr(badedge_int badedge_ext)
; Just to show the Non-Manhattan borders
saveDerived(badedge ("y0" "drawing"))
; This function is slow for large structures
MET1_snap_ext = drc(badedge_int badedge coverage < 0.99 windowSize(0.1)
stepSize(0.1))
; Structures with Non-Manhattan shapes sampled to 0.1u
MET1_snap = geomNot(MET1_snap_ext)
; Final structure
MET1_snap1 = geomAnd(MET1_snap MET1)
; Delete the original structures
geomErase("MET1" "drawing")
; Save the final structure
saveDerived( MET1_snap1 ("MET1" "drawing"))
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Regards,
======================
Kholdoun TORKI
CMP
http://cmp.imag.fr
======================