我是 雪天鱼,一名FPGA爱好者,研究方向是FPGA架构探索。
关注公众号【集成电路设计教程】,拉你进“IC设计交流群”。

目前在研究eFPGA,学术界目前最新发表的用于 eFPGA 设计的开源框架是FABulous,项目开源。
后续我的研究会使用到该框架,故先进行开发环境搭建,过程记录如下。

一、下载编译

系统:Ubuntu20.04
在所要存放的目录下,打开终端,输入:

git clone https://github.com/FPGA-Research-Manchester/FABulous

在这里插入图片描述

由于项目存在分支,再输入

cd FABulous
git clone --branch fabulous https://github.com/FPGA-Research-Manchester/nextpnr

文件数量比较多,耐心等待
在这里插入图片描述

再进行编译,采用 CMAKE 。

cd nextpnr
cmake . -DARCH=fabulous

在这里插入图片描述
再执行:

make -j$(nproc)
sudo make install

在这里插入图片描述
在这里插入图片描述
到这里FABulous框架的开发环境就编译搭建好了。

二、编译时可能出现的错误

(1)Could NOT find Boost (missing: Boost_INCLUDE_DIR filesystem program_options
iostreams system thread)
在这里插入图片描述
问题分析:缺少 Boost库所导致。
解决方法:
先下载安装好库,具体可看我的另一篇博客: ubuntu20.04下下载安装boost,再打开 FABulous/nextpnr/CMakeLists.txt配置路径
添加:

# for boost
set(BOOST_ROOT "/home/jc-cao/app_download_address/boost/boost_1_70_0/boost ")
set(BOOST_LIBRARYDIR "/usr/local/lib")
set(Boost_INCLUDE_DIR "/usr/local/include")
set(DBoost_DEBUG=OFF) # set ON to  debug
set(BOOST_FIND_MINIMUM_COMPONENTS serialization system filesystem thread program_options date_time timer chrono regex)
find_package(Boost REQUIRED COMPONENTS ${BOOST_FIND_MINIMUM_COMPONENTS})
include_directories(${Boost_INCLUDE_DIR})

注:上述路径是我的,要根据自己的实际路径进行修改

重新执行:

cmake . -DARCH=fabulous

在这里插入图片描述
可以看到boost库缺少的问题解决了,但有出现了新问题。继续解决
(2)Could not find a package configuration file provided by “Eigen3” with any
of the following names:
具体报错信息:

CMake Error at CMakeLists.txt:227 (find_package):
  Could not find a package configuration file provided by "Eigen3" with any
  of the following names:

    Eigen3Config.cmake
    eigen3-config.cmake

  Add the installation prefix of "Eigen3" to CMAKE_PREFIX_PATH or set
  "Eigen3_DIR" to a directory containing one of the above files.  If "Eigen3"
  provides a separate development package or SDK, be sure it has been
  installed.

问题分析:缺少 Eigen3库所导致。
解决方法:下载安装下就行

sudo apt-get install libeigen3-dev

三、FABulous Demo测试

3.1 修改 create_basic_files.sh

在FABulous根目录下,输入

cd fabric_generator
vim create_basic_files.sh

在这里插入图片描述

create_basic_files.sh进行修改,因为不修改有语法错误,就离谱。
修改为:

cp ../fabric_files/generic/*.* ./
mkdir -p npnroutput
mkdir -p vproutput

修改好后,退出并保存,再输入:

./create_basic_files.sh
  • npnroutput 文件夹用来存储 nextpnr 的输出文件
  • vproutput 文件夹 用来存储 vpr 的输出文件

3.2 Python环境搭建

FABulous很多脚本都是用python写的,有相关第三方库依赖,而我的ubuntu20.04安装了Anconda,所以我打算为 FABulous创建一个虚拟环境,方便管理。
输入:

conda create -n FABulous python=3.7

然后输入yes确认即可:
在这里插入图片描述
启动虚拟环境 FABulous:

source activate FABulous

安装包:

pip3 install fasm
pip3 install numpy

3.3 Demo运行

在 FABulous 虚拟环境下输入

./run_fab_flow.sh

输出:
在这里插入图片描述
如果想将运行结果保存为 log,输入下述代码:

./run_fab_flow.sh > FABulous_run1.log

在这里插入图片描述
生成的文件和文件夹如上图红色框标注部分。其中 verilog_ouputvhdl_output包含了所生成的完整的fabric的RTL代码。

至此FABulous的开发环境就搭建好了,并且也进行了一个简单的测试,证明可以通过输入一些用于描述eFPGA架构的csv文件,就可以自动化生成对应的Fabric网表(两种,分别是用Verilog和VHDL写的)

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐