1. 株式会社PALTEK
  2. TECHブログ
  3. 技術情報
  4. SystemVerilogの基礎知識(検証編)【その4:Package】

TECHブログ

SystemVerilogの基礎知識(検証編)【その4:Package】

SystemVerilogの基礎知識(検証編)【その4:Package】

みなさん、こんにちは。

SystemVerilogは、「記述の簡略化」、「その簡略化によって防げる記述ミス」、「解析にかかる時間削減」などのメリットがありますので、お使いいただくことで設計品質を上げることが可能になります。
今回は、Packageについて述べていきます。

目次

Packageとは

Packageは、定数の宣言や定義を複数のモジュールで共有するために使用されます。VerilogにはPackageはなく、SystemVerilogで導入されました。VHDLではPackageがありました。VHDLを携わった人には、使った or 聞いたことがあるかと思います。そのため、Verilogしか知らない人は少し慣れないかもしれません。

Package宣言の方法

Packageは以下のように宣言します。

左右にスクロールしてご覧ください
package <パッケージ名>;
 
 ここに必要な宣言を記載する。
 
endpackage

Packageで宣言できる内容

宣言できる内容として以下のようなものがあります。

  • function
  • parameter
  • local param
  • data
  • task
  • type
  • property

Packageの使用例

functionの定義と使用

SystemVerilogは検証向けのイメージがありますが、デザイン向けにも使用することができます。主に使うとしたら、function、parameter、local paramの定義でしょうか。

以下に、それぞれの順に記述例(function)を述べていきます。

example1_pkg.svの記述

左右にスクロールしてご覧ください
package example1_pkg;
    function void print();
        $display("                           ");
        $display("+-------------------------+");
        $display("|         message         |");
        $display("+-------------------------+");
        $display("                           ");
    endfunction
endpackage

パッケージファイル名は、example1_pkgとします。function定義内のdisplay表示の記述を行います。

example1_top1.svの記述

左右にスクロールしてご覧ください
module example1_top1;
    import example1_pkg::*;
    initial begin
        print();
    end
endmodule

import example1_pkg::*; で定義を使用することが可能になります。print(); で表示されます。

実行結果

左右にスクロールしてご覧ください
                           
+-------------------------+
|         message         |
+-------------------------+
                           

Vivado™に読み込ませ、シミュレーションを実行すると、コンソールに表示されることが確認できます。
使用するファイルは、example1_pkg.sv、example1_top1.sv の2種類です。

おまけとして、example1_top1.sv で記述した“import”を省略した記述もあります。
example1_pkg::print();
と記述することで“import”省略し、example1_pkg.sv が使用可能になります。
どうなるかというと以下のようになります。

左右にスクロールしてご覧ください
module example1_top2;
    initial begin
        example1_pkg::print();
    end
endmodule

stringを使用した記述例

他にも、stringを使用した記述もあります。

example2_pkg.svの記述

左右にスクロールしてご覧ください
package example2_pkg;
string str1 = "                           ";
string str2 = "+-------------------------+";
string str3 = "|         message         |";
endpackage
import example2_pkg::*;

パッケージファイル名は、example2_pkgとします。
string定義内で3種のdisplay表示の記述を行います。(str1、str2、str3)

example2_top.svの記述

左右にスクロールしてご覧ください
`include "example2_pkg.sv"
module example2_top ;
    initial begin
        $display("%s", str1);
        $display("%s", str2);
        $display("%s", str3);
        $display("%s", str2);
        $display("%s", str1);
        $finish;
    end
endmodule

実行結果

左右にスクロールしてご覧ください
                           
+-------------------------+
|         message         |
+-------------------------+
                           

Vivado™に読み込ませ、シミュレーションを実行すると、コンソールに表示されることが確認できます。
使用するファイルは、example2_pkg.sv、example2_top1.svの2種類です。
前のexample1と同様の出力結果になります。

他にもPackageには定義がありますので、今後紹介していきます。

おわりに

いかがでしたでしょうか。SystemVerilogの基礎知識についてご理解いただければ幸いです。
次回、記述の詳細について記載をしていこうと思います。

弊社ではFPGA設計や回路図設計、レイアウト設計、ソフトウェア設計、筐体設計などを受託開発しています。
サービス内容をWEBサイトに掲載していますので、ぜひご覧ください。

設計受託・ODMの概要については
こちら

FPGAの活用に際して設計検討などありましたら、お気軽にお問い合わせください。

FPGAの活用・設計検討の
お問い合わせはこちら

最後までお付き合いいただきありがとうございました。

関連ブログ