スポンサーサイト

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

Verilog HDL:deassignってあるんだ

SystemVerilogの本読んでたら、「deassign」なる予約語を見つけたので
書いてみました。(規格に書いてるexampleですが。)
「deassign」自体はVerilog HDLからあります。(っていうことを知りました。)

○サンプルコード
 1|module dff (q, d, clear, preset, clock);
 2|  output q;
 3|  input d, clear, preset, clock;
 4|  logic q;
 5|
 6|  always @(clear or preset) begin
 7|    if (!clear)       assign q = 0;
 8|    else if (!preset) assign q = 1;
 9|    else              deassign q;
10|  end
11|
12|  always @(posedge clock) begin
13|    q = d;
14|  end
15|
16|endmodule
17|
18|module testbench;
19|  logic d      = 0;
20|  logic clear  = 0;
21|  logic preset = 0;
22|  logic clock  = 0;
23|  logic q;
24|
25|  dff udff(.*);
26|
27|  always #5 clock = ~clock;
28|
29|  initial begin
30|    #6   clear  = 1; preset = 1;
31|    #100 clear  = 0; #10 clear  = 1;
32|    #100 preset = 0; #10 preset = 1;
33|    #100
34|    $finish(1);
35|  end
36|
37|  initial begin
38|    #6 d = 1;
39|    @(posedge clock); #1 d = 0;
40|    @(posedge clock); #1 d = 1;
41|    @(posedge clock); #1 d = 0;
42|    @(posedge clock); #1 d = 1;
43|    #100 @(posedge clock); #1 d = 0;
44|  end
45|
46|endmodule:testbench

○実行結果
20120704_deassign.png

というような感じです。
always内に「assign」すら書いたことなかったので、結構新鮮でした。

■追記
IEEE1800-2009より引用:
「The procedural assign and deassign constructs are under consideration for deprecation.」
ということです。
関連記事

コメントの投稿

非公開コメント

プロフィール

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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。