忍者ブログ

雑記

【SystemVerilog】【SVA】bind

雑記 > > [PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

【SystemVerilog】【SVA】bind

雑記 > codeのメモ > 【SystemVerilog】【SVA】bind

SVA bindに関するパラメータ

パラメータ付きのmoduleにbindするときに戸惑ったことがあったのでそのメモ

通常のbindは以下の用な記述

bind cpu fpu_props fpu_rules_1(a,b,c);

Where:

  • cpu is the name of module.
  • fpu_props is the name of the program containing properties.
  • fpu_rules_1 is the program instance name.
  • Ports (a, b,c) get bound to signals (a,b,c) of module cpu.

困った事例というのは、インスタンスが複数箇所あり、インスタンス毎にパラメータ値を上位階層から取得していた場合。例えばport cにbit幅があり、そのbit幅をパラメータで設定していた場合

アサーション用のファイルをbindするときにport名は.*を使用して基本的には記述を省略してるのが、パラメータではそれができず、以下のような記述はERRORになってしまう。

 bind cpu fpu_props #(.*) fpu_rules_1(.*);

結局パラメータに関しては以下の様にパラメータを取得する記述が必要だった。

bind cpu fpu_props #(.P_C_WIDTH(P_C_WIDTH)) fpu_rules_1(.*);

Where:

  • 一つ目の.P_C_WIDTHはSVAファイル内で宣言しているパラメータ名
  • 二つ目のP_C_WIDTHはmodule cpuが各インスタンスで取得しているのパラメータ値

関連記事

Code memo home

コメント

ただいまコメントを受けつけておりません。

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30