我是雪天鱼,一名FPGA爱好者,研究方向是FPGA架构探索。
笔记同步在我的个人网站进行更新,欢迎来访查看。
IC/FPGA 设计学习交流群号: 866169462
一、安装依赖与编译
1.1 KLayout 安装1.2 下载包与编译1.3 多版本 boost 控制 二、测试
OpenROAD 目前是分成了 APP 和 OpenROAD-flow-scripts(ORFS) 两个部分。此系列博客(一)搭建的是 APP 的开发环境。这篇博客则介绍如何搭建 ORFS的开发环境。
这里我采用的在本地搭建的方法,也可以采用使用docker镜像搭建。
ORFS 需要 KLayout,一个可以查看、编辑、生成和分析GDS文件的开源软件,官网地址:https://www.klayout.de/:
点击菜单栏上的 【Get KLayout,下拉。
我的虚拟机是ubuntu20.04,所以选择 【ubuntu20】,点击下选择版本,这里我就选最新版本了:
不是很大,就50多MB而已。下载好后放到存储位置,直接双击即可。
点击【安装】:
这样就完成了,也可以自己下载源码进行编译,但没必要的情况下,节省精力,我就没去折腾了。打开了下就是这样界面:
打开终端,输入:
sudo apt-get install libffi-dev sudo apt-get install tcl-dev sudo apt-get install time pip3 install pandas
再切换到准备用来存放 ORFS的目录,输入:
git clone --recursive https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts cd OpenROAD-flow-scripts ./build_openroad.sh --local
编译需要一段较长时间,耐心等待。
./build_openroad.sh --local
执行此条指令时,如果在最后90%多出现了错误,退出了又没有具体的报错信息,那就多执行几次这条指令直至编译成功即可解决问题。
搞定,完成了!
注:
(1)此系列(一) 搭建OpenROAD APP所安装的依赖在编译前也需要进行安装。
从CMake的输出信息可以看到,这里检测到了 Boost1.7.0版本,而此处编译所需的 boost 库版本为1.7.6,我安装了1.7.0和1.7.6两个版本,所以这里需要设置为boost1.7.6版本,具体操作方法如下所示:
- 进入 /usr/local/lib/cmake 路径,输入下述指令将Boost1.7.0的包都放到一个目录下:
sudo mkdir Boost1.7.0-all sudo mv Boost-1.70.0 Boost1.7.0-all sudo mv boost_*-1.70.0 Boost1.7.0-all sudo mv BoostDetectToolset-1.70.0.cmake Boost1.7.0-all
这样就把 Boost1.7.0相关的包都移动到了所创建的 Boost1.7.0-all 目录下,以防止错误检测,移动好后的目录:
需要设置下路径:
进入目录 OpenROAD-flow-scripts/tools/OpenROAD
gedit CMakeLists.txt
在首行设置 boost1.7.6 的路径:
# for boost
set(BOOST_ROOT "/usr/local/lib/cmake/Boost-1.76.0 ")
set(BOOST_LIBRARYDIR "/usr/local/lib/libboost1.7.6")
set(Boost_INCLUDE_DIR "/usr/local/include/boost1.7.6")
set(DBoost_DEBUG=OFF) # set ON to debug
include_directories(${Boost_INCLUDE_DIR})
但试了下,还是有问题,检测到的还是1.7.0版本的,还是改下名吧。
先进入 usr/local/lib,打开终端,输入:
sudo mkdir libboost1.7.0 sudo mv ./libboost* libboost1.7.0 sudo cp -r ./libboost1.7.6/* .
再进入 usr/local/include:
sudo mv boost boost1.7.0 sudo mv boost1.7.6 boost
然后再进入 usr/local/lib/cmake路径,输入:
二、测试在 OpenROAD-flow-scripts 路径下打开终端,输入:
source ./setup_env.sh
yosys -help
openroad -help
没有问题!之后将继续学习 ORFS 的使用,实现自动化物理实现。



