最近在服务器上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.1image.png

image.png

3、小结

折腾了一天,最终只需要添加一行,真是海底捞针。

  • 环境问题找Docker
  • Github 问题除了issue,网上论坛也很靠谱
  • 技术bug先找Google吧

标签: none

仅有一条评论

  1. LEO LEO

    Bro you save my day.

添加新评论