天天看点

wujian100_open采坑指南。

Hello 大家好!

wujian100_open开源已经有好一段时间了。

这里笔者分享一下第一次跑通wujian100_open仿真过程中遇到的一些坑。

1. 关于小伙伴们遇到的一个坑,大概就是获取源代码。

因为wujian100_open的源代码是放在github上面的,如果从gitbub上下载其实比较慢的。

不过好在压缩包不算大,只有1.54M。还算可以接受。

这里放一个链接:

https://codeload.github.com/T-head-Semi/wujian100_open/zip/master

复制链接,使用浏览器下载即可。(当然,迅雷下载也可以。)

2. 第二个坑,是脚本的配置。

比如说,你可能已经遇到了这个错误:

/bin/riscv64-unknown-elf-gcc: Command not found
can't make: *** [crt0.o] Error 127
can't make at ../tools/run_case line 209.
[IC@IC workdir]$ echo $TOOL_PATH
../../riscv_toolchain
[IC@IC workdir]$ ls ../../riscv_toolchain/bin/           

明明设置好了环境变量,用ls也看得到,但是就是make报错。

具体原因说起来比较复杂,这里有个简单粗暴的结局办法。

这里我提供解决办法是,把环境变量改成绝对路径,比如:

[IC@IC workdir]$ echo $TOOL_PATH
/data/project/riscv_toolchain           

3. 第三个坑,是libstdc++.so.5

如果你安装的是最近更新的Ubuntu18.04,那么你可能会遇到这个问题。

这个文件是Srec2vmem需要用的一个库。

(目测是srec_cat/srec_cmp/srec_info,应该可以用srec_cat替代。有兴趣的小伙伴可以试试,这个是可以找到源码,自己编译的。)

好吧,一些其他的系统也可能有这个问题。

这里我直接放一个可以用的文件,把这个文件放到/usr/lib下面就可以了。

链接:https://pan.baidu.com/s/17eqHzcn0ruDjmBAIMCSvaA 
提取码:am9w           

4. 第四个坑是工具与内核。

笔者这里使用的是vcs2014,很多小伙伴都会试着去找一些工具的资源,但是我要说的是,如果你用了很新的系统,就不要用很旧的工具。

但是很新的工具,估计你是找不到的。比如Ubuntu18.04安装vcs2016,工具会直接告诉你不支持5.x内核。

5. 第五个坑是iverilog的坑。

如果你使用的是iverilog的话,Ubuntu默认的iverilog是比较旧的iverilog。

会报一些语句工具不支持,这个解决方法是使用新版iverilog(10.x版本)。

关于如何更换新版iverilog,请自行百度。

6. 接下来应该就比较顺畅了。

如果还有问题的话,那应该是就是如何看波形了。以及如何下载wujian100到FPGA开发板了。

7. 查看波形使用dve工具。

命令行输入dve & 命令,回车–>File–>Open Database–> 选择test.vcd --> open

wujian100_open采坑指南。
wujian100_open采坑指南。

8. 还有一个不算坑的坑

那就是回归测试的时候,只能看到TEST PASS,看不到log,波形也会被覆盖。

可以修改run_case脚本。

if($s_vcs) {
    !system("vcs +v2k -Mupdate -sverilog   $mnt_sim $dump_sim +nospecify +notimingchecks -timescale=1ns/100ps  $top_mod   $wujian100_open_PATH/workdir/$had_v $vcs_incdir $g_vlib_path  $PLItab -l sim.log ") or die "can't run VCS";}           

加上 -l sim.log 参数,就能保存下log了。

如果要保存下log和vcd波形的话。

需要修改run_case, 如:

!system("cp run_case.report ../regress/regress_result/$case_make\.report") or die "can't copy";(原脚本内容,可在脚本中找到)
!system("cp sim.log  ../regress/regress_result/$case_make\.log") or die "can't copy";
!system("cp test.vcd ../regress/regress_result/$case_make\.vcd") or die "can't copy";           

好了,那么本文就写到这里了,下一篇会写一写下载到fpga过程中遇到的坑。

原文作者:lizechen

点击查看原文