^ Issue < Previous
As both approaches have benefits and drawbacks, I propose adding a "binding" attribute in the discipline declarations to indicate which mode to use, e.g.:
discipline ttl
binding port ; // stated only for clarity
potential ttl_volt ;
....
enddiscipline
discipline tsmc0u18
binding process ;
potential cms1v2 ;
....
enddiscipline
"Port bound" would be the default (for backward compatibility), and
"process bound" would use the alternative resolution semantics which
ignore the design hierarchy and connect modules would be inserted as
close as possible to their associated process (i.e. children of the
module instance owning the process).
"Process bound" disciplines would be ignored in modules containing no processes (same as "empty" disciplines?), or if there are no processes attached to ports of those disciplines.
Note: Since process bound discipline conversion does not require ports it should also work inside modules and be invariant with hierarchy changes (e.g. flattening).