openLANE的RTL2GDS fow,基于google skywater 130nm opensource PDK
这里介绍的是一种最快捷的方法, 我们将使用efabless的openlane docker 镜像
我用的WSL2,跑的是ubuntu 18.04, 首先安装和启动docker服务
记得如果没有设置docker服务自动加载, 每次重启电脑进来都要手动启动docker服务。
$sudo apt install docker
$sudo service docker start
这里需要说一下,可能是我这个docker版本的问题, WSL2里跑基于centos6的docker 镜像会出exit 139,
网上找到的办法是在%USERPROFILE%/.wslconfig加入如下启动配置:
[wsl2]
kernelCommandLine = vsyscall=emulate
保存,重启电脑后, 问题解决。
下面pull openlane的镜像:
$sudo docker pull efabless/openlane
efabless目前维护openlane flow比较积极, 所以这个image也是比较新的。
这个image几百M, 解压后1.5G左右吧, pull也比较快。
有了这个image, 我们可以docker启动它,它里面已经安装了openlane flow所需的所有toolsets, 但是并没有process相关的designkits.
我们需要单独先准备好process 相关的database, 这里我们需要的是google skywater 130nm PDK.
skywater-pdk目前还在更新, c/s的flow都还没有完整的数据, 不过基于open source的rtl2gds flow目前都可以跑了。
google github上的skywater-pdk只是一个configure环境, process数据需要submodule update, 非常巨大,国内网络很难正常下载。
我是用国外的vpn服务器走的这部分流程, 产生的database可以直接跑apr flow, 放到网盘上,可直接下载使用。
下面的sky130A 解压后, 需要在sky130A目录上级设置PDK_ROOT环境变量, 比如如果文件下载到~/temp/skywater-pdk
$cd ~/temp/skywater-pdk
$tar -xvzf sky130A_v20200827.tgz
$export PDK_ROOT=`pwd`
完工后, 启动efabless/openlane镜像:
$sudo docker run -it -v $PDK_ROOT:$PDK_ROOT -e PDK_ROOT=$PDK_ROOT -u $(id -u root):$(id -g root) efabless/openlane
说明一下:
-v $PDK_ROOT:$PDK_ROOT是把我们主机上的PDK目录结构原封不动的映射到docker映像
-e PDK_ROOT=$PDK_ROOT这个是在docker image里面设置PDK_ROOT环境变量, 跑openlane flow用的。
-u $(id -u root):$(id -g root), 为了修改文件方便, 我们直接用了root账户登录到image
正常情况下, 进入到我们的openlane image, 默认的目录是image里面自带的openlane project目录: /openLANE_flow
在跑flow之前, 需要做个小的改动, 新版本的openlane flow不在使用$PDK_VARIANT变量, 但我们的skywater-pdk里面用了,
所有要在openlane 里面加上, 修改文件为:/openLANE_flow/configuration/general.tcl
在文件里面加入 set ::env(PDK_VARIANT) "sky130_fd_sc_hd" 即可:
# default pdk
set ::env(PDK) "sky130A"
set ::env(PDK_VARIANT) "sky130_fd_sc_hd" # <<<
这里sky130_fd_sc_hd是我们的stdcell process, 网盘上的sky130A里面只包括了sky130_fd_sc_hd 和 sky130_fd_sc_hdll两种prcocess variants.
然后, 可以跑下openlane里面的designs检查下环境, 在/openLANE_flow目录下:
$./flow.tcl -design picorv32a
正常情况下,流程跑完, 可以根据输出提示到designs/picorv32a/runs目前路下看各种报告,
产生的gds数据在designs/picrorv32a/runs/XX-XX_XX-XX/results/magic目录下,
openLANE flow用magic完成gds stream/out和DRC
我们这个docker image不这次UI, 所有如果查看GDS, 可以从将数据复制到本地,操作如下:
首先找到运行我们image的docker container:
我们需要用container_ID来进行操作,
把gds所在的magic目录压缩下,整个目录都复制过来, 目录下有magic的initial文件.magcrc
$sudo docker cp container_ID://openLANE_flow/designs/picorv32a/path/to/gds .
本机安装Magic, 整个还是比较顺利:
$git clone git://opencircuitdesign.com/magic
$git checkout magic-8.3
$cd magic
$./configure && make
$sudo make install
进入我们的GDS目录即可打开。 注意我们本地安装的sky130A路径,.magcrc文件要找相关的tech文件。
下面来一张截图, 以示真相!