LoginSignup
1
0

More than 5 years have passed since last update.

[SystemVerilog]svlibがバージョンアップしてた。

Last updated at Posted at 2014-06-17

はじめに

なんとなくVerilab社のサイト眺めてたら、10日強前にsvlibが0.3バージョンアップしてた。
ちょっと試してみることにした。

前のバージョンとの差異

けっこうなメソッドが盛られている。ただし、ドキュメントに履歴が無いのでよくわからない。以前紹介した記事はこちら。
ここではドキュメントで新規に追加された「Simlation Environment Queries」を試してみる。

Simlation Environment Queries

クラスはこんな感じで定義されている。

class Simulator extends svlibBase;
  static function string getToolName();
  static function string getToolVersion();
  static function qs getCmdLine();
endclass

functionの名前にある通り、シミュレーターの名前やバージョン、今走っているコマンドの引数とかをゲットすることができる。
「qs」という型はsvlibで定義されているもので、string型のqueueである。

でかいチップの開発だと、シミュレーションコマンドはシェルスクリプトやperlでラップされててわからないときがあるかもしれないこので、getCmdLine()は重宝するかもしれない。

サンプル

tb.sv
`timescale 1ns/1ps

`include "svlib_macros.svh"

module tb ();

  import svlib_pkg::*;

  string  c[$];

  initial begin

    $display("%s", Simulator::getToolName());
    $display("%s", Simulator::getToolVersion());

    c = Simulator::getCmdLine();

    do
      $display("%s", c.pop_front());
    while(c.size()!=0);

    $finish(1);

  end

endmodule

これを実行すると、シミュレータ名、バージョン、コマンドオプションが出力される。

おわりに

getToolVersion()は、シミュレーターのバージョンによって処理を替えるとか使えるかもしれない。でも返してくるのはstringなのでatoiとかいろいろ付け加える必要があるかも。
あと、コードをざっと拝見すると即時アサーションが入っているので、ModelSim-ASEだと動かないかも??

ウソでした。EDA Playgroundで動くので、Modelsim-ASEでもいけます。

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