CIRCTのDialect調査

CIRCTに含まれるDialectとその変換パスを調査。 Dialectの変換はソースコードの以下に存在。 lib/Conversion Dialect一覧 CIRCTには以下のDialectが含まれている。 FIRRTL Dialect RTL Dialect Handshake Dialect StaticLogic Dialect LLHD Dialect その他、MLIRでデフォルトで定義されているDialectとして以下がある。 Standard Dialect LLVM Dialect Dialect変換パス FIRRTLからVerilogを生成する流れは、 FIR parserでFIRRTL Dialectへ変換し、 FIRRTL DialectからRTL Dialectへ変換、 最後にRTL DialectからVerilogコードを生成する となっている。

2020-08-08 Sat ·     "Masahiro Hiramori"

CIRCT(Circuit IR Compilers and Tools)をビルドする

CIRCT(Circuit IR Compilers and Tools)はMLIRベースのRTL生成ツール。 READMEにしたがってビルド、サンプル回路をコンパイルした。 環境 Ryzen 5 1600 32GBメモリ Ubuntu 18.04 on WSL2 on Windows 10 作業ディレクトリは~/workspaceとする ビルド 作業ディレクトリ(~/workspace)にリポジトリをクローンする。 cd ~/workspace git clone --recursive https://github.com/llvm/circt.git CIRCUITはMLIRベースに開発されているため、まずはMLIRをビルドする。 cd circt mkdir llvm/build cd llvm/build cmake -G Ninja ../llvm -DLLVM_ENABLE_PROJECTS="mlir" -DLLVM_TARGETS_TO_BUILD="X86" -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_BUILD_TYPE=Release ninja ninja check-mlir 続いてCIRCT本体をビルドする。 cd ~/workspace/circt mkdir build cd build cmake -G Ninja .. -DMLIR_DIR=~/workspace/circt/llvm/build/lib/cmake/mlir -DLLVM_DIR=~/workspace/circt/llvm/build/lib/cmake/llvm -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_BUILD_TYPE=Release ninja ninja check-circt build/bin/にcircuit-translateとcircuit-optが生成されるので、環境変数パスにディレクトリを追加する。 export PATH=~/workspace/circt/build/bin:$PATH サンプル回路生成 サンプル入力ファイルのあるディレクトリに移動する。 cd ~/workspace/circt/test/EmitVerilog FIRRTLからVerilogへ変換 FIRRTL→Verilogへ変換する。...

2020-08-07 Fri ·     "Masahiro Hiramori"