private BitVector getDatTokAdr() {
// strip the two write enable bits
- return cc.getOutBits(dataPath).get(2, 52).bitReverse();
+ return cc.getOutBits(dataPath).get(2, 52);
}
private void shiftControl(boolean readEnable, boolean writeEnable) {
* You must stop stopper before calling fill.
* exit state: idle */
public void fill(BitVector dta) {
- if (traceFill) prln("Begin fill stopper: "+name);
+ if (traceFill) prln("Begin fill. stopper="+name);
adjustIndent(2);
int n = dta.getNumBits();
BitVector wrEn = new BitVector(2, "write enable");
wrEn.setFromLong(3);
- cc.setInBits(dataPath, wrEn.cat(dta.bitReverse()));
+ cc.setInBits(dataPath, wrEn.cat(dta));
shiftData(false, true);
fill(); // fill = 1
// if data chain is shifted in the future, don't write!
wrEn.setFromLong(0);
- cc.setInBits(dataPath, wrEn.cat(dta.bitReverse()));
+ cc.setInBits(dataPath, wrEn.cat(dta));
adjustIndent(-2);
- if (traceFill) prln("End fill stopper: "+name);
+ if (traceFill) prln("End fill");
}
/** Insert items from a list, one by one.
* You must stop stopper before calling fillMany()
* exit state: idle */
public void fillMany(List<BitVector> data) {
- prln("begin fillMany "+data.size()+" words");
+ prln("Begin fillMany. stopper="+name+" numWords="+data.size());
adjustIndent(2);
int cnt = 0;
for (BitVector bv : data) {
idle(); // clear = 0
stop(); // block = 0
- if (traceDrain) prln("drain stopper: "+name+" data: "+formatDataTokAddr(ans));
+ if (traceDrain) prln("drain stopper="+name+" data="+formatDataTokAddr(ans));
return ans;
}
/** Remove as many items as possible from the fill stage.
* drainStopperMany() will stop cleanly.
* exit state: stop */
public List<BitVector> drainMany(int maxNbItems) {
- prln("begin drainStopperMany");
+ prln("begin drainMany. stopper="+name);
adjustIndent(2);
List<BitVector> ans = new ArrayList<BitVector>();
if (myState==StateWireState.EMPTY || cnt>maxNbItems) break;
- if (traceDrain) prln("drainStopperMany: reading word number: "+cnt++);
+ if (traceDrain) prln("drainMany: reading word number: "+cnt++);
BitVector d = drain();
}
adjustIndent(-2);
- prln("end drainStopperMany, got "+ans.size()+" entries");
+ prln("end drainMany, got "+ans.size()+" items");
return ans;
}