コードスニペットを書いて、実行して、共有できます - セットアップ不要。
// 4-bit synchronous counter - DUT plus a small testbench.
// Edit the +PERIOD / +RUNTIME / +VERBOSE plusargs in the panel
// below and press Run. Output appears on the right; the Waveform
// tab plots the signals dumped by $dumpfile/$dumpvars.
module counter(
input wire clk,
input wire reset,
output reg [3:0] count
);
always @(posedge clk or posedge reset) begin
if (reset)
count <= 4'b0;
else
count <= count + 1'b1;
end
endmodule
module test;
reg clk;
reg reset;
wire [3:0] count;
integer period; // half-period of the clock, in time units
integer runtime; // total simulation time
reg verbose;
// Instantiate the device under test.
counter dut(.clk(clk), .reset(reset), .count(count));
// Free-running clock - the HDL idiom. Toggles every PERIOD time units.
always #(period) clk = ~clk;
// Print on every rising edge so stdout lines up with the waveform.
always @(posedge clk) begin
if (verbose)
$display("t=%0t count=%0d", $time, count);
end
initial begin
// Make the Waveform tab work - VCD output is written here.
$dumpfile("dump.vcd");
$dumpvars(0, test);
// Defaults; override from the plusargs panel below.
if (!$value$plusargs("PERIOD=%d", period)) period = 5;
if (!$value$plusargs("RUNTIME=%d", runtime)) runtime = 80;
verbose = $test$plusargs("VERBOSE") != 0;
clk = 0;
reset = 1;
#(period * 2) reset = 0;
#(runtime) $finish;
end
endmodule
Verilog HDL をブラウザで書き、コンパイルし、シミュレーションする
無料のオンライン Verilog コンパイラ・シミュレータです。Verilog または SystemVerilog のモジュールを書き、テストベンチを組み立てて Run を押せば、標準出力と VCD 波形がそのまま表示されます。インストールも、Vivado も Quartus も、ツールチェーンのセットアップも不要。エディタはクロック付きカウンタのテストベンチで開くので、数秒で編集して実行できます。
コードは Icarus Verilog (iverilog) でコンパイルされ、サンドボックス化されたコンテナ内で vvp 上で実行されます。だから本物の Verilog HDL のセマンティクスがそのまま動きます - クロック駆動の always ブロック、ノンブロッキング代入、階層的なモジュールインスタンス化、$display、$finish。テストベンチに $dumpfile と $dumpvars を追加すれば、波形タブが 1 ビット信号や多ビットバスを、ドラッグ可能なカーソル、遷移、信号ごとの値ピルとともに描画します。Plusargs (+KEY=VALUE / +FLAG) は $value$plusargs と $test$plusargs 経由でテストベンチに渡るので、ソースを書き換えずにクロック周期、実行長、機能フラグをスイープできます。
この Verilog コンパイラの強み
- 即時コンパイル&シミュレーション - Verilog HDL を書いて Run を押せば、標準出力と VCD 波形が数秒で表示されます。
- Verilog と SystemVerilog のシンタックスハイライト - VS Code と同じエディタエンジン、module/endmodule のスコープ、キーワードの自動補完。
- 波形ビューア内蔵:テストベンチから $dumpfile と $dumpvars を出力すれば、波形タブが信号、バス、遷移、可動カーソル、そして信号ごとの値ピルを表示します。
- テストベンチ用 Plusargs パネル: +CYCLES、+PERIOD、+VERBOSE を $value$plusargs / $test$plusargs 経由で渡し、ソースを書き換えずに再実行できます。
Verilog プレイグラウンドで作れるもの
- 組合せ回路 - 加算器、マルチプレクサ、ALU - を $display チェック付きのテストベンチに配線し、即座にフィードバックが得られます。
- クロック同期式の順序回路 - カウンタ、シフトレジスタ、有限状態機械を
always @(posedge clk) で駆動し、VCD 波形で信号遷移を確認できます。 - パラメータスイープ:iverilog/vvp のコマンドラインと同じ感覚で、+CYCLES、+PERIOD、+VERBOSE の plusargs を渡して実行ごとに動作を切り替えられます。
オンライン Verilog コンパイラ FAQ
Verilog とは?
Verilog はハードウェア記述言語 (HDL) で、単純な組合せゲートからフルプロセッサまで、デジタル回路のモデリングとシミュレーションに使われます。コードでモジュール、配線、レジスタを記述し、Verilog コンパイラでコンパイルして、テストベンチを実行して動作を検証します。SystemVerilog は Verilog のスーパーセットで、検証向けの機能が追加されています。プレイグラウンドはどちらも受け付けます。
オンライン Verilog コンパイラは無料ですか?
はい、Verilog コンパイラとシミュレータは無料で使えます。登録も不要、Vivado や Quartus のライセンスも不要、インストールするツールチェーンもありません - モジュールを書いて Run を押すだけです。
Icarus Verilog や EDA ツールをインストールする必要はありますか?
いいえ。コードは iverilog でコンパイルされ、サーバー上のサンドボックスコンテナ内で vvp によって実行されます。Verilog のソースを書いて Run を押せば、あとはコンパイラとシミュレータが処理します。
Verilog コードの波形を見るには?
テストベンチの initial ブロック内で $dumpfile("dump.vcd") と $dumpvars(0, your_module) を呼び出します。Run 後、Waveform タブに信号が描画されるので、トレース上の任意の場所をクリックすればカーソルが置かれ、その時点の信号ごとの値を読み取れます。
Plusargs を使った Verilog テストベンチの書き方は?
Plusargs パネルに行を追加すると (例: CYCLES=10、VERBOSE)、コマンドラインで +CYCLES=10 +VERBOSE としてシミュレータに渡されます。テストベンチ側では、整数値は $value$plusargs("CYCLES=%d", n)、boolean フラグは $test$plusargs("VERBOSE") で読み取れます。デフォルトのスターターコードに両方のパターンが載っています。