manahiyoの気まぐれ

備忘録を兼ねたブログです。

ChatGPTで割り算のVHDLコードを生成してシミュレーションしてみた

はじめに

ChatGPTでVHDLコードが書けるのはこれまで試しましたが、単純な演算子では実装できない割り算をさせたらどうか、というのを試してみました。

割り算回路を頼んでみる

プロンプトは次の通りです。

Please write me the VHDL code for division. The number of bit is 8.

GPT3.5では下記のように演算子'/'を使ったコードを提示してきます。これではシミュレーションはできてもコンパイルして実際にFPGAで動作させることはできません。

ではGPT-4ではどうか。

下記は一部だけですが、ステートマシンでstart信号をトリガとして計算が終わるとdone信号が'1'になるという感じのようです。なんかちゃんと割り算回路を作っていそうな雰囲気。

コンパイルではエラーが出て、うまくいきませんでしたが、エラーを指摘したところ修正したものを提示してきました。コンパイルも通りました。

後で気が付きましたが、doneをリセットしていないという致命的なバグが潜んでました。まぁテストすればわかることではありますが。

割り算回路のテストベンチを頼んでみる

特定の値の割り算をやってみる

まずは100/23=?のテストベンチを作ってもらいます。

Can you create a testbench that calculates 100 divided by 23 for that code.

結果(一部) ぱっと見でもstartトリガを入れて、doneが1になるまで待つという形でできているのがわかります。

何回かエラーを指摘して修正してもらいましたが、無事下記の通りシミュレーションで正解が得られました。

ではすべての組み合わせを計算するテストベンチは作れないか頼んでみました

Is it possible to create a testbench that computes all combinations?

結果(一部) 見ての通りforで回してます。レポートも出しているところが偉い。

今回もいくつかミスが含まれており、指摘して修正してもらいました。ただ一部は1行変えるだけだったので面倒なので自分で手を入れました。

レポート出力もいい感じです。

感想

つい1発で出来上がることを期待してしまいますが、トライアンドエラーが必要になることを実感しました。ただ基本的に人間が作っても何らかエラーなり修正をして作っていくことを考えれば、必要な作業なのかもしれません。この辺のフィードバックがAI自身でできるようになるとまた大きく進化するような気がしました。