Rocket Core:常量定义规范

2020-02-21  本文已影响0人  gs要加油呀

设计中常常需要定义一些常量,给多个模块复用, rocketchip中通过trait+package object的方式定义常量

1. 首先在trait中定义consts常量

文件命名:const.scala

package freechips.rocketchip.rocket.constants
trait ScalarOpConstants {
  def X = BitPat("b?")
  def N = BitPat("b0")
  def Y = BitPat("b1")
  ...
}
trait MemoryOpConstants {
  val NUM_XA_OPS = 9
  val M_SZ      = 5
  def M_X       = BitPat("b?????");
  def M_XRD     = UInt("b00000"); // int load
  def M_XWR     = UInt("b00001"); // int store
  ...
}

2. 单独定义一个package object,打包trait中的常量

文件命名:package.scala

package freechips.rocketchip

package object rocket extends rocket.constants.ScalarOpConstants with rocket.constants.MemoryOpConstants

3. 使用方式:import 导入上述package object

import freechips.rocketchip.rocket._
上一篇 下一篇

猜你喜欢

热点阅读