忍者ブログ

雑記

【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

コメント

カレンダー

08 2018/09 10
S M T W T F S
1
3 4 5 6 7 8
10 11 12 13 14 15
17 18 19 20 21 22
23 24 25 26 27 28 29
30