Rocket - system - TestHarness

https://mp.weixin.qq.com/s/MUK2K1WrhcyoEsOVwpgrlw

 

简单介绍TestHarness的实现。

 

 

1. 测试模块

 

TestHarness是一个测试模块,直接继承自Module类:

 

2. io

 

测试模块向外输出一个测试是否成功的信号:

 

3. 实例化ExampleRocketSystem

 

待测设备(dut)即是一个ExampleRocketSystem:

a. 使用LazyModule(...)包裹创建一个ExampleRocketSystem实例;

b. 引用其lazy val module,根据diplomacy节点连接,生成其具体逻辑;

c. 使用Module(...)包裹,收集构建信息;

 

4. 连接各个输入输出接口

 

a. 连接复位信号;

b. dontTouch输入输出IO端口:

c. 关闭中断输入:

d. 连接AXI存储模拟模块:

e. 关闭前端总线:

 

tieoff定义如下:

f. 连接调试模块:

 

根据配置选择DMI抑或JTAG调试接口:

 

5. 附录

 

// See LICENSE.SiFive for license details.

 

package freechips.rocketchip.system

 

import Chisel._

import freechips.rocketchip.config.Parameters

import freechips.rocketchip.devices.debug.Debug

import freechips.rocketchip.diplomacy.LazyModule

 

class TestHarness()(implicit p: Parameters) extends Module {

val io = new Bundle {

val success = Bool(OUTPUT)

}

 

val dut = Module(LazyModule(new ExampleRocketSystem).module)

dut.reset := reset | dut.debug.ndreset

 

dut.dontTouchPorts()

dut.tieOffInterrupts()

dut.connectSimAXIMem()

dut.connectSimAXIMMIO()

dut.l2_frontend_bus_axi4.foreach(_.tieoff)

Debug.connectDebug(dut.debug, clock, reset, io.success)

}

 

 

posted @ 2020-07-14 12:50  wjcdx  阅读(711)  评论(0编辑  收藏  举报