Systemverilog

スポンサーリンク
Systemverilog

比較演算でワイルドカード =?=/!?= SystemVerilog

はじめにSystemVerilog3.1では比較演算でワイルドカードを使用できます。=?=/!?=でワイルドカードを用いた比較演算を行えます。=?=は右辺と左辺が等しいときに真、!?=は右辺と左辺が等しくないときに真です。式ではx,zがワイ...
Systemverilog

always@*とalways_combの違い SystemVerilog

はじめにalways@*とalways_combは一見同じ動作をしそうですが、小さな違いがあります。両者の違いについてまとめました。always@*とalways_combの違いalways@*はマルチドライブできる。always_comb...
Systemverilog

SystemVerilog softでconstraintを上書きする

はじめにrand変数で定義した変数はrandomizeで値が確定します。withを付けることで、インラインで制約を付けることができますが、class内に宣言した制約とconflictするとrandomizeが失敗します。softを使用するこ...
Systemverilog

Verilog defineマクロで「”」を使う

はじめにVerilogのDefineマクロでダブルクォーテーション「"」を使用します。やり方「`」バッククォートでエスケープできます。`defineDISPLAY(a)$display(`"a`");サンプルコードmoduletop();`...
Systemverilog

UVM driver/sequencerはマクロで作成しよう

はじめにUVMを久しぶりに書くと、Driver,Sequencerの書き方を忘れます。なので、Defineマクロを使って簡単に作成できるようにしましょう。マクロを作成するSequenceruvm_sequnecerを継承したSequncer...
Systemverilog

parameter port listとparameterを宣言すると上書きできない SystemVerilog

はじめにVerilogではParameterは以下のように宣言できます。parametermodulesample1();parameterA=1;parameterB=2;また、SystemVerilogではParameterをPortの...
Systemverilog

class内のtask/functionはautomaticになる SystemVerilog

はじめにtask/functionはデフォルトでstaticで宣言されるので注意が必要です。しかし、LRM11.9よりclass内のtask/functionはautomaticで宣言されます。解説sample1.svまずは、普通にtask...
Systemverilog

inout ポートはwireでつなぐ SystemVerilog

はじめにVerilogは信号をその用途によってregかwireで宣言する必要があります。代わってSystemVerilogにはlogicという便利な宣言方法があります。Verilogでreg/wireで宣言していた信号は「ほとんど」logi...
Systemverilog

$display RTLの階層を表示する Verilog

はじめに$displayなどで変数の値をログに表示することができますが、その他にも色々な値を表示できます。Format%mを使用することで、現在の階層を取得することができます。使い方$display("%m");サンプルコードmodulet...
Systemverilog

uvm_comparer uvm_object::compareの設定を変更する UVM

コマンドの説明uvm_comparerはuvm_objectのMethodであるcompareの設定を変更できます。使い方uvm_objectob1;uvm_objectob2;uvm_comparercomp;initialbeginin...
スポンサーリンク