1

Specmanのメソッド呼び出しから配列を返すにはどうすればよいですか?例えば

method a : list of uint is { 
   var data: list of uint;
   .....
   result = data;

};

extend sys {
 var data_sys: list of uint;
 run() is also {
  data_sys = a();
 };
};

私のプリントアウトは、いくつかの要素が配列データやdata_sysとは異なることを示しています。私が逃したことを教えてもらえますか?

4

2 に答える 2

1

投稿したコードはコンパイルされません。さらに print ステートメントを挿入するか、specview でブレーク ポイントを設定して、コードをステップ実行します。プリントアウトを行っているテスト段階を知っていますか? (Specman に生成させるのではなく) 手続き的に data_sys を設定する場合は、生成しない修飾子 '!' を指定する必要があります。

[...]
!data_sys : list of uint;
[...]
于 2009-05-19T02:35:05.067 に答える
1

pls はsscceを提供します。

それがなければ、この非常に基本的な例は次のようになります。

extend sys {
  m() : list of uint is {
    print result.size(); // result.size() = 0
  };

  run() is also {
    var m := m();
  };
};

メソッドは、デフォルトで割り当てられる配列を返すことができます。ポインタによって返されるので、注意してください。

経験則として、計算するときはリストを返すメソッドを避けるようにしてください。メソッドが作成メソッドまたはゲッターでない限り、動的な性質を伝えるために、リストをパラメーターとして渡すようにしてください。

collect_packets(packets : list of packet) is {...};
get_collected_packets() : list of packet is {...};
于 2010-03-15T15:04:01.777 に答える