anchor.diff:         tojtag.send(fromBram);
      endrule
   
  +   rule tdo;
  +      bscan.tdo(shiftReg[0]);
  +   endrule
  +
      rule updater;
          selected.send(bscan.sel() == 1);
      endrule
  
positive.code: // Example usage: http://ohm.bu.edu/~dean/G-2TrackerWORKING/uart_test.vhd
  
  interface BscanBram#(type atype, type dtype);
     interface Clock jtagClock;
     interface Reset jtagReset;
     interface BRAMClient#(atype, dtype) bramClient;
  
negative.code:    Clock tck <- mkClockBUFG(clocked_by bscan.tck);
     Reset rst <- mkAsyncReset(2, defaultReset, tck);
  
     Reg#(Bit#(asz)) addrReg <- mkReg(0);
     Reg#(Bit#(dsz)) fromBram <- mkReg(0);
     Reg#(Bool) selectdelay <- mkReg(False);
     Reg#(Bool) readData <- mkReg(False);
  
     Reg#(Bit#(dsz)) shiftReg <- mkReg(0, clocked_by tck, reset_by rst);
     Reg#(Bit#(8)) widthReg <- mkReg(0, clocked_by tck, reset_by rst);
     SyncBitIfc#(Bit#(dsz)) tojtag <- mkSyncBits(0, defaultClock, defaultReset, tck, rst);
     SyncBitIfc#(Bit#(dsz)) fromjtag <- mkSyncBits(0, tck, rst, defaultClock, defaultReset);
     SyncBitIfc#(Bool) selected <- mkSyncBits(False, tck, rst, defaultClock, defaultReset);
     SyncPulseIfc startWrite <- mkSyncHandshake(tck, rst, defaultClock);
  
     rule fromj;
  