vivado が reg を割り当てるときに、メモリに割り当てられない、またはパックされた型をアンパックされた型に割り当てることができない問題を解決します。

お金の節約: ソリューション

代入された値がregどのように宣言されている[m:n]間違った位置に配置されていないかを確認しベクトルとして宣言すべきか配列として宣言すべきか、[m:n]変数名の前後どちらに配置すべきかを慎重に検討してください。

お金の節約にはなりますが、下にスクロールして私の旅をご覧ください。役に立ったら、いいねして集めてください〜

背景

特定のレジストリに値を割り当てると、次のプロンプトが表示されることがあります。
vivado はメモリに割り当てることができず、パックされた型をアンパックされた型に割り当てることはできません

Error: cannot assign to memory
Error: cannot assign a packed type to an unpacked type

トラブルシューティングのプロセス

よく調べた結果、regレジスタの型を宣言するときに、宣言が数组ではないことがわかりました向量今すぐ:

/* 出现错误的代码 */
reg reg_tagv_wen[1:0];//声明成了数组,这里即2个1位的reg

/* 修正后的代码 */
//修正完成后,上方赋值语句不再报错。
reg [1:0] reg_tagv_wen;//声明成了向量,这里即1个两位的reg

配列の場合は配列内のどの要素に割り当てるかを明示的に指定する必要があります。ベクトルの場合同時に複数のビットに値を割り当てることができます。

このエラーが発生したのは、当初の意図は2 ビット ベクトルとして宣言することでした、変数名の後の[1:0]間違った位置に配置し配列( 2 つの 1 ビット reg)として宣言したためです。エラー。

解決策は、[1:0]それを前面に移動してベクトルとして宣言することです。

ユニバーサルソリューション

一般的な解決策は、割り当てられた reg がどのように宣言されているか、[m:n]間違った位置に配置されているかどうかを確認し、それをベクトルとして宣言するか配列として宣言するか、[m:n]変数名の前後に配置するかを慎重に検討することです。

おすすめ

転載: blog.csdn.net/weixin_52027058/article/details/128188462