Amiya · 2021年11月02日

如何用云服务器搭建一个芯片SOC环境(下)

上篇文章介绍了如何配置一个云服务器,并且安装VNC,在这里补充一点,在安装gnome的时候还需要执行sudo apt-get install gnome-core然后重新服务器,不然gnome里面会没有terminal。今天这篇文章将介绍如何在云端服务器安装EDA软件并且搭建SOC环境。

EDA是一个很大的概念,我们这里讲的是芯片设计中的EDA软件。芯片设计的EDA软件包括设计输入工具如composer,设计仿真工具如VCS/Verdi,综合工具如Design Compile,布局布线工具如Design Planner,物理验证工具Dracula,模拟电路仿真器SPICE等。

举例的这些EDA工都是收费软件。目前也有一些开源的EDA工具可以用,如仿真用的Iverilog/ Verilator,看波形用的gtkwave,综合用的YoSys等。Efabless曾经用这些纯开源的EDA软件开发并流片过一款芯片。这款芯片结构如下
image.png
该芯片的资料在这里:https://github.com/efabless/r...。这个链接里面包含了该芯片的开源软件,代码,测试等资料,作为一款SOC开源项目大家有兴趣可以去看看。

刚才提到的开源EDA Iverilog和Gtkwave的安装方法比较简单,直接敲下面的命令即可:

sudo apt-get install iverilog 
sudo apt-get install gtkwave

对于Verilator的安装我们等会在搭建SOC环境的时候介绍,其他开源EDA的安装方法这里不再介绍,有兴趣的可以在网上搜索。

Verdi/VCS/simvision/irun等需要授权的EDA软件也可以在云服务器上安装,但是需要license支持才能用。虽然网上也有破解版本,但是个人不推荐使用。如果是企业用户且员工比较少的情况下可以向各个地方的集成电路设计服务机构(如苏州ICC)申请各家EDA的license,能够得到比较大的支持。

下面我们介绍搭建一个SOC项目并用相关EDA工具进行仿真。

Opentitan是一个开源项目,他是由RISCV搭建的一款简单芯片,其系统架构如下
image.png

这颗芯片主要构成有1个riscv核,512kB的eflash,64kB的SRAM,16kB的ROM,安全加密模块,32个IO端口,一个UART,一个GPIO,一个SPI。目前I2C还没加进去,据说后面会加进去。
image.png
从opentitan提供的资料来看,该项目包括了开源的软件,硬件代码,还提供了三套仿真测试环境,分别是verilator仿真环境,FPGA测试环境以及需要VCS的仿真环境。学习人员可以根据自己需要选择不同的运行环境。

我们提供的SOC环境搭建步骤在opentitan 的开源网站都能找到,如果有不清楚的地方可以在下面这个链接处查找。

https://docs.opentitan.org/doc/ug/getting_started/

搭建环境的第一步是创建工具的路径。

sudo mkdir/tools
sudo chown $(id -un) /tools

第二步是克隆opentitan的库,这样就将SOC的源代码和相关资料拷贝到你的云服务器上。working-area 是你创建的工作路径。

cd <working-area>
git clone https://github.com/lowRISC/opentitan.git

代码资料会被存在 <working-area>/opentitan 下面,我们后面介绍的$REPO_TOP指的就是<working-area>/opentitan 这个路径。

第三步安装相关软件

sudo apt install autoconf bison build-essentialclang-format cmake curl \\
doxygenflex g++ git golang libelf1 libelf-dev libftdi1-2 libftdi1-dev \\
libncurses5 libssl-dev libusb-1.0-0 lsb-release make ninja-build perl \\
pkgconfpython3 python3-pip python3-setuptools python3-wheel python3-yaml \\
srecordtree xsltproc zlib1g-dev xz-utils

第四步 芯片环境中有用到python3相关的脚本,而云服务器没有安装python3的相关组件,因此需要我们自己安装。

apt install python-pip
pip install --upgrade setuptools
python -m pip install --upgrade pip
sudo apt install django
pip3 install --upgrade pip
pip3 install django-haystack
pip3 install setuptools-scm
pip3 install django-haystack

装完这些软件后再按照下面步骤安装python3相关的脚本软件。

cd $REPO_TOP
pip3 install --user -r python-requirements.txt

第五步是安装riscv的编译工具链,官网提供了两种方法,一个直接下载,另外一个需要自己编译工具链,对于初学者来讲,建议选择第一种。

cd $REPO_TOP
./util/get-toolchain.py

通过上面五步,我们已经将芯片的源代码和工具链软件都准备好了。在上述文中也讲到,opentatian可以用开源的EDA工具进行仿真,也可以用VCS等需要授权的软件进行仿真。在这里我们选择开源的verilator仿真工具进行仿真。

为此需要按照以下步骤安装verilator仿真工具。

export VERILATOR_VERSION=4.104
git clonehttps://github.com/verilator/verilator.git
cd verilator
git checkout v$VERILATOR_VERSION
autoconf
./configure--prefix=/tools/verilator/$VERILATOR_VERSION
make
make install

做完这些我们就可以去跑仿真了。

第六步build环境

cd $REPO_TOP
fusesoc --cores-root . run --flag=fileset_top--target=sim --setup --build lowrisc:systems:chip_earlgrey_verilator
./meson_init.sh
ninja -C build-out all

第七步输入以下指令进行跑仿真。

cd $REPO_TOP
build/lowrisc_systems_chip_earlgrey_verilator_0.1/sim-verilator/Vchip_earlgrey_verilator\\ --meminit=rom,build-bin/sw/device/boot_rom/boot_rom_sim_verilator.scr.39.vmem\\
\--meminit=flash,build-bin/sw/device/examples/hello_world/hello_world_sim_verilator.elf\\
\--meminit=otp,build-bin/sw/device/otp_img/otp_img_sim_verilator.vmem

    这个时候我们可以在工作界面上看到类似以下log
image.png

    为了看运行的结果用screen /dev/pts/4进行查看。由于开源软件运行的效率会比较低,跑仿真的时间会比较久,所以需要耐心等待一下。
image.png

   如果想看信号波形,在上面跑仿真的命令里面加—trace,即可生成波形。然后用gtkwave sim.fst 查看波形,其效果如下。
image.png
写在最后,opentitan这个项目的开发流程还是比较全的,对于芯片从业者是一个很好的学习资源,特别是里面验证的介绍很多公司都可以借鉴。经常看到很多芯片初从业人员没有什么项目经验,如果能够吃透这个项目那你在找工作的时候是非常有竞争力的。通过这篇文章我希望能够将做芯片这件看起来门槛很高的事情简单化,让更多的大学生甚至中学生都能参与其中,让更多的人更早的去了解知道计算机的工作原理。

作者:IC bug 猎人
原文链接:https://mp.weixin.qq.com/s/C_dy1r1AQ4VT8-U_kAo_XA

推荐阅读

更多IC设计技术干货请关注IC设计技术专栏。
推荐阅读
关注数
11209
内容数
1222
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息