risc-v中文社区

 找回密码
 立即注册
查看: 1475|回复: 1

[原创] rocketchip高级参数化机制--Parameters.alterpartial(13)

[复制链接]

347

主题

564

帖子

2237

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2237
发表于 2021-10-25 11:32:26 | 显示全部楼层 |阅读模式
class SubSystemConfig extends Config(
  new MyConfig
//    alterPartial{ //类构造中不能使用偏函数
//    case BUSWIDTH => 16 //此处配置不起作用
//    case CHIPNAME => "RISC-V16" //此处配置不起作用
//  }
  // ++
//  new JtagConfig //++
//  new CacheConfig
)
object MainStart {
  def main(args: Array[String]): Unit = {
    implicit val sysconfig = new SubSystemConfig
    val cm2 = new CacheModule()
  }
}

//MyModule.scala
class MyConfig extends Config((v1,v2,v3)=>{
  case BUSWIDTH => 32
  case CHIPNAME => "RISC-V"
})
class MyModule(implicit p: Parameters) {
  val buswidth:Int = p(BUSWIDTH)
  val chipname:String = p(CHIPNAME)
  println(buswidth)
  println(chipname)
}

//CacheModule.scala
case object BUSWIDTH extends Field[Int]
case object CHIPNAME extends Field[String]
case object IDECODERBUSWIDTH extends Field[Int]
class CacheConfig extends Config((site,here,up) => {
  case BUSWIDTH => 64
  case CHIPNAME => "RISC-V64"
  case IDECODERBUSWIDTH => here(CHIPNAME) match {
    case "RISC-V64" => 164
    case _ => 32
  }
})
class CacheModule(implicit p: Parameters){
  val buswidth:Int = p(BUSWIDTH)
  val name = p(CHIPNAME)
  println("CacheModule " + buswidth)
  println("CacheModule " + name)
val mmp = p.alterPartial({
    case BUSWIDTH => 16
    case CHIPNAME => "RISC-V16"
  })
  val mymodule = new MyModule{mmp} //此mmp配置不起作用 ,所以本句其实可以写成 val mymodule = new MyModule
  println("mymodule " + mymodule.buswidth) //32
  println("mymodule " + mymodule.chipname) //RSIC-V
  println(mmp(BUSWIDTH)) //注意此时配置值才会是16
}

回复

使用道具 举报

347

主题

564

帖子

2237

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2237
 楼主| 发表于 2021-10-25 11:36:42 | 显示全部楼层
val mymodule=new MyModule,在MyModule中println(buswidth)打印的值是默认Paramerters配置值即32
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



Archiver|手机版|小黑屋|risc-v中文社区

GMT+8, 2024-4-23 14:36 , Processed in 0.042710 second(s), 17 queries .

risc-v中文社区论坛 官方网站

Copyright © 2018-2021, risc-v open source

快速回复 返回顶部 返回列表