一、说明
wujian100在开源项目上,提供的就是linux的开发流程。我在linux下也按照其流程走了一下,但我的目的是为了获取c代码综合结果,并转成仿真的激励数据文件。
更详细的开发流程,可以参考平头哥社区的博客:https://occ.t-head.cn/community/。
本文介绍的是win10下的linux环境,按照其工具。注意点是:1、csh、bash环境;2、目录;3
二、工具安装
2.1win10下安装linux子系统
我是win10,小米笔记本。直接在桌面左下角的搜素栏里搜索:ubuntu,然后选择应用,在应用商店下载并步骤提示安装;安装后一定记住用户名和用户密码。
同时,linux下的目录,/mnt下里看到电脑硬盘。可以在win、linux互相看到文件和文件复制。
2.2目录与文件准备
我在prj1目录下开展linux工作,在该目录下, mkdir riscv_toolchain,复制wujian100的git目录wujian100_open过来,建立下面目录:
在平头哥官网下载平头的工具文件;根据它的readme文件,我们应该使用其中的:64位linux平台BareMetal应用程序编译连接工具套件安装文件: riscv64-elf-x86_64-*.tar.gz
在win下把该文件复制到riscv_toolschain;在linux下cd到该目录下,解压:
tar -zxf riscv64-elf-x86_64-20190731.tar.gz(有个博客建议用linux解压,我就用该命令而非win解压了)
2.3安装其它工具
特别注意,必须对linux进行apt get更新(否则找不到被安装的程序):
sudo apt-get update
然后安装:
sudo apt-get install tcsh iverilog verilator gtkwave
按要求输入用户密码。
2.4建立环境变量
想在tools目录下,执行source setup.csh,但发现有语法错误。原因有2个:
a、linux5.0以上()需要转义符,见https://blog.csdn.net/feng2147685/article/details/85238775,修改setup.csh。把()改为/( /).
b setup.csh是dos格式。
为进行格式转换,我有安装了工具:
安装csh,还安装了dos2unix工具(sudo apt install csh)(sudo apt install dos2unix)
dos2unix setup.csh就可以转换成linux格式。
使用dos2unix setup.csh后,可以执行:
source setup.csh(tools目录下,好像不需要进csh,应该是bash下)。
附:echo $shell是看当前shell类型。
执行完成后,有一句set xxxx,不用管它。
2.5执行run case脚本
需要先进行:sudo apt-get install make
进到workdir目录下,(见到tcsh,记住准了)
然后执行 ../tools/run_case -sim_tool iverilog ../case/timer/timer_test.c。
执行后,可以产生部分结果了,包括hex文件。
2.6使用python
执行 ../tools/run_case -sim_tool iverilog ../case/timer/timer_test.c后,就没有sh错误了(未安装make会出),但我又出了python问题。因为lib/makefile用到了src2mem.py,命令是python(python3.x需要用命令python3)。
我装的是python3.x;如果没有安装python,可以参考:https://blog.csdn.net/weixin_33860528/article/details/92608762,使用apt方式安装。
检查linux的python,bash下敲python,发现我安装了python3。
我单独使用命令 python3 ../tools/Srec2vmem.py -i timer_test.hex -o test.pat,可以执行,并在workdir下产生了test.pat文件。
我获得了test.pat就够我在windows下modelsim进行后续仿真了。我觉得修改makefile的python到python3,linux下的verilog仿真也会直接运行了,但我没有尝试。
下面是我改后的setup.csh:
#set VCS path
#setenv VCS_HOME
#set path=($VCS_HOME/linux/bin $path)
#set VCS license
#setenv SNPSLMD_LICENSE_FILE
#set iverilog path
set iverilog_path=\(/usr/bin\)
set gtkwave_path=\(/usr/bin\)
set path=\($iverilog_path $path\)
set path=\($gtkwave_path $path\)
#set tools path
setenv TOOL_PATH ../../riscv_toolchain
setenv wujian100_open_PATH `pwd | perl -pe "s/wujian100_open.*/wujian100_open\//"`