Vivadoを使ってFPGAの開発をしているとき、何かの拍子でプロジェクトが開けなくなったことが何度かあった。プロジェクトが何故かRead-onlyモードになり、すべてのIPコアがLockされた状態になって、Synthesis/Implementを含むすべての操作が禁止される状態になることがあった。
Xilinxのフォーラムでも質問が出ていたが、有益な情報はなかった。
https://support.xilinx.com/s/question/0D52E00006lLhAGSA0/vivado-project-converts-to-read-only?language=ja
これまでは、プロジェクトディレクトリを丸ごと削除して、新しくソースをgitからcheckoutしてなんとかやりくりしていたが、ようやく原因と解決方法が分かったので、その備忘録を記録。
(原因)
IPコアのディレクトリに、コンテナ化(Enable Container)したIPコア名と同じ名前のサブディレクトリが存在するときに発生する。
(対処方法)
そのIPコアをコンテナ化しているならば拡張子.xcixファイルだけあれば良いので、同名のサブディレクトリを削除する。
例えば、コンテナ化したmyIP.xcixファイルがプロジェクトにあるならば、myIPという名前のディレクトリは削除する。
このことに気付いてからよくよくTclコンソールをよーく見てみると、ちゃんと原因が出力されていた!
CRITICAL WARNING: [Project 1-635] The core container source file '(プロジェクトのIPが置かれるディレクトリ)/hogehoge.xcix' is sitting next to the IP directory '(プロジェクトのIPが置かれるディレクトリ)/hogehoge'. This configuration is not supported and will lead to unexpected behavior. The project will be opened as read-only. To resolve the issue, please move aside the IP directory and reopen the project.
WARNING: [Project 1-312] File not found as '(プロジェクトのIPが置かれるディレクトリ)/hogehoge.xci'; using path '(プロジェクトのIPが置かれるディレクトリ)/hogehoge.xci' instead.
なぜこんなことになったのかはっきりしたことは覚えていないが、そういえばコンテナ化IPファイル.xcixはバイナリファイルなのでgitでは扱いにくいなと思って、コンテナ化を解除(Disable Container)したことがあった。そのときに作られた(だろう)サブディレクトリが残っていたのかも知れない。
0 件のコメント:
コメントを投稿