Systemverilog

スポンサーリンク
Systemverilog

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

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

alwaysとalways_ffの違い

はじめにVerilogではalwaysを使用してフロップフロップと組み合わせ回路の両方を作成しますが、SystemVerilogではフリップフロップ用にalways_ff、組み合わせ回路用にalways_combが追加されています。alwa...
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を使用することで、使用しないc...
Systemverilog

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

はじめにSystemVerilog 3.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マクロでダブルクォーテーション「"」を使用します。やり方「`」バッククォートでエスケープできます。`define DISPLAY(a) $display(`"a`");サンプルコードmodule top(...
Systemverilog

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

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

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

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