2016-11-29 7 views
0

結核の計画に直面している1つの問題を解決するのを手伝ってください。今、私は私のテストは、このWIDTHパラメータを制御したいUVM TBおよびDUTパラメータコントロール

module Multiplier #(parameter WIDTH = 8) (
    input [WIDTH-1:0] addr, 

: はのは、私のDUTをパラメータと一部の入力ポートを持っているようなものを想定してみましょう。 テストでWIDTHパラメータをランダム化し、そのパラメータをDUTに適用します。そのパラメータ値に基づいて、私のテストベンチ全体がトランザクション信号、ドライバ、モニタなどに変更されます。 このパラメトリックテストを実装する最良の方法は何ですか?

私は、テストクラスにWIDTHパラメータを設定し、そこでランダム化することを検討しています。その後、インスタンス化中にDUTに割り当てます。 TBの場合は、config_dbにrandomizeの値を入れて、エージェントでそれを取得し、configクラスの適切なパラメータに割り当てます。

おかげ ハイク・ナハペト

+0

これは可能でしょうか。あなたの 'uvm_test'は精巧になってから始まり、現時点ではすべてのモジュールがすでにインスタンス化されています。その前にパラメータを設定する必要があります。コンパイル時に '$ urandom'のようなものを使うことをお勧めします – noobuntu

+0

答えをありがとう。あなたは、トップモジュール呼び出しで$ urandomを使用することを意味しますか? – haykp

+0

'$ urandom'は実行時にのみ呼び出すことができると私は信じています。 – noobuntu

答えて

0

私はランダム私のMakefileの変数(または使用しているものは何でもビルド/コンパイルシステム)を生成します。シミュレータに応じて、シミュレーション実行コマンドからパラメータを設定します。

ModelSim: パラメータ値は、ModelSimシミュレータで 'vsim'コマンドで渡すことができます。我々は、すべてのモジュールにグローバルパラメータ値を提供したいと仮定すると:

-gWIDTH=<random_value> 

VCS

-pvalue+hierarchical_name_of_parameter=<random_value> 

すべてのシミュレータは、同等のものを持っています。

+0

ありがとう!しかし、シミュレータコマンドを使用して、私のTBをシミュレータタイプに依存させるようにしたいと思います。(また、私の顧客がどのシミュレータを使用するかわからない – haykp