NSCSCC2021后记

NSCSCC2021 终于结束了,经过了一个月的奋战,虽然结果比较可惜只有一个三等奖,但是过程中还是有不少值得记录的东西。

先上个仓库地址:HectorMIPS

Chisel3 or SystemVerilog

在一开始技术选型的时候,我有纠结过是使用SystemVerilog还是Chisel,前者是被龙芯杯往年参赛选手广泛使用的编程语言,后者是被香山团队所Pick的语言。Which is better? 问题的结果并不重要,最后选择了chisel是基于我上个暑假已经使用verilog实现过一个MIPS的五级流水CPU(没带中断以及例外,指令集也高度阉割),However体验并不是很好,于是这次便大胆地尝试了chisel作为开发语言(虽然事实证明我们因此踩了不少坑)。

紧凑的日程

比赛大概在4或者5月开始报名,具体时间我不大记得清了,但是我们最终开始着手制作CPU已经是7月初的事了——离比赛初赛提交还有一个月,时间非常捉急,因此只能赶鸭子上架式地制作我们的参赛作品。

我主要负责流水线的部分,花费了大概两周时间完成了一个可以通过功能测试和性能测试的单发射版本,并且在23号的时候通过了系统测试。这个时候性能分因为没有cache,测试出来大概只有不到1的水准,同时由于参照龙芯的那本书上的设计问题,我们的频率也只能达到70MHz左右。不过此时的我把大部分的问题归于是没有cache,于是紧锣密鼓地开始了双发射版本的迁移。

惊险的提交

我是在提交的前一晚通了宵,打算第二天提交的时候测试一下直接交一个稳定版本上去(这个时候我们的双发射以及完成了移植,并且将频率提升在60MHz左右),在晚上将近8-9点的时候,离提交还有三个小时左右,我们最终得到了一个分数在40分,72MHz的版本。虽然一天前我们已经通过了系统测试,但是我决定还是generate再跑一次,结果一跑就直接出了问题,console整个挂掉没反应。我一脸懵逼,心里已经预想到估计是cache那块的问题了,在一番struggle之后,还是交了一个没有通过系统测试的版本,这个时候相当于我们的总分直接掉了15分,心里是相当的绝望。不过最后积分表一出来的时候,发现我们队竟然还是能以倒数第一的成绩排在决赛的名单上。

总结

后面的系统移植因为种种原因,几乎没有成果。

To be continued...

作者

Hyiker Hu

发布于

2021-08-28

更新于

2021-09-26

许可协议

评论