004. uvm_code_helper.rb

3rd release版説明

UVMソースコード記述のヘルパーツールを暫定リリースします。コードはこちらから探してください

一応出力コードを張り付けて検証はしています(抜けがなければいいのですが)。

  • 概要
    • create instance/sequence選択時、indentの調整モードを入れました(idt_swを書き換えてください)(3rd)
    • phasingコードのひな形生成(2nd)
    • コンポーネントの生成記述を標準出力へ出します
      • 複数行(1行1インスタンス)をサポートしています
      • 一応、パラメタライズもサポートしています。周辺のスペースの有無もカバーしているつもり…
  • 使い方
    • コードの最初の方に、idtという変数があります。ここに、インデント用charを入れる(初期値はスペース4つ)と、ひな形生成はこれに従ってインデントしたソースが出ます。create instance/sequenceの方は入れ忘れてリリースしてしまったので、後日修正するつもりです…
    • ツールを起動すると、プロンプトが出ます。
      • 最初の選択肢で、
        • phasing template
        • create instance …①
      • のどちらかを選択します。
    • ①の選択後
      • 文字列入力待ちなので、ご自分のソースコードのUVMクラスのインスタンス記述を貼り付けます
      • 最後に「e (enter)」すると、入力を完了します
      • インスタンス生成なのか、シーケンス生成なのか聞いてきますが、現在はインスタンス生成しか組み込んでいません
      • シーケンスのインスタンスは、UVMクラスライブラリを参考に、2パタン出力します。都合のいい方を使ってください
  • 仕様
    • idt変数は、phasingひな形生成時のみ適用します
    • idt_sw変数は、create instance/sequence機能選択時のみ適用します。trueだと
      • aaa = xxx
      • bbbbbb = yyy
    • のように、=を揃えます。falseだと、
      • aaa = xxx
      • bbbbbb = yyy
    • となります。

実行例

太字:ツールからの問い合わせ

青字:ユーザー入力(例はubusサンプルより)

白黒反転:ツール出力(これをbuild_phaseに貼り付ける)

uvm_code_helper > Please select mode
 1. phasing template
 2. create instance/sequence
2
uvm_code_helper > Please input UVM instance line(s), then 'e' + enter.
  ubus_master_driver driver;
  uvm_sequencer#(ubus_transfer) sequencer;
  ubus_master_monitor monitor;
e
uvm_code_helper > What kind of code do you want to generate ?
 1. create instance
 2. create sequence
uvm_code_helper > 1
driver = ubus_master_driver::type_id::create("driver", this);
sequencer = uvm_sequencer#(ubus_transfer)::type_id::create("sequencer", this);
monitor = ubus_master_monitor::type_id::create("monitor", this);