Quantcast
Channel: Jason Andrews Blog
Viewing all articles
Browse latest Browse all 33813

RE: DBID of overlapping components

$
0
0
If you would do it without the Allegro DRC system then you need to check each component to all other components. Quickest way to do this is first check bBox overlap, if so then check if the polygon is overlapping, meaning an result with 'AND' operation. So something like this: ;lsym = setof(id axlDBGetDesign()->symbols id->isMirrored) ;bottom side lsym = setof(id axlDBGetDesign()->symbols not(id->isMirrored)) ;top side pcre = pcreCompile("package geometry/dfa_bound" 1) while(lsym id1 = car(lsym) lsym = cdr(lsym) foreach(id2 lsym ;first do a rough compare, compare bbox overlap of ID1 and ID2. This is faster than doing polygon compare when( _axlIsBoxOverlap(id1->bBox id2->bBox) ;if overlap then do polygon compare lchildrenID1 = setof(id id1->children pcreMatchp(pcre id->layer)) lchildrenID2 = setof(id id2->children pcreMatchp(pcre id->layer)) when(and(lchildrenID1 lchildrenID2) lpolyID1= mapcar('car mapcar('axlPolyFromDB lchildrenID1)) lpolyID2= mapcar('car mapcar('axlPolyFromDB lchildrenID2)) lANDpoly = axlPolyOperation(lpolyID1 lpolyID2 'AND) when(car(lANDpoly) axlMsgPut("%L @%P - %L @%P have overlapping geometry" id1->refdes id1->xy id2->refdes id2->xy ) ) ) ) ) ) Bram

Viewing all articles
Browse latest Browse all 33813

Latest Images

Trending Articles



Latest Images