BitUtils.scala 704 字节
Newer Older
L
LinJiawei 已提交
1
package xiangshan.utils
2 3 4 5 6 7 8

import chisel3._
import chisel3.util._

object WordShift {
  def apply(data: UInt, wordIndex: UInt, step: Int) = (data << (wordIndex * step.U))
}
Z
Zihao Yu 已提交
9 10 11 12

object MaskExpand {
 def apply(m: UInt) = Cat(m.asBools.map(Fill(8, _)).reverse)
}
Z
Zihao Yu 已提交
13

Z
Zihao Yu 已提交
14 15 16 17 18 19
object MaskData {
 def apply(oldData: UInt, newData: UInt, fullmask: UInt) = {
   (newData & fullmask) | (oldData & ~fullmask)
 }
}

Z
Zihao Yu 已提交
20 21 22 23 24 25 26 27 28 29 30 31 32 33
object SignExt {
  def apply(a: UInt, len: Int) = {
    val aLen = a.getWidth
    val signBit = a(aLen-1)
    if (aLen == len) a else Cat(Fill(len - aLen, signBit), a)
  }
}

object ZeroExt {
  def apply(a: UInt, len: Int) = {
    val aLen = a.getWidth
    if (aLen == len) a else Cat(0.U((len - aLen).W), a)
  }
}