[SystemVerilog] clocking input/output skew

SystemVerilogの clockingについてです。

20130729_sv_clocking.png

このように、clockingでは、input/outputの skewを設定できます。

  • サンプルコード
  •  1|module testbench ();
     2|
     3|  logic      clk = 0;
     4|  logic[3:0] data;
     5|  logic[3:0] temp_data;
     6|
     7|  always  #10 clk = ~clk;
     8|
     9|  clocking cb @(posedge clk);
    10|    input #2 output #4 data;
    11|  endclocking
    12|
    13|  initial begin
    14|    temp_data = 1; @(posedge clk); cb.data <= temp_data; // output skew #4
    15|    temp_data = 2; @(posedge clk); cb.data <= temp_data; // output skew #4
    16|    temp_data = 3; @(posedge clk); cb.data <= temp_data; // output skew #4
    17|    #100;
    18|    data = 4; @(posedge clk); temp_data <= cb.data; #17;
    19|    data = 5; @(posedge clk); temp_data <= cb.data; #20; // 5 input skew #3
    20|    data = 6; @(posedge clk); temp_data <= cb.data; #19;
    21|    data = 7; @(posedge clk); temp_data <= cb.data; #20; // 7 input skew #1
    22|    #300; $finish(2);
    23|  end
    24|
    25|endmodule: testbench
  • 結果(output skew)
    出力が 4ps遅延しているのがわかると思います。

    20130729_sv_clocking_wave1.png
  • 結果(input skew)
    input skew = #2に対して、#3前に 値が5に変化しているため代入されています。
    一方 値=7の場合には clock edgeから見ると #1なので、取り込まれていません。

    20130729_sv_clocking_wave2.png

という感じです。

関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

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

カレンダー
09 | 2017/10 | 11
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
アクセス人数