忍者ブログ

雑記

【SystemVerilog】【SVA】bind

雑記 > codeのメモ > 【SystemVerilog】【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が各インスタンスで取得しているのパラメータ値

    関連記事

    コメント

    カレンダー

    11 2017/12 01
    S M T W T F S
    1
    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
    31