スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

SystemVerilog: 動的キャスト($cast)

SystemVerilogの $castについて記述してみました。

○サンプルコード
 1|module testbench;
 2|
 3|  int data;
 4|  int cast_flag ;
 5|  enum {a,b,c} enum_t;
 6|
 7|  initial begin
 8|    data = 100;
 9|    $cast(data, data **2);
10|    $display("--- data = %d ---", data);
11|    // cast
12|    data = 'h7fffffff;
13|    cast_flag = $cast(data, 3.14 * data);
14|    $display("--- data = %d, flag = %d---", data, cast_flag);
15|    // Error
16|    cast_flag = $cast(enum_t, data * -10 );
17|    $display("--- data = %d, flag = %d---", data, cast_flag);
18|    $finish(1);
19|  end
20|
21|endmodule:testbench

○実行結果
# vsim -L work -do {run -all; quit} -c testbench 
# Loading sv_std.std
# Loading work.testbench
# run -all
# --- data = 10000 ---
# --- data = -1846835940, flag = 1---
# --- data = -1846835940, flag = 0---
# ** Note: $finish : sample.sv(18)
というような記述方法ができます。
UVMライブラリ見ると、色んなとこで使われていますね。
関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

Author:Kocha
なんでもチャレンジ!(^o^)/
E-mail
github:Kocha
イベントカレンダー

カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。