def firstOneOH()

in hardware/chisel/src/main/scala/shell/VME.scala [221:234]


  def firstOneOH (in: UInt) = {
    val oneHotIdx = for(bitIdx <- 0 until in.getWidth) yield {
      if (bitIdx == 0){
        in(0)
      }
      else{
        in(bitIdx) && ~in(bitIdx-1,0).orR
      }
    }
    val oHot = VecInit(oneHotIdx).asUInt
    val newVec = in&(~oHot) // turn bit to 0
    val bitPostn = PriorityEncoder(oneHotIdx)
    (oHot, newVec,bitPostn)
  }