Ryuz's tech blog

FPGAなどの技術ブログ

回路図のお供に Pandas 便利そう

データプロセッシングのアクセラレータ―としてではなく、IoTデバイスとしてFPGAを使ったことのある方は Excel でピン配置表を作って VLOOKUP 関数で頑張った経験がある方も多いのではないでしょうか?(古い人だけかもしれんないですが)。

FPGAマイコンと違って、プログラムから操作できるピンが圧倒的に上に、ピンごとに用途が決まっているわけではなく汎用性が極めて高いため、表で管理しないとやってられなくなります。

また、興味の範囲が FPGA に収まり切れずに KiCAD なんかで基板を作り始めちゃう人は、いろんな部品のデータシートとにらめっこしながら、こちらもピン配置表を作りつつ部品のライブラリを作ったりしていることでしょう。

回路図はネットリストになりますので、ネットリストを Python とかのスクリプトで解析して、ピン配置表を作るなんてことも出来てしまいます。

で、話は FPGA に戻って、最近 Kria KV260 で遊んでいるときに SOM(System On Module) に載っているデバイスのピン配置までたどり着くのがおっくうで表を作り始めました。

いいものができれば、公開したいところなのですが、この時に参照する xdc ファイルが、他のデータシートと違って、ユーザー登録してダウンロード時の同意をしないと入手できない仕組みになっています。

想像ですが、 AMD(Xilinx)さんは、おそらく将来的にLSIバイス単位ではなく、SOMを丸ごと合成対象のデバイスとして扱いたいのではないかと想像しています。Vivado のツールに直接 SOM のコネクタピンが指定できれば使う側としてもかなり楽になりそうです(ただし、残念ながらまだそうはなっていません)。

ですので、私がピン配置テーブルを作って公開するのはいろいろと問題がありそうなので xdc ファイルからテーブルを作るツールとして下記のようなものを作ってみました。

github.com

現時点で K26 SOM を回路図を見ながら使うには、暫定的ですが活用できればと思います。

で、ここからが本題なのですが、やってみて

うわ、Pandas 便利だ!

って、話です。

SQL まではいかないのかもしれませんが、Excel に比べるとかなりちゃんとしたデータベース環境です(まあ私は SQL も Pandas も Excel も中途半端な知識しかないのですが)。

こういうネットリスト的な、信号名とかピン番号とかを経由していろんなものに繋がっていくものの処理に極めて便利だと感じました。

信号名もピン番号もそれぞれ特定の範囲でユニークである必要がありますので、リレーショナルデータベースのKEYとしてよく機能します。 むしろ間違って重複していたらエラーに気づきやすい点で VLOOKUP よりはるかに優秀です。

過去に、検図のお供に、信号が浮いてたり、繋がってなかったりを探すのに PerlPythonスクリプト書いたりしたことがあるのですが、リレーショナルデータベースとして扱うととても便利そうです。

FPGA の ピンの外を制御するバリバリの IoT プログラマの皆さん。Python + Pandas でピン配置テーブル管理するのおススメです。