Systemverilog

スポンサーリンク
Systemverilog

BitMapを作成する(グレースケール) SystemVerilog

はじめに SystemVerilogでビットマップを作成します。 グレースケール専用です。 サンプルコード bmp.svh `ifndef _BMP `define _BMP package bmp; typedef bit BYTE; t...
Systemverilog

alwaysとalways_ffの違い

はじめに Verilogではalwaysを使用してフロップフロップと組み合わせ回路の両方を作成しますが、 SystemVerilogではフリップフロップ用にalways_ff、組み合わせ回路用にalways_combが追加されています。 a...
Systemverilog

randcase 重み付きランダムセレクタ SystemVerilog

はじめに randcaseは重み付きのランダムセレクタを作成できます。 使い方 randcase w1 : x = 1; w2 : x = 2; endcase 上記は、x がw1/(w1 + w2) の確立で1, w2/(w1 + w2)...
Systemverilog

制約をON/OFFする constraint_mode SystemVerilog

はじめに 同じランダム変数で複数パターンのconstraintを定義したいことがあります。 しかし、constraintが競合しているとrandomize()がFailします。そこで、constraint_modeを使用することで、使用しな...
Systemverilog

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

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

always@*とalways_combの違い SystemVerilog

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

SystemVerilog softでconstraintを上書きする

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

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

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

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

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

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

はじめに VerilogではParameterは以下のように宣言できます。 parameter module sample1(); parameter A = 1; parameter B = 2; また、SystemVerilogではPa...
スポンサーリンク