[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

gEDA-user: DRC rule structure



There has been a lot of discussion on this list about new gEDA structures
and different ways of defining and applying DRC rules. (Mainly, "net classes"
and the ability to assign different rules to different nets.)

I'm working on implementing my "functional block" proposal. Right now the
DRC rules are set as a collection of variables as part of the PCB structure.
Obviously this needs to be changed if we want to apply rules on a per-block,
per-net or per-component basis. It also isn't very extensibile.


So here is my proposal for structuring DRC rules. My goals are to be more
flexible and entensible. I'd also like the rule checker to be fast - fast
enough that we can give users the option to run the DRC checker in real time
without slowing down the program (for small designs, anyway).

Here is my idea:

Each rule is composed of a Filter, to choose which parts the rule applies to,
and a Rule, to specify the parameters these parts must conform to. Both the
Filter and the Rule will be the same data structure: let's call it a Range,
to choose a word at random.

A Range:
  1. Can be composed of other ranges, by AND, OR and NOT operators, or
  2. Is composed of:
    o A textual attribute name that makes sense for the given components
    o An operator: <, <=, ==, >=, >, %, "matches", "is present" (unary)
    o An integer value for the integral operators
    o A string value for the "matches" operator

The string value would support the wildcards ? and * for single- and multi-
character matching. I don't think more wildcards (or a full regex engine, for
that matter) would be necessary, and would certainly slow the thing down.


What do you guys think?


Andrew



_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user