0

Verilog の仕様を読んでいると、パス パルスの指定に関する独特な構文構造に気付きました。具体的には、次の形式のステートメント

PATHPULSE$in_port$out_port = ...;

仕様によると、in_port識別子out_port(\エスケープされた識別子を含む) または括弧で囲まれた[]範囲の識別子のいずれかになります。

括弧を使用して構成をトークン化する際の問題を無視すると、通常の識別子の一部になるPATHPULSE可能性があるため、潜在的なあいまいさの問題が依然として存在するようです。$たとえば、モジュールが次のように宣言されている場合:

module my_mod(
    input foo,
    output bar$baz,
    input foo$bar,
    output baz
);
...

次に、パス パルス ステートメントを指定します。

PATHPULSE$foo$bar$baz = ...;

$どちらが入力ポートと出力ポートを分離しているかを判断する方法はありません。

私の質問はこれです:PATHPULSEこのあいまいさを避けるために構造をトークン化するより良い方法はありますか? それとも、これは Verilog の不足ですか?

4

1 に答える 1

1

これは、PATHPULSE 構文の既知の欠点です。https://accellera.mantishub.io/view.php?id=1050を参照してください。識別子に $ を使用しないことをお勧めします。

エスケープされた識別子は、常にスペースで終了するため問題になりません。

于 2016-08-29T12:54:02.523 に答える