anchor.diff:  	    sourceA[0].start(descriptorA.pointer, pack(extend(startA>>nshift)), pack(extend(descriptorA.numColumns>>nshift)));
   	    if (verbose || verbose1) $display($format(fshow(cycles)+fshow("    sourceA[0].start")+fshow(startA)));
   	 end
  -	 let startB = col*descriptorB.numColumns; // col major layout (pre-transposed)
  +	 let startB <- toGet(startBFifo).get();
   	 sourceB[i].start(descriptorB.pointer, pack(extend(startB>>nshift)), pack(extend(descriptorB.numColumns>>nshift)));
         endrule
         if (i == 0)
  
positive.code: 	 let col <- toGet(colFifo).get();
  	 if (i == 0) begin
  	    let startC <- toGet(startCFifo).get();
  	    startC = startC + col;
  	    sinkC.vector.start(descriptorC.pointer, pack(extend(startC>>nshift)), fromInteger(k/n));
  	    if (verbose || verbose1) $display($format(fshow(cycles)+fshow("      sinkC[")+fshow(in)+fshow("].start")+fshow(startC)));
  	 end
  
negative.code: 	 let row = tpl_1(index);
  	 let col = tpl_2(index)+fromInteger(i);
  	 
  	 //let startA = row*descriptorA.numColumns; // row major
  	 //let startB = col*descriptorB.numColumns; // col major layout (pre-transposed)
  	 //let startC = row*descriptorC.numColumns + col; // row major
  
  	 let startB = startBBase + startBOffset[i];
  	 let startC = startCBase + col;
  	 
  	 if (timing || verbose) $display($format(fshow(cycles)+fshow("    startDotProd index=")+fshow(tuple2(row,col))
  	    +fshow(" startA=")+fshow(startA)
  