我根据自己的需求,配置了一个rocket-chip,我需要的硬件功能有以下(源代码为2020.03.17的src文件):
- 指令集支持32位的IMAC,通用寄存器为32个。
- 支持4KB-ICache和4KB-DCache。
https://blog.csdn.net/a_weiming/article/details/115058136?spm=1001.2014.3001.5501 - 硬件断点数量为2。
- PMP区域为8个。
https://blog.csdn.net/a_weiming/article/details/115362780?spm=1001.2014.3001.5501 - 硬件性能计数器为2个。
https://blog.csdn.net/a_weiming/article/details/105547789 - 带有DCache flush功能。
https://blog.csdn.net/a_weiming/article/details/116090948?spm=1001.2014.3001.5501 - 带有clock gtae功能。
https://blog.csdn.net/a_weiming/article/details/115188536?spm=1001.2014.3001.5501 - 乘法器为pipeline形式。
https://blog.csdn.net/a_weiming/article/details/110779020 - local interrupt为16个。
https://blog.csdn.net/a_weiming/article/details/106390615 - PLIC入口2个。
https://blog.csdn.net/a_weiming/article/details/106246629 - 带有CLINT中断。
https://blog.csdn.net/a_weiming/article/details/106911288 - 带有JTAG DEBUG接口。
- 带有frontend接口(AXI4/AHB)。
https://blog.csdn.net/a_weiming/article/details/115738002?spm=1001.2014.3001.5501 - 带有memory接口(AXI4/AHB)。
https://blog.csdn.net/a_weiming/article/details/115738002?spm=1001.2014.3001.5501 - 带有mmio接口(AXI4/AHB)。
https://blog.csdn.net/a_weiming/article/details/115738002?spm=1001.2014.3001.5501 - 带有rom。
https://blog.csdn.net/a_weiming/article/details/105304887 - 带有ROCC接口。
https://blog.csdn.net/a_weiming/article/details/111600428
https://blog.csdn.net/a_weiming/article/details/111658564
https://blog.csdn.net/a_weiming/article/details/112853517
https://blog.csdn.net/a_weiming/article/details/113359605
https://blog.csdn.net/a_weiming/article/details/113866679
https://blog.csdn.net/a_weiming/article/details/114228002
https://blog.csdn.net/a_weiming/article/details/114411409
最后生成的文件有以下内容:
图中,蓝色箭头的是我们的rocket-chip主体RLT,黑色箭头的是外接的SRAM文件,红色箭头的是设备文件(后缀是.dts),可以看到我们的一些硬件配置内容。下面对*.dts文件进行解释。
具体的说明大家看图吧。
接下来看一下RTL的层次结构和部分端口内容:
这份RTL的下载链接:
https://download.csdn.net/download/a_weiming/12273606
后面可能会有其他版本的更新。
后面我们会对这些功能进行一一解说,并配合实例进行具体说明。