Verilog
9 件
-
[Verilog] 特定の書式から値の読み取り、文字列から数値へ変換 $sscanf
特定の書式から値の読み取り、文字列から数値へ変換 "A = 0" など、ある書式に従った文字列から、必要な値を取得する方法です。 $sscanf を使えば、書式を指定して値を読み取れます。 "reg1 = 0xc0ffee" という文字列か…
-
[Verilog] カウンタ作成とありがちなバグ
Verilog HDL ネタは、講義とかで使われるようなのを書くとアクセスアップしたりするんだろうか。どんなのがいいかわからないけど。 今回は、カウンタ回路でありがちかもしれないバグの話。 0~max_count のカウンタ生成で次のような…
-
[Verilog][SystemVerilog] bit 幅を指定しない整数リテラルの bit 幅
数字のみ、bit 幅指定なしで進数表記ありの場合どちらも 32bit(以上)の bit 幅になります。 The number of bits that make up an unsized number (which is a simple…
-
[Verilog][SystemVerilog] generate の使い方:for(genvar)・if・case で複数インスタンス
Verilog 2001 から generate 構文を使って、module, assertion 等のインスタンスや、assign による接続などができます。ここではループを使った生成の話です。 for loop 構文を使って複数インスタ…
-
[SystemVerilog] ターミナルコマンドを実行 $system
システムタスク $system で C の system 関数を呼べます。 戻り値は system 関数の戻り値(int)のため、実行結果の文字列の取得などは直接できません(ファイルに出力してそれを読み取ることはできるけど……)。 システム…
-
[Verilog] 最大値から必要な bit 幅を求める $clog2
システム関数 $clog2 が使えます。2 を底とする対数の天井関数の結果が得られます。 0〜N の値を表すのに必要な bit 幅は $clog2(N + 1) です。N 個の要素を指すインデックス(0〜N-1)なら $clog2(N) で…
-
[Verilog] $test$plusargs・$value$plusargs でシミュレーションにコマンドライン引数を渡す
シミュレーターにコマンドライン引数を渡して、条件分岐などを行う方法。システムタスク $test$plusargs(string)、$value$plusargs(user_string, variable) を使う。 文…
-
[Verilog] ファイルが存在するかチェック
$fopen を使う感じかな。これだと Warning がツールによって表示されると思うけど。 This file contains hidden or bidirectional Unicode text that m…
-
[Verilog] シミュレーション状態を保存、途中から再開 $save, $restart
システムタスク $save("filename") でシミュレーションの状態をファイルに保存。 差分保存の $incsave("incremental_filename") もある。 $restart("filename") で再開。書くな…
