SystemVerilogの基礎知識(検証編)【その4:Package】
みなさん、こんにちは。
SystemVerilogは、「記述の簡略化」、「その簡略化によって防げる記述ミス」、「解析にかかる時間削減」などのメリットがありますので、お使いいただくことで設計品質を上げることが可能になります。
今回は、Packageについて述べていきます。
このブログは「FPGA設計ブログ一覧」の
2. シミュレーションのひとつです。
目次
Packageとは
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サイトに掲載していますので、ぜひご覧ください。
FPGAの活用に際して設計検討などありましたら、お気軽にお問い合わせください。
最後までお付き合いいただきありがとうございました。
このブログは「FPGA設計ブログ一覧」の
2. シミュレーションのひとつです。