嵌入式学习小组
直播中

张健

7年用户 1358经验值
私信 关注

基于google skywater 130nm opensource PDK的快捷方法

openLANE的RTL2GDS fow,基于google skywater 130nm opensource PDK

回帖(1)

云达贞

2020-12-21 15:23:00
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, 非常巨大,国内网络很难正常下载。
我是用国外的***服务器走的这部分流程, 产生的database可以直接跑apr flow, 放到网盘上,可直接下载使用。
链接:https://pan.baidu.com/s/1fzlAUb5hSzNuOCjgM78PbA
提取码:3kfp


下面的sky130A 解压后, 需要在sky130A目录上级设置PDK_ROOT环境变量, 比如如果文件下载到~/temp/skywater-pdk
$cd ~/temp/skywater-pdk
$tar -xv*** 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:
$sudo docker ps


我们需要用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文件。
$ magic picorv32a.gds


下面来一张截图, 以示真相!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分