Systemverilog 比較演算でワイルドカード =?=/!?= SystemVerilog はじめにSystemVerilog3.1では比較演算でワイルドカードを使用できます。=?=/!?=でワイルドカードを用いた比較演算を行えます。=?=は右辺と左辺が等しいときに真、!?=は右辺と左辺が等しくないときに真です。式ではx,zがワイ... 2023.01.18 Systemverilog
Systemverilog always@*とalways_combの違い SystemVerilog はじめにalways@*とalways_combは一見同じ動作をしそうですが、小さな違いがあります。両者の違いについてまとめました。always@*とalways_combの違いalways@*はマルチドライブできる。always_comb... 2023.01.12 Systemverilog
Systemverilog SystemVerilog softでconstraintを上書きする はじめにrand変数で定義した変数はrandomizeで値が確定します。withを付けることで、インラインで制約を付けることができますが、class内に宣言した制約とconflictするとrandomizeが失敗します。softを使用するこ... 2022.12.14 Systemverilog
Systemverilog Verilog defineマクロで「”」を使う はじめにVerilogのDefineマクロでダブルクォーテーション「"」を使用します。やり方「`」バッククォートでエスケープできます。`defineDISPLAY(a)$display(`"a`");サンプルコードmoduletop();`... 2022.12.06 Systemverilog
Systemverilog UVM driver/sequencerはマクロで作成しよう はじめにUVMを久しぶりに書くと、Driver,Sequencerの書き方を忘れます。なので、Defineマクロを使って簡単に作成できるようにしましょう。マクロを作成するSequenceruvm_sequnecerを継承したSequncer... 2022.12.01 SystemverilogUVM
Systemverilog parameter port listとparameterを宣言すると上書きできない SystemVerilog はじめにVerilogではParameterは以下のように宣言できます。parametermodulesample1();parameterA=1;parameterB=2;また、SystemVerilogではParameterをPortの... 2022.11.26 Systemverilog
Systemverilog class内のtask/functionはautomaticになる SystemVerilog はじめにtask/functionはデフォルトでstaticで宣言されるので注意が必要です。しかし、LRM11.9よりclass内のtask/functionはautomaticで宣言されます。解説sample1.svまずは、普通にtask... 2022.11.21 Systemverilog
Systemverilog inout ポートはwireでつなぐ SystemVerilog はじめにVerilogは信号をその用途によってregかwireで宣言する必要があります。代わってSystemVerilogにはlogicという便利な宣言方法があります。Verilogでreg/wireで宣言していた信号は「ほとんど」logi... 2022.11.16 Systemverilog
Systemverilog $display RTLの階層を表示する Verilog はじめに$displayなどで変数の値をログに表示することができますが、その他にも色々な値を表示できます。Format%mを使用することで、現在の階層を取得することができます。使い方$display("%m");サンプルコードmodulet... 2022.11.14 Systemverilog
Systemverilog uvm_comparer uvm_object::compareの設定を変更する UVM コマンドの説明uvm_comparerはuvm_objectのMethodであるcompareの設定を変更できます。使い方uvm_objectob1;uvm_objectob2;uvm_comparercomp;initialbeginin... 2022.10.24 SystemverilogUVM