X(旧Twitter)で調査して乗っていた、CXXRTLというツールについて調査した。 これはYosysに付属しているバックエンドツールで、RTLからC++を生成するツールらしい。 つまるところ、Verilatorと同じような機能を持っているが、Verilatorと違って入力ファイルはSystemVerilogではないし、Yosysが取り扱うことのできる純粋なVerilogを入力する必要があるらしい。
チュートリアルがあるのでやってみる。
module blink(input clk, output led); reg [11:0] counter = 12'h0; always @(posedge clk) counter <= counter + 1'bx; assign led = counter[7]; endmodule // blink
C++のドライバを追加して、コンパイルして実行ファイルを生成する。
$ yosys -p "read_verilog blink.v; write_cxxrtl blink.cpp" $ clang++ -g -O3 -std=c++14 -I/home/msyksphinz/software/yosys/yosys-0.35/share/yosys/include/ main.cpp -o tb
$ ./tb cycle 128 - led: 1 cycle 256 - led: 0 cycle 384 - led: 1 cycle 512 - led: 0 cycle 640 - led: 1 cycle 768 - led: 0 cycle 896 - led: 1
VCDファイルも一応吐き出すことはできるっぽい。
ただし、いろいろ試した感じだと不定値とかH値とかは扱うことはできないっぽい。もうちょっとオプションを見なければならないけれども、やはり簡易ツールなのかな?