FC2ブログ

[SystemVerilog] 文字列の連結

SystemVerilogから追加された String型について。

文字列の連結について LRMに記載があります。
「Table 6-9 String operators」

{Str1,Str2,...,Strn}

ということで、試してみました。
※ModelSim-ASE 10.1dです。

module testbench ();

  initial begin
  ¦ string str_sub = "--- test [";
  ¦ string str = {str_sub, "No", "] = 100"};
  ¦ $display("%s",str);
  end

endmodule: testbench

実行結果はこちら。

# --- test [No] = 100

連結できてますね。
次に、$displayに直接書くと

module testbench ();

  initial begin
  ¦ $display({"--- test [","No", "] = 100"});
  end
endmodule: testbench

そして、実行結果が・・・

# 1007468942646978665954445094271410650903294000

なんとこんな数字達が・・・

  ¦ $display("%s", {"--- test [","No", "] = 100"});

ってやると、綺麗に表示されます。
ほぉー

[勉強会] 第41回 SystemVerilog読書会を行いました。

2013/12/21(土) 22:00~ より第41回 SystemVerilog読書会を行いました。
ログはこちらにあります。


第41回 SystemVerilog読書会


内容

今回は前回の 「25. Interfaces」の続きの Modports からでした。
Modports というか Interfaceの接続記述ってかなりラクですね。
人が作ったら理解するのに苦労しそうです(笑)


「extern forkjoin」もかなり使えそう。


キーワード

modport extern forkjoin


次回

  • 日時:2013/12/28(土) 22:00~
  • 内容:26. Packages

誰でもいつでも参加可能ですので、時間が空いた際には是非参加してみてください。


[SystemVerilog] 様々なメッセージをパッケージに

この記事は HDL Advent Calendar 2013の 25日目の記事です。


Marry Christmas


レポートパッケージライブラリ

ちょっとした表示に面白いかなと思って作ってみました。
こちらのコードは以下の GitHubに公開しています。
良ければ、プルリク ください!!!
みんなで様々なものを作れればと思ってます。


github.com/Kocha/systemverilog-report-package


使い方

最初の画像のコードはこちらになります。

`include "report_macros.svh"

module testbench ();

  import report_pkg::*;

  initial begin
    info_msg("Marry Christmas!!!");
    info_msg("Marry Christmas!!!", "$");
    info_okey;
  end

endmodule: testbench
  • function info_msg(string msg, string key = "*")

第一引数がメッセージ内容で、第二引数がそれを囲う装飾文字(default="*")の指定になります。


他のメッセージについては、コードを見てもらえればどういう表示か分かると思います。
出来れば、もっと色んなものを作りたかったのですが、
今後、ちびちびと追加していきたいと思います。


HDL Advent Calendar 2013

2013年参加していただきありがとうございます。
去年は「SystemC Advent Calendar 2012」をやったのですが、なかなかのものでした。
今年は盛況でたくさんの方に参加していただいたので、
実りあるカレンダーになったのではないかと思います。


参加してくださいました以下の方々に改めてお礼申し上げます。

  • tethys_seesaaさん
  • ksmakotoさん
  • marsee101さん
  • mizutomoさん
  • natsutanさん
  • ginnyu_teiさん
  • h_hiraiさん
  • imatatsuさん
  • Vengineerさん
  • hiratchさん
  • cpu_labsさん
  • hiyuhさん


また来年も Advent Calendar やりましょう!!!
今回、参加出来なかった方も来年やりますので、準備お願いします(・ω<)


では、Merry Christmas!!!

[SystemVerilog] bind での接続

bind にて接続を記述することが出来ます。

  • サンプルコード

  • module sub_mm();
      initial begin
        #2;
        $display("%m");
      end
    endmodule
    
    module sub_m(input reg[3:0] in);
      sub_mm hogehoge();
      initial begin
        #1;
        $display("%m");
        #3;
        $display(in);
      end
    endmodule
    
    module testbench ();
    
      reg[3:0] tmp=10;
    
      // sub_m hoge(.in(tmp)),
      //       mumumu(.in(tmp));
      binding m_bind();
    
      initial begin
        #100;
        $finish(1);
      end
    
    endmodule: testbench
    
    module binding();
    
      bind testbench sub_m hoge(.in(tmp));
      bind testbench sub_m homuhomu(.in(tmp));
    
    endmodule
  • 実行結果

  • # testbench.homuhomu
    # testbench.hoge
    # testbench.homuhomu.hogehoge
    # testbench.hoge.hogehoge
    # 10
    # 10
    


説明

binding モジュールを作成して、その中で接続を記載してます。

bind testbench sub_m hoge(.in(tmp));

テストベンチと、sub_mモジュールの hoge の in信号に テストベンチの内部変数(tmp)を接続しています。


複数インスタンスしたい場合も IEEE1800-2012に記載があるのですが、 今回だとうまく記述出来なかった。。。

  • LRM p703

bind cpu: cpu1, cpu2, cpu3 fpu_props fpu_rules_1(a, b, c);

[勉強会] 第40回 SystemVerilog読書会を行いました。

2013/12/14(土) 22:00~ より第40回 SystemVerilog読書会を行いました。
ログはこちらにあります。


第40回 SystemVerilog読書会


内容

今回は 「25. Interfaces」を読みました。
SystemVerilogの目玉の一つです。
皆さんしっかり Interface使いましょう!
っといいつつ自分でLRM読んでみると知らないことだらけだった。


キーワード

interface, endinterface, modport, clocking, import. export, forkjoin


次回

  • 日時:2013/12/21(土) 22:00~
  • 内容:25.5 Modports

誰でもいつでも参加可能ですので、時間が空いた際には是非参加してみてください。


HDL Advent Calendar 2013」も、ぜひご参加ください!

プロフィール

Kocha

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

カレンダー
06 | 2020/07 | 08
- - - 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
アクセス人数