VC707 SiTCPサンプルコードの合成ができません

こんにちは。
VC707を使って研究を行っている者です。

VC707用のSiTCPのサンプルコードを合成してみようとしていますが、Vivado 2021.2 で合成が永遠に止まらない問題が起きています。
VivadoもXilinxホームページからダウンロードして設定は何もいじっていませんし、SiTCPのサンプルコードはgithub上にあるのをそのまま使いました。ソースコードと制約ファイル両方とも修正していません。

何かエラーのメッセージがあるわけでもなく、ただ1日中おいても合成が終わらない状態(CPUが途中から働きません)になりますが、Vivadoのバージョンによって使用できない場合があるのでしょうか。

ちなみに、合成が進まなくなる段階はTranslation netlistのところです。

どうぞよろしくお願いいたします。

弊社でもWindows10 PC(64bit)上のVivado 2021.2で上記ソースコードを使用して試してみましたが、bitファイルの生成まで行うことが出来ました。
GUI上で[Run Synthesis]や[Generate Bitstream]をクリックすると[Launch Runs]の表示が出ますが、[Number of jobs]の数を大きくするとPCに負荷がかかり合成に時間がかかるかもしれません(弊社ではメモリ8GBのPCでは通常2に設定しています)。
また、個人的な経験として、以前Vivado2020.2で合成が何時間経っても終わらないことが1回だけありましたが、その時は合成をキャンセルしてもう一度合成を開始したところ、問題なくbitファイルの生成まで進みました(ソースコードは上記のものとは異なります)。
その他、何か情報がございましたら書き込みをお願いいたします。

コメントありがとうございます。
特にエラーメッセージはなく、共有できるログはないのですが、合成時の環境と設定を共有します。
OS: Windows10 64bits
CPU: AMD Ryzen 9 5900HX
RAM: 64GB
Vivado version: 2021.2
Vivado Jobs: 8
この設定で、途中でCPUをほぼ使わなくなって、合成が終わらない状態になります。。
私の場合、キャンセルしてまた合成を開始しても同じところで詰まりました。

「Vivado Jobs: 8」とのことですが、これを4または2にして試してみていただけますか?
こちらで試した環境は以下の通りですが、bitファイルの生成まで10分~15分程度で完了します。
OS: Windows10 64bits
CPU: Intel Core i7-3770
RAM: 24GB
Vivado version: 2021.2
Vivado Jobs: 4

ジョブ数を4にして回して1時間ぐらい経っていますが、まだ終わらないです。
ちなみに、現在止まった部分は
- Tclコマンド
launch_runs synth_1 -jobs 4

- Log出力
*** Running vivado
with args -log vc707sitcp.vds -m64 -product Vivado -mode batch -messageDb vivado.pb -notrace -source vc707sitcp.tcl

****** Vivado v2021.2 (64-bit)
**** SW Build 3367213 on Tue Oct 19 02:48:09 MDT 2021
**** IP Build 3369179 on Thu Oct 21 08:25:16 MDT 2021
** Copyright 1986-2021 Xilinx, Inc. All Rights Reserved.

Sourcing tcl script ‘~/AppData/Roaming/Xilinx/Vivado/Vivado_init.tcl’
source vc707sitcp.tcl -notrace
create_project: Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 1412.906 ; gain = 0.000
Command: synth_design -top vc707sitcp -part xc7vx485tffg1761-2
Starting synth_design
Attempting to get a license for feature ‘Synthesis’ and/or device ‘xc7vx485t’
INFO: [Common 17-349] Got license for feature ‘Synthesis’ and/or device ‘xc7vx485t’
INFO: [Device 21-403] Loading part xc7vx485tffg1761-2
INFO: [Synth 8-7079] Multithreading enabled for synth_design using a maximum of 2 processes.
INFO: [Synth 8-7078] Launching helper process for spawning children vivado processes
INFO: [Synth 8-7075] Helper process launched with PID 22480

...(中略)...

Finished Writing Synthesis Report : Time (s): cpu = 00:00:21 ; elapsed = 00:00:22 . Memory (MB): peak = 1831.617 ; gain = 418.836

Synthesis finished with 0 errors, 0 critical warnings and 3 warnings.
Synthesis Optimization Runtime : Time (s): cpu = 00:00:13 ; elapsed = 00:00:20 . Memory (MB): peak = 1831.617 ; gain = 284.117
Synthesis Optimization Complete : Time (s): cpu = 00:00:21 ; elapsed = 00:00:22 . Memory (MB): peak = 1831.617 ; gain = 418.836
INFO: [Project 1-571] Translating synthesized netlist
Parsing EDIF File [~/SiTCP_Sample_Code_for_VC707_SGMII/WRAP_gig_ethernet_pcs_pma_0.edf]
Finished Parsing EDIF File [~/SiTCP_Sample_Code_for_VC707_SGMII/WRAP_gig_ethernet_pcs_pma_0.edf]

です。
同じく、Githubからダウンロードしたサンプルコードの中身は修正しておらず、制約ファイルもそのまま使用しております。

先程こちらの環境でログを確認したところ、コピーしていただいたメッセージの次に来るのが以下です

Release 14.7 - ngc2edif P_INT.20191124 (nt64)
Copyright (c) 1995-2013 Xilinx, Inc. All rights reserved.
Reading design fifo_generator_v11_0.ngc …
WARNING:NetListWriters:298 - No output is written to fifo_generator_v11_0.xncf,
ignored.

上記から、サンプル内でTCPデータ受信用として使用しているFIFOに起因する可能性があります(このFIFO自体はおそらくISE14.7で作成したものだと思います)。弊社のPCにはISE14.7もインストールされているので、それが関係するかもしれません。

お手数ですが、一度「fifo_generator_v11_0」をインスタンシエーションしないようにTOPモジュールを書き換えて(もしくは同様のものをVivadoのIP Catalogから作って)試してみていただけますか?

fifo_generator_v11_0をインスタンシエーションしないようにTOPモジュールを書き換える方法と、VivadoのIP catalogからfifo_generator v13.2をインスタンシエーションする方法両方ともダメでした、、
30分ぐらい待っていますが、同じ部分で合成が進まなくなります。

「WRAP_gig_ethernet_pcs_pma_0」モジュール等、モジュールのどれかをコメントアウトすることで合成できるかを確認していただいてもよろしいでしょうか。
また、同じPCで他のサンプルコード(例えば GitHub - BeeBeansTechnologies/SiTCP_Sample_Code_for_KC705_GMII: This is the SiTCP sample source code (GMII version) for KC705 communication confirmation. · GitHub 等)の合成を試していただくことで何か分かるかもしれません。

念のため[Number of jobs]の2または1への設定も試してみてください。

返信が遅くなりました。
他のモジュール(VC707サンプル基準、AT93C46_IIC、gig_ethernet_pcs_pma、RBCP)もそれぞれまた全部disable状態にしてみたのですが、SiTCPのSiTCP_GMII_XC7V_32Kが接続されていると、同じく合成が終わらなくなります。
逆に、SiTCP_GMII_XC7V_32Kをdisable状態にしておくと、他のモジュールが全部インポートされていても合成ができました。

他のボードのサンプルコードKC705_GMII、VC707_SFP等は合成が終わらなかったのですが、10GEthernetを使うXGはSiTCPXG_Sample_Code_for_VC707合成が終わりbitstream生成までできました。

job数を1にしても改善できませんでした。

よろしくお願いいたします。

ご連絡ありがとうございます。
依然として弊社の環境で再現できていないのですが、SiTCPで合成出来ずSiTCPXGで合成できるとのことですので、度々お手数をおかけしますが、SiTCPのライブラリ(ネットリスト)のファイル形式をngcからedifへ変換することを試してみていただけますか?
XilinxのUG911(v2020.2)のP9に書いてあるコマンド(exec~)です。

比較的古いWindows10 PC( 64bit、CPU:Corei5-4200U、メモリ:6GB)で以下の(1)(2)を確認してみました。
(1)Vivado他バージョンのインストールの有無
⇒このPCにはVivado2019.2とVivado2021.2をインストールされていましたが、2021.2で「SiTCP_Sample_Code_for_VC707_SGMII」のプロジェクトを作成する際、[add constraints]が終わらない状態が継続しました(3回の試行で3回発生)。そこで2019.2をアンインストールしたところ通常通り[add constraints]をすることができたため、PCによってはVivado2021.2と過去のバージョンとの共存で何らかの支障が出る可能性があります。
※先日弊社で確認した別のPCでは、他のバージョンのVivadoがインストールされていても問題なく合成出来ました
(2)ISEのインストールの有無
⇒ISEをアンインストール後にVivado2021.2で合成出来たため関係なし

その他、AMD RyzenまたはBIOSバージョン?とVivadoの相性に関してこのような事例(https://support.xilinx.com/s/question/0D52E00006iHiJN/new-ryzen-9-pc-new-vivado-20202-crash-crash-crash-?language=ja)があるようですが、Vivadoのバージョンおよび現象が異なるため、今回の件と関係するかどうかは不明です。

よって、現段階では以下のいずれかに起因するものと考えております。
●ライブラリ(ネットリスト)のファイル形式 ※弊社では再現できず
●他バージョンのVivadoとの共存 ※弊社ではPC1台で(合成時ではないが)問題が発生
●CPUまたはBIOSバージョン ※詳細は不明

コメントありがとうございます。
PCの環境・Vivadoのバージョンと、SiTCPとの相性があるようですね。現在開発中のファームウェアにSiTCPを搭載しようと思っていて、他の機能は今のところ正常にbitstream生成ができているため、最後にSiTCPの合成ができるバージョンを探そうと思います。

こんいちは。
しばらく他の作業でこちらのissueの追究ができなかったんですが、先日色々試してみたところ、どうやらWindows 11(若しくは、特定のWindowsのバージョン)とVivadoの相性の問題で起こった原因不明のエラーのようなものだとわかりました。実際Vivadoの公式のページにもWindows11はまだサポートしていないOSだと書いてあるのに、そこを見逃していました。
とはいっても、すべてのSiTCPのIPがWindows11で合成できないわけでもなく(実際僕が使っているVC707用のSiTCGXGは今のWindows11でもbitstreamの生成までできました)、以前おっしゃったように古いWindows10でも何らかの不具合があるみたいなので、どのバージョンでどこがどう問題になっているのかは、全く分かっていない状況です。
現在はWSLを使ってLinuxカーネル上で作業していますが、SiTCPを入れても問題なくbitstreamの生成ができています。
今後もどうぞよろしくお願いします。