Message G0007

This error occurs when a rule tries to use data from two different clock domains.  For instance:

Error: "Clocks.bsv", line 1538, column 9: (G0007)
  Reference across clock domain in rule
  `master_isActive_clock_domain_crossing'.
  Method calls by clock domain:
    Clock domain 1:
      master_isActive_w.wset
    Clock domain 2:
      master_enXtor_enReg.read

The message is saying that the rule named "master_isActive_clock_domain_crossing" (which happens to be in a synchronizer) is calling the wset metho of master_isActive, which is driven from one clock domain *and* it is trying to read data from master_enXtor_enReg (using method read) which is in another clock domain...

You must use one of the various flavors of synchronizers in the bluespec library to change one of the signals into the other clock domain.  mkNullCrossingWire and the more elaborate SyncFIFOLevel and others (in the reference manual) can be used to for this task...

Comments