田中太郎

スポンサーリンク
Systemverilog

Priority/Unique/Unique0の動作確認 SystemVerilog

はじめに Priority, Unique, Unique0というものがあると聞いて、動作確認してみました。 使い方 if/caseの前に付けることが可能です。 priority if (<条件1>) <式1> else if (<条件2>...
Systemverilog

単純な条件式はif文より3項演算子を使った方がよいという話 Verilog

はじめに RTLで、単純な条件式はif文ではなく3項演算子を使用した方がよいという話をどこかで聞いたがなぜだかわからなかったため、調べてみました。 3項演算子の方が実機での動作に近いから、ということかなと思いました。 ifの条件式と3項演算...
Systemverilog

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

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

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

使い方 uvm_top.print_topology(); でuvm_componentの階層をログに出力します。 サンプルコード top.sv module top; `include "uvm_macros.svh" import uv...
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.sv package pkg1; `include "uvm_macros.svh" import uv...
Systemverilog

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

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

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

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

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

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

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

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