FPGA競技について
更新情報 
- 2025-05-30 マインスイーパーシステム・モジュールのダウンロード ができるようになりました。また、サンプル盤面データ の説明を追加しました
- 2025-04-25 初版を公開しました
FPGA 競技の基本方針
- FPGA 競技は 2024年度からスタートした新しい競技 です。以前は配置配線問題を模した「ナンバーリンク」の解を自動で求めるシステムや数値関数の値を求める演算器など、アルゴリズムやアーキテクチャの設計を行うコンテストを行って参りました。昨年度からコンテストの趣向を変えて、プログラミング競技 と FPGA競技 の2本立てになりました。コンテストの目的としてアルゴリズムデザインの方向性は変わりませんが、ソフトウェアだけでなく、ハードウェアの分野においても 論文投稿ができるように裾野を広げています。
- FPGA 競技についてはこれまでの応募件数も少なく、競技として習熟していないことから、昨年と同様、競技の大枠のみを設定し、一律の動作環境や実装条件などは定めない方向です。競技的な一律指標での優劣よりもむしろ、実装手法やアイディアの新規性、独創性など多彩な視点における「アルゴリズムデザイン」を提案していただき、論文投稿へ繋げていく場としてご活用いただければと思います。
- このような背景から、パフォーマンスも自己申告制としたいと思います。当日はライトニングトークもありますので、アピールポイントなど自由に発表していただければと思います。
- 実装のきっかけをつかんでいただけるように、一案としての実装仕様 を以下に定めていますので、ご参考になさって下さい。
- プログラミング競技と FPGA 競技は 同じテーマ を扱っています。昨年度は「ナンバープレイス・パズル(ナンプレ)」でしたが、今年度のテーマは「マインスイーパー」です。
- 事務局側からは参考程度の位置付けとして マインスイーパーシステム・モジュールのサンプル を提供させていただきます。使用は必須ではありません ので、自由にハードウェアを設計していただければと思います。
競技概要
- 「マインスイーパー」の問題を自動的に解く ハードウェア(ソルバ) を設計して下さい。
- Verilog-HDL 等を用いて開発いただき、可能であれば FPGA ボード等で動作させて下さい。
- FPGA への実装が難しい場合は論理シミュレーションや合成結果のみでも構いません。
- FPGA ボード等の環境は参加者ご自身でご用意いただければと思います。
- 「マインスイーパー」の基本ルールは プログラミング競技と同一 です。ただし、盤面の表現の仕方 や データ構造 、セル値の表現 等はハードウェアに合わせて自由に変えて下さい。また、地雷をオープンした場合の扱いやスコアのカウント方法もプログラミング競技とは異なります。ルールと得点 をご参照下さい。
ハードウェアの入力
- 盤面データ が入力となります。プログラミング競技で使用する盤面データと同じフォーマットのテキストファイルです。
- ホストPCとFPGA間で通信を行い、盤面データのテキストファイルをFPGAに送り込む等の方法により、動作中のFPGAに問題を与えます。
- FPGA へのデータ送信が難しい場合は、盤面データをFPGA内のROMに予め書き込んでおいても構いません。
- 論理シミュレーションの場合はシミュレータに合わせて盤面データを入力してください。
ハードウェアの出力
- ホストPCとFPGA間で通信を行い、最終盤面のテキストファイルをホストPCに送り出す等の方法により、ホストPC上で解答データを取得します。
- 実機での動作確認が難しい場合は、論理シミュレータを用いてRAMに格納される解答データを取得しても構いません。
- 上記以外の方法による解答データの取得も可能です。
ルールと得点 
- FPGA 競技では 地雷以外の全セルがオープンされた状態 で終了となります。セル選択の過程で地雷セルをオープンした場合も含まれます。以下の観点において総合的にパフォーマンスを評価します。
- オープンした地雷セルの数
- セル選択に要したクロックのサイクル数
- 研究の新規性、有効性、ポスター完成度など
マインスイーパーシステム・モジュールについて 
- 参考程度の位置付けとしてマインスイーパーシステム・モジュールを提供させていただきます。使用は必須ではありません。
- マインスイーパーシステム・モジュールの詳細は、アーカイブ中の readme.md をご参照下さい。
- マインスイーパーシステム・モジュールは以下からダウンロードいただければと思います。
==> マインスイーパーシステム・モジュールのダウンロード
サンプル盤面データについて 
- サンプルの盤面データは マインスイーパーシステム・モジュール に含まれていますので、ご参考になさってください。
- サンプルプログラム (testbench.v) では以下のファイルを読み込みます。
- board_size.txt … 盤面サイズ情報
- board.txt …….. 盤面データ
board_size.txt 3 5
board.txt 0F 02 01 01 01 01 02 0F 02 01 00 01 01 02 0F
- サンプルプログラムの board モジュールは以下のポートを持っています。
module board ( input wire clk, input wire reset, input wire [3:0] row, // 行 input wire [3:0] col, // 列 input wire select, // マス選択 output reg [7:0] board_state, // セルの状態 output reg [2047:0] current_board // ボードの状態 );
- ボードデータの各セルは下記のように設計されています。各セルは 8-bit で構成されており、上位4ビットはセルがオープンされたかどうかの判定に使用しています。また、下位4ビットは周囲の地雷の数を保持しています。
```
- board_state[7:5] : Reserved(未使用)
- board_state[4] : セルのオープン情報 (0x0 で未オープン、0x1 でオープン)
- board_state[3:0] : 周囲の地雷の数(0x0 - 0x8), 地雷(0xF) ```
- オープンされていない地雷セルは 0x0F となります。
- オープンされた地雷セルは 0x1F となります。
- オープンされた状態のセルは 0x10 から 0x18 となります。
- マインスイーパーシステム・モジュールでは全てのセルの値が 0x0F、0x10 から 0x18、0x1F のいずれかになっていれば終了となります。
競技用盤面データの提供について 
- FPGA 競技で使用する盤面データはまだご提供できておりません。
- 準備ができましたらこちらのサイトで開示いたしますので、更新情報をご覧いただければと思います。
- 競技用盤面は サンプル盤面と同一 のフォーマットとなる見込みです。
提出方法 
- FPGA 競技の結果を記載する Excel ファイルのサンプル
minesweeper_result.xlsx
がマインスイーパーシステム・モジュール に含まれています。 - 競技用盤面に関する実行結果を
minesweeper_result.xlsx
に記載いただきまして、das”at”sig-sldm.org より、ADC 事務局あてご連絡をいただければと思います。(”at”は@に変換してください)。 - メール本文には「参加者入力フォーム」に記載いただいたお名前もしくはチーム名を明記してください。
- 受領しましたら、ADC 事務局メンバーより返信させていただきます。どうぞよろしくお願いいたします。
- 締め切りは 2025年8月20日(水) です。