Chipyard Docker——坑外有坑
最近在服务器上git clone 了很多项目,每个项目都需要不同的环境,比如verilator版本,java版本,vivado版本,甚至ubuntu版本,一顿折腾之后,发现原来的项目已经没法build。比如之前的Chipyard,这样下去也不是办法,碰到这类环境的问题,如何是好?对,是他,就是他,我们的好朋友——docker!
1、Chipyard Docker
在官方文档上找的预编译的docker镜像,该镜像对应的是chipyard Tag 1.5.0的版本,整个镜像有点大,得忍忍,下载有15G,本地解压之后有42G。
docker pull ucbbar/chipyard-image
docker run -it ucbbar/chipyard-image bash
于是就可以在docker环境为所欲为了。
进入sims/verilator目录,从容执行make CONFIG=RocketConfig -j
,一通下载之后,意外报错了
treadle/src/main/scala/treadle/Driver.scala:6:8: object ExecutionOptionsManager is not a member of package firrtl
这可是官方的镜像啊,啥也没改,怎么就出师未捷身先死呢?!
只能在issue上搜索关键词 ExecutionOptionsManager
,还真发现了一个兄弟遇到类似的问题Error while generating Arty bitstream · Issue #1065但解答并没有什么卵用。
尝试切换版本,比如tag 1.5.0,1.2.0,1.1.0等,高版本还是类似的错误,低版本sbt又报错。也重新删除过所有target文件,重新build,还是不行。
2、Google牛逼
之前都是在Bing搜索,用Google搜索,无意中找的chipyard的网上论坛,类似于微信群聊。用关键词搜索,果然又有个老哥碰到了这样的问题Getting Errors while using buildafi - treadle。查看解答Force FIRRTL 1.4.1 by abejgonzalez · Pull Request #1052,说是FIRRTL的版本问题,build.sbt对firrlt的依赖有漏洞,需要强制切换FIRRTL的版本为1.4.1。
最后切换到Files changes
这栏,修改主目录下variables.mk
文件,就添加一行 override SBT_OPTS += -DfirrtlVersion=1.4.1
。
3、小结
折腾了一天,最终只需要添加一行,真是海底捞针。
- 环境问题找Docker
- Github 问题除了issue,网上论坛也很靠谱
- 技术bug先找Google吧
Bro you save my day.
Thanks for your help.