ニュースブリーフ · 2026年11月12日

Yosys 0.71が文字列を再実装し、MCMパスの乗算器サイズ制限を撤廃

オープンソース合成ツールの11月リリースは内部の文字列格納方式を変更し(プラグインが壊れる可能性あり)、shuffleパスとFPGAターゲットオプションを追加し、大きなcase文でのメモリ不足クラッシュを修正しました。

YosysHQは2026年11月12日、0.70の1か月後にYosys 0.71を公開しました。内部の最大の変更は、共通の接頭辞を重複排除して性能を改善する新しい文字列実装です。リリースノートはプラグインの対応が必要になる場合があると警告し、内部ドキュメントのidstringページを参照するよう案内しています。これに関連して、dumpパスとwrite_rtlilパスに識別子の出力形式を制御する-readableと-smallオプションが追加されました。

多定数乗算(MCM)パスはHCUBアルゴリズムを使うようになり、ノートによれば大きな乗算器での実行時間が改善し、従来の32ビットという最大サイズ制限がなくなりました。新しいshuffleパスは設計オブジェクトを決定論的に並べ替えるもので、下流のフローがオブジェクトの順序に依存していないかを確認するのに便利です。verificおよびread_slangフロントエンドには、FPGAの合成ターゲットを指定する実験的な-targetと-familyオプションが加わりました。write_verilogパスには他ツールとの互換性のための-nodec_attrと-dec_paramが追加されています。修正としては、大きなcasez文および優先順位付きcase文でのメモリ不足クラッシュが解消され、Verificフロントエンドが未対応のSystemVerilogアサーション構文をより確実に検出するようになりました。

本稿執筆時点で、nextpnrに対応するリリースはありません。最新版は2026年8月の0.11.1のままで、iCE40、ECP5、Gowin製品向けオープンフローの配置配線側は変わっていません。

なぜ重要か

Yosysのプラグインを作っている、あるいはそれに依存するツールを使っているなら、本番フローを移行する前に0.71でテストしてください。文字列の変更はC++ API全体で使われる識別子の型に影響します。大半のユーザーにとって実用上の利点はMCMとcasezの修正で、特に定数乗算器をシフト加算ツリーに合成するDSP中心の設計で効きます。-targetと-familyオプションは、商用のVerificフロントエンドとFPGA固有の合成とのより密接な連携を示唆していますが、実験的扱いです。毎月リリースされるということは、ビルドコンテナに固定しているバージョンはおそらく既に古くなっています。