Vengineerの戯言

人生は短いけど、長いです。人生を楽しみましょう!

高位合成に使う言語と検証


高位合成の入力言語にはいろいろなものがあります。

ASIC/SoC開発をしている人達にとっては、SystemC/C/C++ですかね。
Cadence、Calypto、NEC(Cyber)などです。
また、FPGA開発のXilinxのVivado HLS、AlteraのOpenCLもそうですね。

Bluespecは、Haskellベースです。

このブログでも何度も取り上げているSynthsijerは、Javaです。

PyCoRAMVeriloggenは、Pythonを使っています。

いろいろな言語が使われていますが、どのフェーズで検証するかが重要です。
たとえば、SystemCで書いたコードをSystemCレベルで検証し、その後、検証しないのであれば、
SystemC vs HDLの等価性検証が必要です。
一方、SystemCで検証しても、HDLで検証するのなら、SystemC vs HDLの等価性検証は必要ありません。

ということは、高位合成で使う言語 vs HDLの等価性検証ができるツールが無いのであれば、
HDLでの検証が必要になります。

高位言語で書いて、HDLに変換後、FPGAに焼いて動いたパチパチ!とお遊びであればいいのですが、
商品を作るのではそうではありません。キチンと検証しないと、商品が市場に出た後修正するのは、
費用が莫大になるだけで無く、信頼にも大きな影響を与えます。

この裏を返せば、面白いことができるのですが、そこはここには書けません。。。