首页 > 其他 > 详细

Rocket - system - TestHarness

时间:2020-07-14 14:55:15      阅读:51      评论:0      收藏:0      [点我收藏+]

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)

}

 

 

Rocket - system - TestHarness

原文:https://www.cnblogs.com/wjcdx/p/13298467.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!