热度 12| ||
忽然想自己设计一个IOT的MCU,参照STM32 F1系列做一个性能差不多的SOC。当然并不是指自己要重写所有的代码,但至少所有的代码都应该是合法可用的。
首先是cpu的设计。现在有很多开源的CPU,可以合法的商用。所以完全没有必要自己从头写一个,并且考虑到整个的工具链的开发和维护,全部从头自己设计也不太现实。没有什么悬念,我打算选用目前很火的risc-v架构的CPU.
经过比较,我打算用OpenHWGroup的CV32E40P这个CPU.
由于还有工作,并且会有加班,所以并不会给自己制定严格的计划。之所以写出来,就是希望借此能让自己坚持下去。
有时自己并不会按照顺序去做,比如在研究MCU的时候,可能已经开始在写一些外设的设计,完全看自己的心情。多线程往下走,但不会超过3个。
设计用: System verilog.
验证用: UVM/C
模拟部分:用电路图,先用system verilog设计一个可综合的行为级模型。
工具:这个可能是唯一没有办法合法使用的。只能搞些破解软件用。
不过尽量用试用版的Vivado以及自带的modelsim吧。
操作系统:Centos7
第一个目标:把CV32E40P这个设计当作IP,做IP验收。研究并reproduce all synthesis/simulation result.
下载OpenHWGroup的riscv_vm的虚拟机 --done (Archive done 2020-04-27)
-> I downloaded riscv_tools/riscv_gnu_toolchain and compiled successfully. But I didn't want to use them. Because it is very tedious and takes a lot of time. I am not software guy, so just use result from others.
-> .ova from OpenHwGroup is stored in Google, which can't be accessed in China. I use Chrome/Development mode to access .ova;Then use multcloud to transfer data image from google drive to One Drive; Install One Drive and sync files to local.
给OpenHWGroup发邮件说中国访问不了Google Drive。问如果我把VM虚拟机放Baidu网盘共享是否可以,一直没有回复。
研究RISC-V指令集,CV32E40P使用手册,验证环境手册。 -- On Going.
-> Study RISC-V 指令集,自己做一个CPU并验证,FPGA运行LED Blinking程序 --On going
1) download IBEX core and study document. --done.
2) IBEX FPGA synthesis --done
Xilinx的很快就可以搞定,Altera的需要更改代码。
3) IBEX Simulation Start up --done 2020-05-03
利用verilator复现了simple_example的仿真结果。
研究一个IP一般需要重现它的仿真环境,但是我手头没有VCS,并且从来没有用过FuseSoc和Verilator。考虑到
以前破解VCS的痛苦经历,觉得还是用免费的的Verilator复现IP的仿真结果,然后逐步转移到自己习惯的仿真器。
安装FuseSoc的过程中,总是出现各种莫名奇妙的错误,今天中午莫名其妙装上了,估计是网络的问题。
编译C程序的时候,也出现了问题,后来通过下载lowrisc prebuild gcc解决掉了。
刚看到这个帖子,不错。
http://blog.eetop.cn/blog-1762300-6944788.html
这个帖子不全。针对Ubuntu 18.04, vcs2016, 安装后运行出如下问题:
运行 vcs 出现 bin/sh: Illegal option -h 如下解决 sudo rm -f /bin/sh 然后 sudo ln -s /bin/bash /bin/sh
现在 vcs 可用。 请参考:
https://www.cnblogs.com/fundou/p/10872992.html
http://bbs.eetop.cn/thread-839371-1-1.html
4)研究FuseSoC文档,搞明白IBEX中FuseSOC命令的含义。--done 2020-05-12
5) Reproduce RISCV Compliance Simulation. --done 2020-05-12
里面有几个命令regression没有过,需要调试一下. --done 2020-05-20
It is proved that this is an RISCV Compliance testissue. Please reference
https://github.com/riscv/riscv-compliance/issues/72
6) 研究google的验证平台,重现仿真结果 --done 2020-05-25
尽管我极力避免,最后还是陷入了各种无休止的EDA工具错误中。浪费了很多时间后,只好静下心来,重新整理EDA工具。
以前自己用AS5,但是查看备份,很多工具版本都已经很老了,自己用可以,但没有办法复现别人的仿真结果。所以选用
红帽子操作系统Centos7,把各个EDA工具和工程重新搞一遍。今晚终于重现了一个google riscv dv的测试用例。
3. 综合目标:
1)优化代码,用Xilinx 的FPGA XCKU115, 频率至少应该到100MHz. --done 2020-05-26
IBEX的设计优化的不错,很轻松就跑到了100多MHz.
4. CPU的验证:
CPU的验证比较特殊,我以前也没有搞过。先查些资料看看。
这些会放到单独的日记中描述。总之就是验证,验证,再验证。 --done 2020-08-31
5. Wishbone 总线接口的实现:--on going.
由于AMBA总线需要注册,看下来只有wishbone总线是完全开放的。所以更改CPU的接口为wishbone总线接口。
-> CV32E40P FPGA(Quartus) /asic(SMIC .18) 综合 --On going.
第二个目标:写一个兼容STM32F1的UART IP
1. 研究STM32F1的器件手册,并参考其它厂家的器件,确认UART IP的Feature. --On Going.
第三个目标:写一个兼容STM32F1的I2C IP。
1. RTL coding. --Done.
2. 搭建验证平台。--on going.