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