Systemverilog BitMapを作成する(グレースケール) SystemVerilog はじめに SystemVerilogでビットマップを作成します。 グレースケール専用です。 サンプルコード bmp.svh `ifndef _BMP `define _BMP package bmp; typedef bit BYTE; t... 2023.05.26 Systemverilog
Systemverilog alwaysとalways_ffの違い はじめに Verilogではalwaysを使用してフロップフロップと組み合わせ回路の両方を作成しますが、 SystemVerilogではフリップフロップ用にalways_ff、組み合わせ回路用にalways_combが追加されています。 a... 2023.01.23 Systemverilog
Systemverilog randcase 重み付きランダムセレクタ SystemVerilog はじめに randcaseは重み付きのランダムセレクタを作成できます。 使い方 randcase w1 : x = 1; w2 : x = 2; endcase 上記は、x がw1/(w1 + w2) の確立で1, w2/(w1 + w2)... 2023.01.19 Systemverilog
Systemverilog 制約をON/OFFする constraint_mode SystemVerilog はじめに 同じランダム変数で複数パターンのconstraintを定義したいことがあります。 しかし、constraintが競合しているとrandomize()がFailします。そこで、constraint_modeを使用することで、使用しな... 2023.01.18 Systemverilog
Systemverilog 比較演算でワイルドカード =?=/!?= SystemVerilog はじめに SystemVerilog 3.1では比較演算でワイルドカードを使用できます。 =?=/!?=でワイルドカードを用いた比較演算を行えます。 =?=は右辺と左辺が等しいときに真、!?=は右辺と左辺が等しくないときに真です。 式ではx... 2023.01.18 Systemverilog
Systemverilog always@*とalways_combの違い SystemVerilog はじめに always@*とalways_combは一見同じ動作をしそうですが、小さな違いがあります。 両者の違いについてまとめました。 always@*とalways_combの違い always@*はマルチドライブできる。always_... 2023.01.12 Systemverilog
Systemverilog SystemVerilog softでconstraintを上書きする はじめに rand変数で定義した変数はrandomizeで値が確定します。 withを付けることで、インラインで制約を付けることができますが、class内に宣言した制約とconflictするとrandomizeが失敗します。 softを使用... 2022.12.14 Systemverilog
Systemverilog Verilog defineマクロで「”」を使う はじめに VerilogのDefineマクロでダブルクォーテーション「"」を使用します。 やり方 「`」バッククォートでエスケープできます。 `define DISPLAY(a) $display(`"a`"); サンプルコード modul... 2022.12.06 Systemverilog
Systemverilog UVM driver/sequencerはマクロで作成しよう はじめに UVMを久しぶりに書くと、Driver, Sequencerの書き方を忘れます。 なので、Defineマクロを使って簡単に作成できるようにしましょう。 マクロを作成する Sequencer uvm_sequnecerを継承したSe... 2022.12.01 SystemverilogUVM
Systemverilog parameter port listとparameterを宣言すると上書きできない SystemVerilog はじめに VerilogではParameterは以下のように宣言できます。 parameter module sample1(); parameter A = 1; parameter B = 2; また、SystemVerilogではPa... 2022.11.26 Systemverilog