首页 > 其他分享 >chipyard——自定义配置生成和前仿

chipyard——自定义配置生成和前仿

时间:2023-04-28 23:24:16浏览次数:34  
标签:chipyard rocket 自定义 接口 前仿 config 外设

一,生成配置

前面用rocket-chip仓库做了生成和前仿,为了方便扩展外设,这里转到chipyard仓库。

首先我们生成一个之前用的配置:

 为删SimDTM(我的测试框架不需要),先在rocket的subsystem/config下创建一个class:

 然后在chipyard顶层创建config:

 make CONFIG=MyConfig创建设计

 发现少了Simmmio接口(这也正常,最终的soc该接口都表现为各种外设),bootrom里固化的值不对

在rocket/subsystem下写一个新的bootrom config:

 在/generators/chipyard/src/main/scala/config/AbstractConfig.scala 下替换成原本的rocket bootrom

 在vcs目录下执行:

make verilog CONFIG=MyConfig

修改后可以看到TLROM里的内容正常了:

 不过这样顶层的mmio接口没了,为了方便dump仿真波形也许还需要暴露出一个mmio接口在testharness里接Simmem。

二,扩展外设

之前分享过如何集成新外设,这里我们加入一些常见的外设,看看fragments/PeripheralFragments.scala中目前支持什么外设:

address 0x10012000的GPIO

 address 0x5400000L的UART

 address 0x10040000的spi

 这三种外设的IO相关接口也都写好了,我们除了在顶层添加以外无需修改Chiptop和Testharness:

下面写一个新的配置来集成这些外设:

值得注意的是在abstractConfig中已经有了UART,因此我们不用加了

 可以在顶层看到IO:

 三,前仿

前面说到,我所搭建的VCS测试框架本质是依靠hex仿真结束后向mmio地址空间写一个magic word来确保程序执行完毕,因此我们最好在Chiptop上也暴露一片地址空间的mmio接口,在testharness中同样连接到SimAXImem上,这样理论上chipyard生成的soc也可以用我们的测试框架来做指令集前仿。

注意到config内有两个这样的配置:

一个暴露出memport接口,一个暴露出mmioport接口,写一个如下config来看看接口特性:

 

标签:chipyard,rocket,自定义,接口,前仿,config,外设
From: https://www.cnblogs.com/hwzhao/p/17363380.html

相关文章

  • nginx自定义指定加载配置
    进入 /usr/local/nginx/conf/include目录,创建 nginx.node.conf文件,在里面输入如下代码:upstreamnodejs{server127.0.0.1:3000;#server127.0.0.1:3001;keepalive64;}server{listen80;server_namewww.penguu.compenguu.com;access_lo......
  • 如何自定义starter
    背景使用过SpringBoot的小伙伴都应该知道,一个SpringBoot项目就是由一个一个starter组成的,一个starter代表该项目的SpringBoot启动依赖,除了官方已有的starter,我们可以根据自己的需要自定义新的starter。我们经常会看到或者使用到各种***-starter。比如下面几种:spring-boo......
  • Spring 实现自定义 bean 的扩展
    Springmvc提供了扩展xml的机制,用来编写自定义的xmlbean,例如dubbo框架,就利用这个机制实现了好多的dubbobean,比如 <dubbo:application>、<dubbo:registry> 等等,只要安装这个标准的扩展方式实现配置即可。扩展自定义bean的意义何在假设我们要使用一个开源框架或者一套......
  • vue3自定义指令实现el-select下拉加载更多
    1.新建js文件exportdefault(app)=>{app.directive('loadmore',{beforeMount(el,binding){constelement=el.querySelector('.t-select__dropdown');element.addEventListener('scroll',()=>{co......
  • CMakeLists---自定义变量-add_definitions()函数
    转载:https://blog.csdn.net/qq_35699473/article/details/115837708引言其实这个函数在安装一些库的时候,它的CMakeLists里面就有这样的函数。典型的就是opencv了。opencv安装时候有一些指令也是针对这个函数的,比如安装命令(随便搜索的):cmake ../opencv-3.4.1-DWITH_GTK_2......
  • 如何在Timeline中创建自定义轨道?
    你好,我是跟着大智学Unity的萌新,我叫小新,这是我本周的学习总结报告哦。用过一段时间Timeline后,我问大智:“Timeline中只有这么几个轨道么?我发现有的需求这些轨道根本没办法满足,使用之前学过的PlayableTrack也很麻烦,还有其他办法么?”大智:“你遇到了什么问题呢?”小新:“之前咱们学的那......
  • Hibernate查询返回自定义对象
    /***Convertqueryresulttovolistutilclass.*/classAliasToBeanResultTransformerimplementsResultTransformer{privatestaticfinallongserialVersionUID=-5199190581393587893L;privatefinalClass<T>resultCla......
  • aop实现日志记录通过自定义注解方式
    切面类切入点引入注解@Pointcut("@annotation(com.test.aop.MyLog)")privatevoidpointcut(){}注解类@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)//指定实现的类型及运行时机public@interfaceMyLog{}在使用的方法上加自定义注解@MyLog方法log.i......
  • css cursor: url 自定义鼠标光标遇到的坑
    1、大小不能大于32*32(切记)本人就是在这个上面栽了很久,一直出不来2、最好是ico,cur格式3、使用绝对路径4、在逗号后面加通用游标,如官网所写 示例:map.style.cursor="url('/img/cursor.ico'),pointer";附:在线修改图片大小网址:在线图片大小修改器,图片尺寸修改,格式转换【免费】png等......
  • C/C++ 自定义结构体直接用自定义结构体=赋值
    自定义结构体中没有管理堆空间对象的指针structst_t{inta;shortb;charc;chars[128]={0};};对比使用=和memcpy的汇编代码 结论 两者均调用了memcpy,结构体中不带指针(管理堆空间),可以直接使用浅拷贝,不过个人倾向后者,显式调用memcpy。......