Rocket-chip-RoCC(7)

本文详细介绍了RoCC架构中的Blackbox模块实现细节,包括BlackBoxExample类的参数输入及对象创建过程,以及BlackBoxExampleModuleImp类如何混入特定特质并配置参数。通过具体的RTL代码示例解释了BlackBox模块的工作原理及其与外部信号的交互方式。

下面是对Blackbox模块的具体实现进行说明。

4、Blackbox

代码如下:

class BlackBoxExample(opcodes: OpcodeSet, blackBoxFile: String)(implicit p: Parameters)
    extends LazyRoCC(opcodes) {
   
   
  override lazy val module = new BlackBoxExampleModuleImp(this, blackBoxFile)
}

类BlackBoxExample,需要输入opcodes和blackBoxFile参数,里面使用new创建BlackBoxExampleModuleImp的对象。

BlackBoxExampleModuleImp类中混入LazyRoCCModuleImp和HasCoreParameters。

声明blackbox值,其中roccIo等于LazyRoCCModuleImp的io,例化blackbox模块,使用"/vsrc/$blackBoxFile.v"作为RTL例化文件,Map()中的是parameter的值,blackbox中的io是连线的名称,用于连接BlackBoxExample端口信号和例化模块blackbox的端口信号,同时加入blackbox.clock和blackbox.reset信号。
"/vsrc/$blackBoxFile.v"文件在以下路径:
/rocket-chip/src/main/resources/vsrc/RoccBlackBox.v

class BlackBoxExampleModuleImp(outer: BlackBoxExample, blackBoxFile: String)(implicit p: Parameters)
    extends LazyRoCCModuleImp(outer)
    with HasCoreParameters {
   
   

  val blackbox = {
   
   
    val roccIo = io
    Module(
      new BlackBox( Map( "xLen" -> IntParam(xLen),
                         "PRV_SZ" -> IntParam(PRV.SZ),
                         "coreMaxAddrBits" -> IntParam(coreMaxAddrBits),
                         "dcacheReqTagBits" -> IntParam(roccIo.mem.req.bits.tag.getWidth),
                         "M_SZ" -> IntParam(M_SZ),
                         "mem_req_bits_size_width" -> IntParam(roccIo.mem.req.bits.size.getWidth),
                         "coreDataBits" -> IntParam(coreDataBits),
                         "coreDataBytes" -> IntParam(coreDataBytes),
                         "paddrBits" -> IntParam(paddrBits),
                         "FPConstants_RM_SZ" -> IntParam(FPConstants.RM_SZ),
                         "fLen" -> IntParam(fLen),
                         "FPConstants_FLAGS_SZ" -> IntParam(FPConstants.FLAGS_SZ)
                   ) ) with HasBlackBoxResource {
   
   
        val io = IO( new Bundle {
   
   
                      val clock = Input(
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值