Rocket Core:常量定义规范

设计中常常需要定义一些常量,给多个模块复用, 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._
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容