I have looked into the issue of parallelizing parts of magic, but it is difficult. That was in the days before OpenMP, so perhaps it is easier now? You cannot break the rules up, because the DRC works by scanning all edges in a plane, then looking up the rule in a 2-D table for [inside type][outside type]. The thing that would be easiest to parallellize would be the planes; the DRC can be run separately on well/active/metal1/metal2/... planes. The only issue would be that they all write to the same DRC result plane, so there would have to be a mutex lock on that.