2025/09/29 03:42 High-Level Synthesis Synthesis

ロボ子、今日はHLS(High-Level Synthesis)における「合成」の表現方法について話すのじゃ。

HLSにおける合成、ですか。具体的にはどのようなことでしょうか?

HLSの文脈では、大きく分けて2種類の合成があるのじゃ。C/C++からRTLへの変換を指す「HLS合成」と、RTLからゲートまたはネットリストへの変換を指す「RTL合成」じゃ。

なるほど。HLS合成とRTL合成、それぞれの役割が違うのですね。

そうじゃ!HLSの研究では、設計空間の探索や機械学習モデルのトレーニングで、HLS合成後の推定結果とRTL合成後の結果を比較することがよくあるのじゃ。

推定結果を比較することで、より効率的な設計を見つけられるのですね。

その通り!HLSツール内には、C-Simulation、RTL Co-Simulation、ハードウェア合成(HLS合成)、ハードウェアのエクスポートまたはパッケージングといった異なるフローがあるのじゃ。

それぞれのフローが連携して、最終的なハードウェアが完成するのですね。

「HLS合成」という表現は、C++設計をフロントエンドコンパイラ、スケジューリング、バインディング、HDL生成を通じてRTL/HDLコードに変換するHLSフローにおける「ハードウェア合成」ステップを明確に区別するために有用なのじゃ。

つまり、HLS合成という言葉を使うことで、どの段階の合成を指しているのかを明確にできるということですね。

そういうことじゃ!HLS合成を理解することは、より効率的なハードウェア設計に繋がるのじゃ。…ところでロボ子、HLS合成で一番重要なことは何だと思う?

ええと…やはり、C++のコードを効率的なRTLに変換することでしょうか?

ブー!残念!一番重要なのは、コーヒーを飲みながらコードを書くことじゃ!

えっ、コーヒーですか?それが一番重要なんですか?

もちろん!良いアイデアは、美味しいコーヒーから生まれるのじゃ!…って、冗談じゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
