anchor.diff:  	 if(j < jj-1)
   	    controlDependenceA[j].enq(?);
   	 
  +	 Tuple2#(UInt#(addrwidth),UInt#(addrwidth)) index <- toGet(indexpipes[j+kk]).get();
  +	 
  +	 let row = tpl_1(index)+fromInteger(j);
  +	 let col = tpl_2(index);
  +	 
   	 match { .startABase, .unusedA } <- toGet(offsetpipesA[j]).get();
   	 match { .startCBase, .offsetC } <- toGet(offsetpipesC[j]).get();
   	 let startA = startABase + startAOffset[j];
   	 let startC = startCBase + startCOffset[j] + offsetC;
   	 
   	 int jint = fromInteger(j);
  -	 Tuple2#(UInt#(addrwidth),UInt#(addrwidth)) index = unpack(0);
  -	 if (timing || verbose || tagging)
  -	    index <- toGet(indexpipes[j+kk]).get();
  -	 let row = tpl_1(index)+fromInteger(j);
  -	 let col = tpl_2(index);
  -
  -	 if (timing || verbose) begin
  +	 if (timing || verbose) $display($format(fshow(cycles)+fshow("    start A index=")+fshow(tuple2(row,col))
  +						 +fshow(" startA=")+fshow(startA)
  +						 +fshow(" startC=")+fshow(startC)
  +						 +fshow(" j=")+fshow(jint)));
   	 
  -	    $display($format(fshow(cycles)+fshow("    start A index=")+fshow(tuple2(row,col))
  -			     +fshow(" startA=")+fshow(startA)
  -			     +fshow(" startC=")+fshow(startC)
  -			     +fshow(" j=")+fshow(jint)));
  -	 end
  -
   	 sourceA[j].start(descriptorA.pointer, pack(extend(startA>>nshift)), pack(extend(descriptorA.numColumns>>nshift)), extend(row));
   	 if (verbose || verbose1) $display($format(fshow(cycles)+fshow("    sourceA[")+fshow(jint)+fshow("].start")+fshow(startA)));
   	 sinks[j].start(descriptorC.pointer, pack(extend(startC>>nshift)), fromInteger(kk/n));
  
positive.code: 	 if(k < kk-1)
  	    controlDependenceB[k].enq(?);
  
  	 match { .unusedB, .startBBase } <- toGet(offsetpipesB[k]).get();
  
  	 int kint = fromInteger(k);
  
  	 let startB = startBBase + startBOffset[k];
  	 
  	 lastStartBs[k] <= cycles;
  	 let interval = cycles-lastStartBs[k];
  
  	 Tuple2#(UInt#(addrwidth),UInt#(addrwidth)) index = unpack(0);
  	 if (timing || verbose || tagging)
  	    index <- toGet(indexpipes[k]).get();
  	 let row = tpl_1(index);
  	 let col = tpl_2(index)+fromInteger(k);
  
  	 if (timing || verbose) begin
  
  	    $display($format(fshow(interval)+fshow("    startB index=")+fshow(tuple2(row,col))
  	    +fshow(" startB=")+fshow(startB)
  	    +fshow(" k=")+fshow(kint)));
  	    $display($format(fshow(cycles)+fshow("    sourceB[")+fshow(kint)+fshow("].start")+fshow(startB)));
  	 end
  
  	 sourceB[k].start(descriptorB.pointer, pack(extend(startB>>nshift)), pack(extend(descriptorB.numColumns>>nshift)), extend(col));
  
  
negative.code:       if (verbose) $display("mm pointerA=%d pointerB=%d pointerC=%d\n", pointerA, pointerB, pointerC);
        if (verbose) $display("mm.start ra=%d ca=%d rb=%d cb=%d dotprodCount=%d", numRowsA, numColumnsA, numRowsB, numColumnsB, dotprodCount);
        if (verbose) $display($format(fshow("mm.start ")+fshow(indexcfg)));
        indexpipeifc.start(indexcfg);
        offsetpipeA.start(offsetcfgA);
        offsetpipeB.start(offsetcfgB);
        offsetpipeC.start(offsetcfgC);
  