HDL
13 件
-
[SystemVerilog] bit の逆順並び替え、endian 変換
SystemVerilog では streaming operators という演算子が使え、bit の並びを逆順にしたり 指定した bit 単位で並び順を変えるのに使えます(回路記述に使えます)。 This file…
-
[SystemVerilog] Motorola S-record 形式ファイルのリード
SystemVerilog では string 型が使え、文字列操作もできるよ、という話です。 Motorola S-record 形式ファイルは、 モトローラ S レコードフォーマット などを参照。 こういったファイル…
-
[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) で…
-
[SystemVerilog][SVA] アサーションの停止・再開
シミュレーション中、アサーション(assert, cover, assume)の開始・停止(有効・無効)をシステムタスクで制御できます。
-
[SystemVerilog] bit 幅の取得 $bits
システム関数 $bits を使います。bit 幅 (integer) を返します。 4値の場合 1bit を返し、ツールの実装で実際に使われるメモリサイズではありません。 コンパイル時に値が決定されるものに使えます。そのため、reg, wi…
