diagram2vppl

概要

diagram2vpplは回路図エディタを流用して描いたDNNデータフローダイアグラムから、VPPL言語のソースプログラムを生成するツールです。 具体的にはBSCH3Vエディタで生成された部品表とネットリストからVPPL言語のソースプログラムを生成します。 部品表はBSCH3V付属のpl3w.exeにより生成されたCSVファイルです。 ネットリストはBSCH3V付属のnl3w.exeにより生成されたNETファイル(OrCad形式)です。 出力はVPPLコンパイラがコンパイルできるプログラムとなります。 なお、不完全なネットリストからは不完全なVPPLソースが生成されるので、ネットリスト変換後 ダイアグラムからの変換が正しく行われているのかレポートファイルを確認すべきです。

リビジョン

diagram2vppl.py v01r02

コマンドライン

python diagram2vppl.py [option [option_parameter]]...

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

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

オプション 意味
-h ヘルプ表示
–CSV csv 部品表入力
–NET net ネットリスト入力
–OUT vppl VPPL言語ソース出力ファイル名
–SOL nam ソリューション名
–DB db 共通DBフォーマット出力ファイル名
–PROF csv プロファイリング集計結果
-v 処理の途中経過を詳細に出力
-V バージョンのみ表示して終了
-d デバッグ用オプション

構造

class diagram2vppl.kvParser[ソース]

Key Value Parser Class.

key=val; ...なる形式の文字列から連想配列を作成するクラス

processStr(kvStr)[ソース]

Process kvStr

文字列1個を分解/連想配列化するメソッド

class diagram2vppl.pListReader(fnamCSV)[ソース]

Parts list File Reader Class.

parts list形式 CSVファイルを読み取って複数のテーブルを生成するクラス CSVファイル形式 存在しない要素,種別(B/D/M/U),番号,タイプ,パッケージ,ノート(パラメータ),アトリビュート(既定値) ①パッケージ名はVPPLであることを確認するのみ ②種別+番号–>UNIT名 ③UNIT名->タイプの連想配列作成 ④ノート、アトリビュートは key=value; 形式の羅列なのでそれぞれまずキー、バリュー化 ⑤アトリビュートのキーでノートを検索し、ノート内に該当キーがあればノートのバリューを そうでなければアトリビュートのデフォルト値を採用し、 UNIT名+”_”+キー->バリューの連想配列作成

errRecord(mes, row)[ソース]

Display error record

エラーレコードを表示するメソッド

read()[ソース]

read method

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

class diagram2vppl.profDataReader(fnamCSV)[ソース]

Profiler data File Reader Class.

profHelperが出力するCSVファイルを読み取ってユニット名->カウント数の辞書を作成するクラス

errRecord(mes, row)[ソース]

Display error record

エラーレコードを表示するメソッド

read()[ソース]

read method

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

class diagram2vppl.netListReader(fnamNET, typDic)[ソース]

Net-list File Reader Class.

Telesis形式 NETリストファイルを読み取ってユニット名.ピン番号->ネット名テーブルを生成するクラス PACKAGES部は確認のみ VPPLであること、TYPE; ユニット名がテーブルに存在すること NET部は ①ノード名を抽出 ②ユニット名.ピン番号を抽出 ユニット名.ピン番号->ノード名の連想配列作成

addNet(lin)[ソース]

add Net record

Net部の1行を処理するメソッド 問題なければFalseを返す。 問題あればTrueを返す。

rLine(lin)[ソース]

Read Line method

読み取った1行を処理するメソッド 継続読み取り時にFalseを返す。 処理終了時にTrueを返す。

read()[ソース]

read method

ファイルからレコードをリードして処理するメソッド 終了後 self.modeが3であればエラーなし

verifyRec(lin)[ソース]

Verify Packages record

Package部の1行を検証するメソッド 問題なければFalseを返す。 問題あればTrueを返す。

class diagram2vppl.vpplWriter(fnamVPPL, typ, attr, node, um)[ソース]

VPPL Writer Class.

VPPLソースファイルを生成するクラス

errRecord(mes)[ソース]

Display error record, return False

エラーレコードを表示するメソッド。常にFalseを返す。

errRecordNone(mes)[ソース]

Display error record, return None

エラーレコードを表示するメソッド。常にNoneを返す

genCONV(unit_name)[ソース]

convolutionLayer

コンボルーションレイヤ生成の上位構造 ### iLimit, iSTEP, oLimit, oSTEP, iCH, oCH, kSIZE, kSTRIDE, iSIZE, oSIZE, q$ エラーなら真を返す

genCONV_L(unit_name)[ソース]

convolutionLayer L

サイズ別コンボルーションレイヤ生成構造 iLimit, iSTEP, oLimit, oSTEP, iCH, oCH, kSIZE, kSTRIDE, iSIZE, oSIZE, q$ .1 IN .2 OUT .3 W .4 Win .5 FP .6 BP エラーなら真を返す

genCONV_M(unit_name, kSIZE, kSTRIDE, iSIZE, oSIZE)[ソース]

convolutionLayer M

iLimit, iSTEP, oLimit, oSTEP, iCH, oCH, kSIZE, kSTRIDE, iSIZE, oSIZE, q$ .1 IN .2 OUT .3 W .4 Win .5 FP .6 BP エラーなら真を返す

genCONV_S(unit_name, kSIZE, kSTRIDE, iSIZE, oSIZE)[ソース]

convolutionLayer S

iLimit, iSTEP, oLimit, oSTEP, iCH, oCH, kSIZE, kSTRIDE, iSIZE, oSIZE, q$ .1 IN .2 OUT .3 W .4 Win .5 FP .6 BP エラーなら真を返す

genCVT32TO16(unit_name)[ソース]

Convert 32 to 16

数値表現形式の変換

genDUMP(vunit_name)[ソース]

data dumpder

データダンプ構造

genFCL(unit_name)[ソース]

Fully connected Layer

全結合レイヤの生成 iUNIT, oUNIT, q$ エラーなら真を返す

genLCN(unit_name)[ソース]

local Contrast Normalization Layer

ローカル・コントラスト正規化レイヤの生成 nCH, kSIZE, iSIZE, oSIZE, q$ エラーなら真を返す

genPOOL(unit_name)[ソース]

poolingLayer

プーリングレイヤ生成の上位構造 ### iCH, oCH, kSIZE, kSTRIDE, iSIZE, oSIZE, q$

genPOOL_X(unit_name, kSIZE, kSTRIDE, iSIZE, oSIZE)[ソース]

poolingLayer X

サイズ別プーリングレイヤ生成構造 iLimit, iSTEP, oLimit, oSTEP, nCH, kSIZE, kSTRIDE, iSIZE, oSIZE エラーなら真を返す

genPROB(vunit_name)[ソース]

probability

確率出力。入力ノードはuYでないとならない。F32Q16型固定。

genRELU(unit_name)[ソース]

Activate Function, ReLU

ReLUを生成する。エラーがあれば真を返す。

genSOFTMAX(unit_name)[ソース]

Softmax

Softmax関数

getAttrInt(uname, key)[ソース]

Get Attribute Integer

Attr数値と真偽値のタプルを返す。発見できなければエラー表示し、偽を返す。

getAttrString(uname, key)[ソース]

Get Attribute String

Attr文字列と真偽値のタプルを返す。発見できなければエラー表示し、偽を返す。

getNodeName(unit_name, pin)[ソース]

get node Name

pinに接続しているノード名を取り出す。

procNetFileEnd()[ソース]

process file end

モード6: ファイル末尾部

procNetGlobal()[ソース]

process global

モード3: グローバル部

procNetInitialize()[ソース]

process initialize

モード4: procヘッダ(~initialize部)

procNetIteration()[ソース]

process iteration

モード5: iteration部

procNetParameter()[ソース]

process parameter

モード1: パラメータ部

procNetProcess()[ソース]

process Process

モード2: プロセス部

procNetSolution()[ソース]

process solution

モード0: ファイルコメント, solution

processNet()[ソース]

process net method

モードを進めながらネットを処理していく最上位メソッド 途中でエラーがあれば偽を返す。 モード0: ファイルコメント, solution モード1: パラメータ部 モード2: プロセス部 モード3: グローバル部 モード4: procヘッダ(~initialize部) モード5: iteration部 モード6: ファイル末尾部

profPoint(un)[ソース]

profiling point

プロファイリングポイントの生成。

save()[ソース]

buffer Writer

バッファのライタ. 書き込み成功すれば真を返す。

searchBUFFER(nodeName)[ソース]

search BUFFER

nodeNameにリンクしたバッファのUNIT名を逆引きする。 無ければNoneを返す。

searchPARAM(nodeName)[ソース]

search PARAM

nodeNameにリンクしたパラメータのUNIT名を逆引きする。 無ければNoneを返す。

set_pointer(unit_name, pin, ptr, opt=False, forceSTEP='')[ソース]

set pointer

set_pointer関数を生成する。生成できれば真を返す。 opt==False(デフォルト, パラメータのnLIMIT, nSTEPから生成 opt==True(パラメータのnLIMITは使用するが、nSTEPを無視してforceSTEPを使用

set_pointerBuf(unit_name, pin, ptr, opt=False)[ソース]

set pointer for Buffer

set_pointer関数をBuffer用に生成する。生成できれば真を返す。 バッファの場合、バッファを利用する側のLIMIT, STEP指定が使われる。 opt==Falseなら(デフォルト)、出力バッファ opt==Trueなら入力バッファ

writeLine(lin, opt=False)[ソース]

write line to buffer

行を直接バッファへ書き込むためのメソッド. opt=Trueなら行コメントとする

class diagram2vppl.SwriterDNN(fname, typ, attr, node, um)[ソース]

S Expression Writer Class for DNN DB.

Scheme処理系で読み込み可能な形式でデータベースを出力する DBでもノードという名称を使っているので注意。(こちらは識別のためのユニークな数字) 「DBノード名」は一意の部品番号をとる。 U部品の入出力端子に結合していない部品(WORKの全て、PARAMのほとんど)は無視される 属性 #1=レイヤ重み(本クラスでは決定できないのでオール1を与える)。別のプロファイリングプログラムで書き換えられる。 #2=ノードタイプ #3=属性値リスト

getAttributeSTR(uname)[ソース]

get Attribute string

uname配下に記録されているすべてのアトリビュートを連結した文字列を返す

makeDbPropList(dbN, description, comment)[ソース]

make DB Property list.

データベースのプロパティを設定

makeEdgeList()[ソース]

make Edge list.

エッジリストを生成する

makeHeader()[ソース]

make Header.

defineの生成

makeNodeList()[ソース]

make Node list.

DBノードリスト、DBノード名リストを生成する 副作用としてDBノード対type, DBノード対UNIT名の辞書も作成する。

makePropList()[ソース]

make Property list.

プロパティ名と実体リストを生成する

makeTXT(dbN, description, comment)[ソース]

make TXT.

書き込む文字列全体を準備

makeTrailer()[ソース]

make Trailer.

トレイラーを定義

write()[ソース]

write.

ファイルに書き込む