... | ... | @@ -7,7 +7,7 @@ VerilatorはオープンソースのVerilog HDLシミュレータです。 |
|
|
Verilog HDLの記述をC++に変換し、コンパイル後にシミュレーションするため非常に高速という特徴があります。
|
|
|
一方、高速化のためにVerilog HDLの一部の機能が使えないという制約があります。
|
|
|
|
|
|
また、テストベンチをC/C++で書く必要があります。
|
|
|
また、テストベンチをC++で書く必要があります。
|
|
|
|
|
|
## Verilatorのインストール
|
|
|
|
... | ... | @@ -23,7 +23,7 @@ $ sudo apt-get install verilator |
|
|
|
|
|
適当な作業ディレクトリを用意し、そこにVerilog HDLのソースファイルを置いたとします。
|
|
|
|
|
|
そのディレクトリに、C/C++で書かれたテストベンチファイルを作成します。例を一番下に書きました。
|
|
|
そのディレクトリに、C++で書かれたテストベンチファイルを作成します。例を一番下に書きました。
|
|
|
|
|
|
`$ verilator --cc top.v -exe test_bench.cpp`とコマンドを実行することで、`obj_dir`というディレクトリが作成されます(Vivadoでは出ないLintエラーの警告が出るかもしれません)。このディレクトリの中には、C++に変換された`top.v`である`Vtop.cpp`などが含まれています。
|
|
|
|
... | ... | @@ -65,8 +65,12 @@ void uart_rx(unsigned int u) { |
|
|
|
|
|
int main() {
|
|
|
Vtop top;
|
|
|
|
|
|
top.sysclk = 0;
|
|
|
top.eval();
|
|
|
top.sysclk = 1;
|
|
|
top.eval();
|
|
|
top.cpu_resetn = 0;
|
|
|
top.eval();
|
|
|
top.sysclk = 0;
|
|
|
top.eval();
|
|
|
top.sysclk = 1;
|
... | ... | @@ -80,7 +84,7 @@ int main() { |
|
|
top.eval();
|
|
|
top.sysclk = 1;
|
|
|
top.eval();
|
|
|
uart_rx(top.uart_rx_out);
|
|
|
uart_rx(top.uart_tx);
|
|
|
timer_ps += 1000000000000 / clock_Hz;
|
|
|
}
|
|
|
}
|
... | ... | |