Verification

UVMの入門書

アマゾンでUVMの入門書を見つけました。kindle版だと千円なので試しに買ってみましたが、結構分かりやすいです。 Amazon.co.jp: Getting Started with UVM: A Beginner's Guide英語ですが、100ページ程度とボリュームが少ないので、入門書として良いのではな…

ModelSimの実行スクリプト

ModelSimの実行スクリプトのサンプルです。プロジェクト名:sample シミュレーショントップのモジュール名:sample_tb ModelSimの作業ディレクトリ名(ModelSimが生成したファイルを格納):work とします。・ディレクトリ構成 sample/ |- sample_tb.sv |- sam…

FIFO(キュー)のビヘイビアモデル

SystemVerilogを使ったビヘイビアレベルのFIFOの実装方法です。詳細は、SystemVerilog 3.1a LRMの4.14を参照してください。 FIFOの宣言 int fifo0[$]; // 深さを指定しないFIFO int fifo1[$:255]; // 深さ256のFIFO データの格納方法 FIFOの一番後ろにデータ…

動的配列の使い方

Verilogでは配列の要素数は宣言時に指定する必要があったので何かと不便でしたが、SystemVerilogでは、要素数を自由に変更できる動的配列が使えます。動的配列は下記のように『型 配列名[]』で宣言します。 int dynamic_array[]; 動的配列はクラスのため、ne…

シミュレーション終了時に実行されるfinal文

最近知ったのですが、SystemVerilogでは、シミュレーション終了時に実行されるfinal文というものが追加されています。使い方は簡単で、シミュレーション終了時にfinal文内の記述が1回だけ実行されます。なお手続き的処理(#遅延とか)は記述できません。 modue…

コマンドラインでModelsimを実行する方法

コマンドラインでModelsimを実行する方法をよく忘れるのでメモ。作業ディレクトリを作成 $ vlib dir プロジェクト名と作業ディレクトリを関連付ける $ vmap prj dir_path コンパイル vlog test1.v test2.v \ -f file_list \ -work prj \ ←プロジェクト名 -in…

Verilogでセマフォ

『SystemVerilogによるLSI設計』に組み込みのセマフォを使わずに、中身を自分で定義している箇所があった(294ページ)。これはちょっと書き換えるとVerilogで使えそう。 module Semaphore; parameter initial_keys = 1; integer keys = initial_keys; task ge…