LoginSignup
1
0

More than 5 years have passed since last update.

[SystemVerilog]Sublime Text用のUVMスニペットを書いてみた。

Posted at

こんにちは、相変わらずメインエディタはSublime Text 3な @tethys_seesaa です。

はじめに

問題発生

二ヶ月以上前からUVMを放置しているんですが、いろいろ進めていて、いま 問題が発生して停滞しています。
原因は特定できたのですが、解決策がわからず…。
周りに知っている人いないし、いやー、UVMって 本当に難しいですね。

UVMを書き始めてみて

コードを書き始めてみて、反復的な表現が多いことに気づきました。
これはスニペットを用意した方がいいと感じ、これまで書いてきたコードを参考に、いくつかのUVMパーツのスニペットを今回書いてみました。
むろん、エディタはSublime Text 3です。
今回は、Ubuntu 14.04 LTSでやってみました。

参考

必要なもの

  • Sublime Text 3
  • SystemVerilogプラグイン

UVMバージョン

ここでは1.1dです。
最近1.2が出たようですが、アプリレイヤーと違ってこの界隈は動きがのろいから、IntelやARMのようなお金持ちが1.2を使い始めるまで対応する必要は無いでしょう。

コード

スニペットなんで、コーダーの好みによりけりだから参考程度に。
ここではuvm_sequencerを例にとってみます。

uvm_sequencer.sublime-snippet
<snippet>
    <name>UVM sequencer</name>
    <content><![CDATA[class ${1:${TM_FILENAME/(.+)\..+|.*/$1/:name}} extends #(${2:uvm_sequence_item}, ${3:REQ}) uvm_sequencer ;

//-------------------------------------------------------------------------------
// Factory register
//-------------------------------------------------------------------------------

  `uvm_component_utils(${1})
  //`uvm_component_utils_begin(${1})
    /**** `uvm_field_* macro invocations here ****/
  //`uvm_component_utils_end

//-------------------------------------------------------------------------------
// Functions and Tasks
//-------------------------------------------------------------------------------

  // Constructor
  function new(string name = "${1}", uvm_component parent=null);
    super.new(name, parent);
  endfunction

endclass]]></content>
  <tabTrigger>uvm_sequencer</tabTrigger>
  <scope>source.systemverilog</scope>
</snippet>

これを~/.config/sublime-text-3/Packages/Userに保存します。

実行

空のsvファイルを用意します。
st0.png

初めに、「u」を打ち込むと、それをアタマに持つスニペット一覧が出てくるので、ここでは「uvm_sequcener」をカーソルキーで選択し、tabキーで確定させます。
st1.png

すると、こんな感じでuvm_sequencerの雛型ができます。ここで、「my_uvm」という単語が 複数選択されている ことがわかります。
st2.png

なので、「my_uvm」を一気に複数同時に変えることができます。
st3.png

変えた直後、tabキーを押すと、次の変更すべき単語にフォーカスします。この例ではuvm_sequence_itemになります。
st4.png

こんな感じで単語を入れてtabキーを押すと最後はこのようになります。
st5.png

終わりに

不慣れなもんで、UVMは手で書いていくとコードがどんどん汚くなることがわかり、ここでは一歩引いて、スニペット群を作ることにしました。
スニペットをチームで共有して、書式を統一してもいいかもしれません。コードの生産性も上がりそうです。

画面を見るとお気づきかもしれませんが、他のUVMパーツも作ってあります。
最初は全部載せようかと思いましたが、Qiitaにコードの折りたたみ機能が無いため、1個だけにしました。 リクエストがあれば残りも載せますので、ご連絡下さい。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0