anchor.diff:  // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
   // SOFTWARE.
   
  +import Clocks::*;
  +import FIFO::*;
   import FIFOF::*;
   import BRAMFIFO::*;
  +import Gray              ::*;
  +import GrayCounter       ::*;
   
   interface BlueScope#(type dataWidth, type triggerWidth);
       method Action setTriggerMask(Bit#(triggerWidth) mask);
  
positive.code:         return sampleCountReg;
      endmethod
  endmodule
  
negative.code:     method Action dataIn(Bit#(dataWidth) d, Bit#(triggerWidth) t);
      method ActionValue#(Bit#(dataWidth)) dataOut;
      method Bit#(32) sampleCount();
      method Bool triggered();
  endinterface
  
  typedef enum { Idle, Enabled, Running } State deriving (Bits,Eq);
  
  module mkBlueScope#(Integer samples)(BlueScope#(dataWidth, triggerWidth)) provisos (Add#(1,a,dataWidth));
      FIFO#(Bit#(dataWidth)) dfifo <- mkSizedBRAMFIFO(samples);
      Reg#(Bit#(triggerWidth)) maskReg <- mkReg(0);
      Reg#(Bit#(triggerWidth)) valueReg <- mkReg(0);
  
  