Ollamaからdeepseekを使って,FPGA開発を行います.ローカルPCにインストールされたベンダの開発環境をエージェントから呼び出します.合成とシミュレーションを行うエージェントループを使って,エージェントにほぼ自律的に開発させます.

●環境構築

▲インストール

Ollamaローカルアプリのインストール(本稿ではローカルLLMは使わない.Ollama Proプランを使える状態にする)

VSCodeのインストール(拡張機能 Ollama,Copilot Agentを使える状態にする)

Quartus Prime Liteをインストール

Questaにライセンスを適用し使える状態にする

Copilot Agent(VSCode)をユーザインターフェースとして使う

▲環境

 OllamaのローカルアプリはPCを操作できない.そこで,Copilot Agentをユーザインターフェースとして利用する.Copilot Agentは,Ollamaローカルアプリとのやりとりに加え,ユーザ入力の受け取り,ローカルPC 内のファイル操作やコマンド実行ができる.

 開発者から見ると,Copilot Agentを通してOllamaに指示し,Ollamaのバックエンドでクラウドのdeepseek(他のクラウドLLMやローカルLLMへの切り替えも簡単にできる)が利用される構成であり,シミュレーションまでのエージェントループができている.

●開発の流れ

▲AIエージェントによる開発ではエージェントループが必須

 コーディングエージェント(CA)は,要求[A]に対して統計的に正しそうなモジュールを生成する.言ってみれば適当にそれらしいモジュール[B]を生成するが,それでも最終的に要求を満たす機能を実装できるのは,テストを繰り返すことでAとBとの差を解消できるからである.CAを使った開発では,BがどのようなものであるかをCA自身に把握させるために,エージェントループが重要になる.

 Altera FPGAの開発では,QuartusとQuestaをPCにインストールしてあれば,エージェント(本稿ではCopilot Agent)によって自動でエージェントループが組まれるので特に考慮することはない(実機デバッグまで組み込む場合は別).しかし,いかにエージェントループが組まれていても,最初から大きな単位で要求すると,収束に時間がかかる.

▲機能単位で実装を進める

 従って,小さな機能単位で要求し,それぞれの機能が確実に動くことを確かめながら開発を進めていくのがよさそうである.

 本稿では,MAX10にLCDを接続し,1つのユーザキーだけで遊べる簡単なゲームを題材にする.次のような流れで各機能を実装していく.各段階でQuestaを使ったシミュレーションが走るので,1手ずつ確実に開発作業を進められる.

・ステップ1:LCDを1色で塗りつぶす(LCDの初期化)

・ステップ2:線の描画

・ステップ3:複数の線を描画

・ステップ4:基本的なゲームシーケンス実装

・ステップ5:ランダムに邪魔な点を配置

 本稿の構成では,FPGAボード実機へのビットストリーム書き込みは手動で行う.

 CAはローカルPC上でコマンド実行できるので,ProgrammerをCLIで操作して書き込みまで自動化することもできるはずである.しかし,本稿では実機動作からのフィードバックをエージェントループに組み込んでいない.JTAGやシグナルタップを使うことで,実機動作をエージェントループに組み込むことも可能だろうが,そこまで行わない場合は,人が実機を見て動作を確認し,その情報をエージェントにフィードバックするので,書き込みについても手動で行えばよいだろう.

Programmerを使ってビットストリームを実機に書き込む

●実装

・ステップ5

初期化処理の最後に,2×2 の大きさの点を20個ランダムな位置に描画してください

ランダムは簡単な疑似ランダム数列で実装してください.

●できたもの

走る線がぶつからないように,タクトスイッチを操作しております

コメントを残す