FPGA競技について
更新情報 
- 2026-06-19 競技用盤面データを公開しました
- 2026-05-28 マインスイーパーVerilog実装サンプルのダウンロード を公開しました
- 2026-04-28 初版を公開しました
FPGA 競技の基本方針
- FPGA 競技は 2024年度に新設した競技 です。従来は、配置配線問題を模した「ナンバーリンク」の解法や、数値関数を計算する演算器の設計など、アルゴリズムおよびアーキテクチャ設計を対象としたコンテストを実施いたしました。コンテストの目的であるアルゴリズムデザインの追求という方向性に変更はございませんが、ソフトウェア分野に加え、 ハードウェア分野においても研究成果の発信(論文投稿)が可能となるよう、対象領域を拡張しております。
- FPGA競技では、対象とする実装環境や利用可能なデバイス、開発ツールが多様であることを踏まえ、競技の基本的枠組みおよびルールのみを設定し、統一的な動作環境や詳細な実装条件は設けません。
- 2026年度は 「プログラミング競技」 と 「FPGA競技」 の二部門を開催し、 共通のテーマ を扱います。今年度のテーマは「マインスイーパー」です。
- 参加者の皆様に実装の着想を得ていただくための一例として、 マインスイーパーVerilog実装サンプル を提供いたします。本テンプレートには、盤面の読み込み機能やランダムセルのオープン処理などの基本的な機能が含まれていますが、解法ロジックは実装されておりません。
- 本テンプレート内の仕様はあくまで参考であり、これに準拠することは必須ではありません。なお、本テンプレートにおける盤面サイズや盤面入力仕様については、今年度の競技ルールに従って実装し、ご活用ください。
問題文
複数の「マインスイーパー」の盤面データが与えられます。各盤面について地雷セルが存在し得るセルを予測しながら、地雷セル以外のすべてのセルを選択することを目指します。以下の「ルール」に従って、可能な限り多くのセルを選択し、高いスコアを目指して下さい。
競技概要
- 「マインスイーパー」の問題を自動的に解く ハードウェア(ソルバ) を設計してください。
- Verilog-HDL などを用いて開発してください。FPGA ボードなどで動作させることを推奨いたします。
- FPGA への実装が難しい場合は、論理シミュレーションまたは合成結果のみでも差し支えありません。
- FPGA ボードなどの環境は、参加者ご自身でご用意ください。
- 「マインスイーパー」の基本ルールは プログラミング競技と同一 です。
ルールとスコア 
- 1盤面あたりのスコアは、-1点~1点の範囲となります。
- 安全セルを1つ開けた場合、(開けた安全セル数 / 盤面の全セル数 - 地雷セル数) を加点します。
- 地雷セルを1つ開けた場合、(1 / 盤面の全地雷セル数) を減点します。
- 1盤面あたりのスコアは、以下の式で表されます。
$\text{score} = \frac{\text{開けた安全セル数}}{\text{盤面の全セル数} - \text{盤面の全地雷セル数}} - \frac{\text{開けた地雷セル数}}{\text{盤面の全地雷セル数}}$ - 各盤面のスコアは、小数点第5位で切り捨て(小数点第4位までを有効) として評価します。
- 地雷セルを開けずに、全ての安全セルを開けた場合は 1点 となります。
- 地雷セルのみを全て開けた場合は -1点 となります。
-
盤面上の全セル(安全セル+地雷セル)を開けた場合は 0点 となります。
-
開発していただくプログラムは、入力として盤面データを読み込み、解答した盤面数、実行時間、および解答した盤面の合計スコアを出力するものとします。
- 入力として与えられる盤面データを解析すれば地雷セルの位置を特定できますが、「マインスイーパー」を解くプログラムにおいては、地雷セルの位置は分からないものとして実装してください。
- 選択済みのセルから得られる情報を元に、次のセルを選択することは問題ありません。
- 選択した地雷セルの位置情報を利用することは問題ありません。
ハードウェアの入力
- 盤面データ がソルバへの入力となります。以下の形式に従ったテキストファイルです。
- 1つのテキストファイルに 複数の盤面データ が入っています。
- 競技で実際に使用する盤面データについては 競技用盤面データの提供 をご参照下さい。
- 盤面データは、以下の繰り返しで構成されます。
- ヘッダ1行:
<Xサイズ(列数)> <Yサイズ(行数)> <地雷セル数> <盤面名> - 盤面行: 各行は
<Xサイズ(列数)>文字の数字列(0-9)で構成されます。 - 盤面と盤面の間には空行が入ります。
- ヘッダ1行:
- ヘッダを除く盤面データ中の数字は、以下の意味を持ちます。
-
0~8:各セルにおける隣接地雷セル数 周囲8セルに存在する地雷セルの数を表します。
-
9:地雷セル
-
- ホストPCとFPGA間で通信を行い、盤面データのテキストファイルをFPGAに送り込むなどの方法により、動作中のFPGAに問題を与えます。
- FPGA へのデータ送信が難しい場合は、盤面データをFPGA内のROMに予め書き込んでおいても構いません。
- 論理シミュレーションの場合はシミュレータに合わせて盤面データを入力してください。
盤面データの例:
6 4 2 board_name <-- 左から Xサイズ(横)、Yサイズ(縦)、地雷セル数、盤面の名前がスペースで区切られています 011100 <-- X個のセル、これは1行目 019100 <-- X個のセル、これは2行目 011211 <-- X個のセル、これは3行目 000191 <-- X個のセル、これは4行目、Y 行目でこの盤面は終了 <-- 空行を挟みます 4 4 2 board_name <-- 次の盤面、以降も複数の盤面データを連続して記述 0111 1291 1921 1110
ハードウェアの出力
- 解答した盤面数、総サイクル数、盤面ごとのスコア、および解答した盤面ごとのスコア を記録いただくため、これらの情報を出力ください。
- 盤面ごとのスコア取得手段は限定しません。以下は一例です。
- ホストPCとFPGA間で通信し、最終盤面のテキストファイルをホストPCに送り出すなどの方法により、ホストPC上で盤面ごとのスコアを取得します。
- 実機での動作確認が難しい場合は、論理シミュレータを用いてRAMに格納される盤面ごとのスコアを取得します。
マインスイーパーVerilog実装サンプルについて 
- 実装の一例として、マインスイーパーVerilog実装サンプルを提供いたします。使用は必須ではありません。なお、データ形式が異なるため、競技用盤面データをそのまま入力できません。
- マインスイーパーVerilog実装サンプルの詳細は、アーカイブ中の readme.md をご参照ください。
- マインスイーパーVerilog実装サンプルは以下からダウンロードしてください。
==> マインスイーパーVerilog実装サンプルのダウンロード
サンプル盤面データについて 
- サンプルの盤面データは マインスイーパーVerilog実装サンプル に含まれています。
- サンプルプログラム (testbench.v) では以下のファイルを読み込みます。
- board_size.txt … 盤面サイズ情報
- board.txt …….. 盤面データ
board_size.txt 3 5board.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 となります。
- マインスイーパーVerilog実装サンプルでは全てのセルの値が 0x0F、0x10 から 0x18、0x1F のいずれかになっていれば終了となります。
競技用盤面データの提供 
- 盤面データはテキストファイル(
board_pack_1000_fpga.txt)です。以下からダウンロードください。 - ==> FPGA 競技用盤面データのダウンロード
- 最大の盤面サイズは 19x19 です。
- なお、最初に選択したセルが安全セルである保証はありません。
結果の記録
- 競技用盤面データに対する実行結果を、上記でダウンロードしたzipファイルに同梱の
Excelファイル(minesweeper_fpga_result.xlsx)に記入ください。 - Excelファイル は 2 つのシートを含みます。それぞれ記入ください。
提出方法 
- 以下2点を
adc.das.sldm@gmail.comより、ADC 事務局宛にご提出ください。マインスイーパーを解くハードウェアモジュール実行結果を記録した Excelファイル(minesweeper_fpga_result.xlsx)
-
提出物に不足がある場合、または Excelファイルの記載が不十分な場合は、評価対象外 となります。提出後に不備に気づいた場合は、提出期限内に限り再提出を受け付けます 。
- メール本文には「参加者入力フォーム」に記載いただいたお名前もしくはチーム名 を明記ください。
- 受領しましたら、ADC 事務局メンバーより返信いたします。
- 提出期限は 2026年8月17日(月) 23:59 (JST) です。