BramMan

概要

Xilinx社FPGA用をコンフィグするbitファイルのブロックRAM(BRAM)部に書き込むデータファイル(.MEMファイル)をアセンブラ出力のHEXファイルから生成するためのツールです。 逆にbitファイルをダンプした結果を解析することも可能です。書き込みにはXilinx社Data2memプログラムと、BMMファイル(makeBMM.pyなどで生成)が必要となります。 主としてXilinx社Virtex7 FPGAをその対象としています。

リビジョン

BramMan.py v01r03

コマンドライン

以下のようにコマンドプロンプトから起動するか、適当なGUIランチャー等から引数を与えて起動します。

IM用MEMファイル生成例)
python BramMan.py -a --BMM IM.BMM --HEX A.HEX --SADR 40000000 --EADR 40010000 --MEM IM.MEM
DM用MEMファイル生成例)
python BramMan.py -a --BMM DM.BMM --HEX A.HEX --SADR 600E0000 --EADR 60100000 --MEM DM.MEM

以下のようなオプションをつけて動作させることで所望の結果を得ることができます。

コマンドラインオプション

オプション 意味
-h ヘルプ表示
–DMP dump 解析対象dumpファイルを指定
–HEX hex アセンブラ出力HEXファイルを指定
–MEM mem 結果MEMファイル名を指定
–BMM bmm 書き込み先BRAMを示すBMMファイル指定
–SADR s 変換開始アドレス(HEX)
–EADR e 変換終了アドレス+1(HEX)
-a 短い(4/5桁)下位アドレスで出力
-L 32ビットデータとしてdumpを解釈
-n dumpファイル中ノンゼロ行全出力
-p dumpファイル中BRAM情報の出力
-e dumpファイルから対象BRAMデータ抽出
-v バーボスモード
-V バージョンのみ表示して終了
-d デバッグ用オプション

構造

class BramMan.dmpReader(fnam)[ソース]

DMP File Reader Class.

DMPファイルを読み取ってBRAM部分をチェックするクラス

conv32sub(HHkey, HLkey, LHkey, LLkey, idx)[ソース]

convert 32 bit data format

5+9+9+9フォーマットのデータを32ビットに復元して返す

dump32bitData(keyLis)[ソース]

dump 32 bit data format

keyListに基づいて、4,8,12,16個のBRAM情報を32ビット化して出力する

printBram()[ソース]

list Bram

蓄えたBRAM情報を出力する

rLine(lin)[ソース]

Read Line method

読み取った1行を処理するメソッド エラーならTrueを返す そうでない場合はFalseを返す

state 0 ... BRAM発見のみ 1 ... BRAM発見、次の空行みつける 2 ... 最初の空行発見、ボディ処理 3 ... ボディ後の空行発見、ボディ処理終わり 4 ... BRAM parity発見、次の空行見つける 5 ... パリティ直上の空行発見、次からパリティ処理 >>> 末尾の空行発見、末尾処理、0に戻る

read()[ソース]

read method

ファイルから行をリードして処理するメソッド

class BramMan.HexFileRWriter(Fnam, sadr, eadr)[ソース]

HexFile loader Class.

HEXファイルを読みとって 指定したアドレス範囲内のデータを保持するクラス mem形式での出力も可能 アドレス範囲により、自動的にDM/IM認識

rLine(lin)[ソース]

Read Line method

読み取った1行を処理するメソッド

read()[ソース]

Read method

HEXファイルを読み込むメソッド

saveMem(fnam)[ソース]

save mem file

IM/DM mem file生成メソッドの入り口

saveMemDM(fnam)[ソース]

save mem file for DM

bit 8+8+8+8 width 連続 mem形式で書き出すメソッド

saveMemIM(fnam)[ソース]

save mem file for IM

bit 5+9+9+9 width 連続 mem形式で書き出すメソッド

setAddr()[ソース]

Set Address method

sadrとeadrを変換して使えるようにするメソッド

class BramMan.bmmReader(fnam)[ソース]

BMM File Reader Class.

BMMファイルを読み取ってPLACED構成からビット幅構成を決める

rLine(lin)[ソース]

Read Line method

読み取った1行を処理するメソッド エラーならTrueを返す そうでない場合はFalseを返す

read()[ソース]

read method

ファイルから行をリードして処理するメソッド

save(fnam)[ソース]

save BRAM col row list

BRAMのインデックスリストをファイルに出力する