systemVerilogサンプル・その5 extends打ち止め。。

verilog2001の仕様書を見たときにどうして無いの思った所が
例のユーザー定義型ともう一つpackage文。。

modelsimはシングルカーネルを誇っているのにVHDLはOK!で
verilog駄目。。なんでや(怒)と思ったね!!

やっとsystemVerilogでpackage文も使えるようになりました。。喜)

packageではparameter,typedef struct..等の定義記述をまとめてコンパイル
コンパイル済みライブラリとして参照できる。
 →ライブラリ vlib workとかしてライブラリディレクトリを作るやつ。

固定値をdefineで記述して作ったやたら長いファイル有りません??
includeするときにうっとうしいでしょう。
モジュール単体でシミュレーションするときとchipでシミュレーションするときで
pathが変わってしまいifdefで切り分けたりとか。

この様なときに、packageでparameter,localparam,typedef..をまとめてコンパイル済み
ライブラリとして置けばinclude-pathの心配なしで便利です。
→注)define定義はコンパイルできるけど参照できないよ。

systemVerilog_3.1aをみるとpackage内にいっぱい書ける。 p262のBNFだ~~~
package_declaration ::=
{ attribute_instance } package package_identifier ;
[ timeunits_declaration ] { { attribute_instance } package_item }
endpackage [ : package_identifier ]
package_item ::=
package_or_generate_item_declaration
| specparam_declaration
| anonymous_program
| timeunits_declaration18
package_or_generate_item_declaration ::=
net_declaration
| data_declaration
| task_declaration
| function_declaration
| dpi_import_export
| extern_constraint_declaration
| class_declaration
| class_constructor_declaration
| parameter_declaration ;
| local_parameter_declaration
| covergroup_declaration
| overload_declaration
| concurrent_assertion_item_declaration
| ;

モジュールで参照するときは
 import fifo_package:: * ;
みたいみしておけばOKです。

ポートに参照の必要なユーザー定義の型が有るときは
import uart_package:: * ;
module uart_transmitter(input wire    clk_i,
                        input wire    nrst_i,
                        input wire    trans_clk_en,
                        output wire   txd_out,
                        fifo_bus      fifo_pop,
                        input u_reg_t u_reg,
とかmoduleの前に置けばOKでした。
  →Quaruts2 9.1sp1&modelSimの場合。
    IEEE 1800リファレンスmanを見てないので本当にこれでOKかは??です。。汗)


systemVerilogのおかげで、
指をくわえながら物欲しそうにVHDL野郎を見つめる事も無くなるでしょう。。
systemVerilogでGO!!!

systemVerilog