VDHLとVerilogをミキシングする際に、大文字と小文字の区別が問題になりました。VHDLでVerilogモジュールを使用しているときの大文字と小文字の区別
パラメータ「APB_ADDR」は大文字で、ワイヤ「apb_addr」は小文字で記述します。 Verilogは大文字と小文字を区別するため、2つの式が異なる場合があります。
module verilog_module #(
...
parameter APB_ADDR = 32,
...
) (
...
input wire [APB_ADDR-1:0] apb_addr,
input wire apb_sel,
input wire apb_enable,
input wire apb_write
....
);
今私はVDHLでモジュールをインスタンス化したい:
inst0: entity work.verilog_module
GENERIC MAP (
APB_ADDR => APB_ADDR_WIDTH
)
PORT MAP(
...
apb_addr => apb_addr,
...
);
合成は失敗します。一般的な "apb_addr"は知られていません。 VHDLは大文字と小文字を区別しません。
一般的なAPB_ADDRにはどうすればアクセスできますか?私はVerilogで書かれたIPコアを変更したくありません。
名前の衝突です。 IPコアの汎用ポートまたはポートの名前を変更します。アドレスバスはアドレスバスなので、その名前が適切です。しかし、ジェネリックは幅なので、その名前は不適切で混乱します。だから、名前をAPB_ADDR_WIDTHに変更します。 –
したがって、IPコアを変更する以外の方法はありませんか? – Timm
総称を無視することができます。私が見る限り、それは冗長です。その値を 'apb_addr'ポート属性から導出し、あなたが一人で放置したい部分を書いた人がジェネリックとバスを正しくステップしてくれることを願ってください。 –