スポンサーリンク
Systemverilog

Pullup/Pulldown 実機とシミュレーションの違い

はじめにFPGA開発では基板上で信号がPullup/Pulldownされている信号があります。基板上でPullup/Pulldownされているということは、DUTには表現されません。シミュレーションでは注意が必要で、テストベンチ側でPull...
Systemverilog

UVM print_topology()でuvm_componentの階層を表示する

使い方uvm_top.print_topology();でuvm_componentの階層をログに出力します。サンプルコードtop.svmodule top; `include "uvm_macros.svh" import uvm_pkg...
Systemverilog

UVM uvm_config_dbでsetした値をログに表示する

uvm_config_db#()::dump();完結に、uvm_config_db#(<type>)::set()で登録した値はuvm_config_db#()::dump();でログに表示されます。<type>は指定してもしなくても、す...
Systemverilog

UVM TPRGEDが出た uvm_warning

現象同じAgentを継承して別々なEnvを作成してそのEnvをテストベンチに組み込むとTPRGEDのWarningが出ますtop.svpackage pkg1; `include "uvm_macros.svh" import uvm_pk...
Systemverilog

distの重みづけの動作確認 SystemVerilog

distでrand変数に重みづけするdistでrand変数に重みづけができます。動作確認してみます。「:=」の動作確認0:10%, 1:30%, 2:30%, 4:30%の出現確率で10,000回実行します。module top; clas...
Systemverilog

SystemVerilog constraintでrand変数に制約をつける

はじめにSytemVerilogのclassの変数はrandを付けることで乱数にすることができます。rand変数はrandomizeメソッドで乱数が生成されます。このとき、constraintで生成される乱数に制約を付けることができます。m...
Systemverilog

ノンブロッキングとブロッキングでFFの動作が変わる話 SystemVerilog

はじめにFFを作るとき、ノンブロッキング代入とブロッキング代入で多段FFの動作が変わります。入力を2段のFFで受けて出力する回路でその動作を見ていきます。ノンブロッキングnonblocking.svmodule dut( input clk...
Systemverilog

SystemVerilog Interfaceで回路を作成する 内部回路

はじめにInterfaceブロックの中に回路を作成してみます。サンプルコードdut_if.svInterfaceです。validがHighのときのdinが有効データになります。interface dut_if#( parameter BW ...
Systemverilog

SystemVerilog Event変数を使ってみる ->

はじめにあるシーケンシャルブロックから別なメソッド・シーケンシャルブロックを起動したいときにevent変数が便利です。宣言する方法は以下です。event <変数名>;下記のように使用します。-><変数名>;サンプルコードセンシビリティリスト...
Systemverilog

SystemVerilog Interfaceを使用して回路を作成する modport

はじめにInterfaceのmodportの機能を使用して回路を作成してみます。バスのプロトコルは、validがHighのとき、スレーブに設定したアドレスとaddrが等しいときのdataが有効になります。サンプルコードtb.svテストベンチ...
スポンサーリンク