Index: doc/developer/ddrc/examples1.txt =================================================================== --- doc/developer/ddrc/examples1.txt (revision 32038) +++ doc/developer/ddrc/examples1.txt (nonexistent) @@ -1,54 +0,0 @@ -# Example 1: Sensitive RF elements should be close -# -# e1 is the list of elements that have the user tag RF -# e2 is a copy of e1; it's needed to get two loops (e1 vs. e2 objects form pairs) -# Assert that any two components are closer than 25 mm to each other - -rule sensitive RF elements - let e1 (type(@, element)) && (@.a.group == "RF") - let e2 e1 - assert (distance(e1, e2) < 25 mm) - -# Example 2: matched trace lengths on dram data 0 -# -# e1 is the list of dram traces -# e2 is a copy of e1 (see Example 1) -# Assert that any two net lengths are matched within 2 mm - -rule matched length dram traces - let e1 (type(@, net)) && (@.a.group == "dram_data_0") - let e2 e1 - assert abs(netlen(e1) - netlen(e2)) < 2 mm - -# Example 3: check if isolation gap is maintained between any HV and LV nets -# (Lazy: assume any copper is part of a network, compare net-to-net only) -# -# hv is the list of high voltage nets -# lv is a list of non-hv networks -# - -rule isolation gap 1 - let hv (type(@, net)) && (@.a.high_voltage) - let lv (type(@, net)) && !(@.a.high_voltage) - assert !is_closer(lv, hv, 4 mm) - -# Example 4: check if isolation gap is maintained between any HV and LV nets -# (Proper way: do not forget about copper not part of any network!) -# -# hv is the list of high voltage nets -# hvo is a list of all objects found in hv -# cp is a list of all copper object -# There are two iterators in the assert: cp (all copper objects) and hv. -# For each hv and cp pair: -# - lcomplement returns a cp object if the cp object is not in hv (i.e. -# the object is low voltage); else the return value is empty and is_closer -# returns invalid which is not a violation -# - hvo is required because cp is an object while hv is a list of nets -# (so cp is never on the hv list) -# - if there was a valid (low voltage) cp object found, - -rule isolation gap 2 - let hv (type(@, net)) && (@.a.high_voltage) - let hvo lobjs(hv) - let cp (type(@, copper)) - assert !is_closer(lcomplement(cp, hvo), hv, 4 mm)