FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

ISSのコア部とインタフェース部を分離するためのCMakeLists.txtを記述する

ISSのインタフェースを統一するために、まずはコア部とインタフェース部を分離する。

現在のISSは、基本的に以下のようなインタフェースを持っている。

f:id:msyksphinz:20160102233513p:plain

図では、コントロール部とCPUコア部を分離して記述しているが、実際には同じ階層としてビルドしていた。これをライブラリ化することにより、インタフェースを各コアで統一して、ヘテロマルチコア環境を構築できるようになりたい。 インタフェースを統一すれば、マルチコアのためのライブラリを複数個簡単にインスタンスできるようになる。

f:id:msyksphinz:20160102233802p:plain

このためには、CMakeLists.txtを変更すれば良い。add_libraryを使えばその部分だけライブラリとしてビルドされる。

github.com

+add_library (core_mips32
+  ../src/mips_env.cpp
+  ../src/env.cpp
+  ../src/trace.cpp
+  ../src/inst_print.cpp
+  ../src/inst_mnemonic.cpp
+  ../src/inst_mips_init.cpp
+  ../src/inst_decoder.cpp
+  ../src/inst_mips.cpp
+  ../src/inst_operand.cpp
+  ../src/dec_utils.cpp
+  ../src/memory_block.cpp
+  ../src/mem_body.cpp
+  ../src/mips_sysreg_func.cpp
+  ../src/mips_sysreg_rw.cpp
+  ../src/mips_sysreg_str.cpp
+  ../src/module_uart.cpp
+  ../src/module_ide.cpp
+  )

+target_link_libraries (swimmer_mips core_mips32)

このように記述するだけで、libcore_mips32.a ライブラリが作成された。

$ ls -1
CMakeCache.txt
CMakeFiles
cmake_install.cmake
CMakeLists.txt
config.h
config.h.in
core
coremark.log
init.lua
libcore_mips32.a   ## libcore_mips32.a ライブラリが自動的に作成される
Makefile
output.log
swimmer_mips