この文書には,NTTで開発されたハードウェア設計支援システムPARTHENONに関して,主として,PARTHENON Ver. 2.3.0.6 または Ver. 2.4.X (以下 WS版と記す),あるいは DOS用の PARTHENON/CQ版 Ver. 2.3.0 (以下 CQ版と記す) に対するいくつかの "Frequently Asked Questions" の答えが書かれています.
なお質問文中の以下の記述はそれぞれ次のような意味を持ちます.
PARTHENONに関する質問,問い合わせ先は,新しいE-mailアドレス へと変更作業中です. 御不便をおかけしておりますが,もう少しお待ちください.
WS版あるいはCQ版の各版に応じて,下記のようになります.
WS版
SunOS
Solaris
Linux または FreeBSD
Windows
CQ版
DOS
研究,教育等の非営利目的に限って,WS版をダウンロードしてそのまま試用していただけます.詳しくはこちらを御覧下さい.
CQ版は最寄りの書店で購入できます.
CQ版は,Version 2.3.0 ,
WS版は,Version 2.4.1 (Windows用のみ Version 2.3.0.6)が,それぞれの最新版です.
なお,旧来のVersion 2.2.X までと,2.3.X 以降とを比較すると,以下の相違点があります.
SFL言語仕様
SFL 言語には極性という概念はなじまないと考えています. 極性はその端子がドライブすべき負荷容量などと同じく物理的な制約に分類されると考え opt_map で対応しています.
opt_map に inv というコマンドがあり,制御端子を負論理にできます.コマンド形式は,
inv ピン名
です.
ただし現状では,ピン名で指定されるピン (もちろんトップモジュールのピン) のタイプが input または output のものについてのみ有効です.次のリリースではすべてのタイプに対応させる予定です.
以下の説明はWS版(Windows版を除く)についての説明です.CQ版およびWindows版については下を御覧下さい.
seconds の sflread コマンドの実行時やsflexp起動時に sfl 記述にエラーがあると,seconds/sflexpは$PARTHENON/com の sfl_edit.sh を shell のスクリプトとしてコールします.この時,第 1 アーギュメントは修正すべき sfl ファイル名,第 2 アーギュメントはエラーの行位置, 第 3 アーギュメントはエラーのカラム位置を示しています.また, エラーの修正後, 修正前のファイルは "ファイル名.bak" として残さなければなりません.
sfl_edit.sh は通常のコマンドサーチルールにより検索されますので, 利用者の ~/bin に sfl_edit.sh を作成し, $PARTHENON/com より ~/bin が先に検索される様に path を設定しておけば, 利用者の固有のエディタを使用することが出来ます.
$PARTHENON/com の sfl_edit.sh は,
mv $1 $1.bak cp $1.bak $1 xterm -title $1 -vb -e vi -c $2 $1 &
の様になっています.最初の2行は変更前のファイルを "ファイル名.bak" として残す部分です. 3行目は xterm を起動してその中で,vi を起動することを表しています. & がないとエディタが終了するまで制御が seconds/sflexp に戻りません.
---
以下の説明はCQ版およびWindows版についての説明です.WS版については上を御覧下さい.
seconds.exe の sflread コマンドの実行時やsflexp.exe起動時に sfl 記述にエラーがあると,seconds.exe/sflexp.exeは%PARTHENON%\com の sfl_edit.bat を実行します.この時,第1アーギュメントは修正すべき sfl ファイル名,第2アーギュメントはエラーの行位置, 第3アーギュメントはエラーのカラム位置を示しています. またエラーの修正後,修正前のファイルは "ファイル名.bak" として残さなければなりません.
sfl_edit.bat は通常のコマンドサーチルールにより検索されますので,別のディレクトリにsfl_edit.bat を作成し,そこが先に検索される様に path を設定しておけば, 利用者の固有のエディタを使用することが出来ます.
サブモジュールにおける参照されない端子は, 自動的に削除されます.ただし,トップモジュールにおいて,参照されない外部端子が定義されていた場合は, unused 属性の端子として残ることになります.
module 毎に合成することは可能です.また時間が短縮される可能性もあります.本当に短縮されるかどうかは場合によります. ただしこのようなことを行なう時は以下の注意が必要になります. なお,以下の説明の中で使われるディレクトリ名等は,必要に応じて適当に読みかえて下さい.
---
以下はWS版(Windows版を除く)についての説明です. CQ版およびWindows版については下を御覧下さい.
auto コマンド等は make を用いて PARTHENON の各プログラムを順次起動するようになっています. 詳細については, $PARTHENON/com/Makefile の内容を理解してください.
さて,分割して合成する際に,問題となってくるのは opt_map というプログラムの振舞いです. opt_map は,本来,対話型のプログラムになっていますが,auto コマンドで起動される場合には,$PARTHENON/cell_lib.dir/DEMO/demoの中にある opt_scr.xxx をひな型として top-module のあるディレクトリに (module_name).opt_scr_xxx がつくられ, その中のコマンドが opt_map に与えられるようになっています.
これらのコマンドスクリプトの最終段階で発行される last コマンドにより出力された nld ファイルを再び opt_map にかけることはできません.このようなことを行なう場合は,各 module 毎に opt_map に読み込み,必要に応じた最適化を実施した後に,
write ディレクトリ名
のコマンドを与えることにより得られる nld ファイルを使用するようにして下さい.
なお,$PARTHENON/sfl_lib.dir の中に含まれる *.nld は以上の方法で作られたものです.これらの *.nld は *.h と組み合わせて使用されます.参考にして下さい.
次にこのようにしてできた nld ファイルを使用する時のことですが,これらの nldファイルの存在場所を opt_map に教える必要があります.したがって,auto コマンド等でパルテノンを起動する時は $PARTHENON/com/Makefile の中の opt_map を起動している行に,nld ファイルのあるディレクトリの指定を追加して下さい.
---
以下はCQ版およびWindows版についての説明です. WS版については上を御覧下さい.
auto.batは PARTHENON の各プログラムを順次起動するようになっています.詳細については,%PARTHENON%\com\auto.batの内容を理解してください.
さて,分割して合成する際に,問題となってくるのは opt_map というプログラムの振舞いです. opt_map は,本来,対話型のプログラムになっていますが,auto コマンドで起動される場合には,%PARTHENON%\celldemo\の中にある opt_scr.xxx をひな型として top-module のあるディレクトリに (module_name).opx がつくられ, その中のコマンドが opt_map に与えられるようになっています.
これらのコマンドスクリプトの最終段階で発行される last コマンドにより出力された nld ファイルを再び opt_map にかけることはできません.このようなことを行なう場合は,各 module 毎に opt_map に読み込み,必要に応じた最適化を実施した後に,
write ディレクトリ名
のコマンドを与えることにより得られる nld ファイルを使用するようにして下さい.
なお,%PARTHENO%\sfl_lib.dir の中に含まれる *.nld は以上の方法で作られたものです.これらの *.nld は *.h と組み合わせて使用されます.参考にして下さい.
次にこのようにしてできた nld ファイルを使用する時のことですが,これらの nldファイルの存在場所を opt_map に教える必要があります.したがって,auto.bat等でパルテノンを起動する時は %PARTHENON%\com\auto.bat の中の opt_map を起動している行に,nld ファイルのあるディレクトリの指定を追加して下さい.
たとえば,設計条件を定める時に,setv コマンドで,
setv ?cycle 1000
とした場合,これは,大域変数 cycle に 値 1000 を与える,という意味でしかありません.つまり, cycle という名前が opt_map で特別な意味を持っている訳ではありません.
では何故これが必要かというと,大抵の pcdファイルでは delay 等を,この cycle という変数を用いてパタメタライズして表現しているためです (このような場合,cycle に値を与えないとエラーになります).
通常,cycle は 1マシンサイクル (クロック周期) を意味するように記述されています.が,これは用いる pcd ファイルの記述に依存します.
また,1 単位時間が実時間でどの程度の長さかということも,pcd ライブラリに依存します.これは,opt_map 自体はデバイステクノロジから独立であり, デバイステクノロジは pcd ライブラリで表現されるためです.すなわち, opt_map の単位時間と実時間とを関連付けるのはユーザまたはライブラリの設計者の責任です.
PARTHENONのインストールパッケージに含まれるDEMO社demoライブラリのデータは,0.8μ CMOS (Ver 2.2.X 以前は 1.5μ CMOS) テクノロジのデバイスの値を参考にして作成したものです.これらのライブラリにおいては,1単位時間は 1ns を示しています.
? や ?? はそれが出力されている時点では設計条件が満たされていない可能性が非常に高いことを示唆しています.opt_map では opt コマンドを与えられることにより回路の改善を行ないますが,それを一回行なっただけですべての条件が満たされるような改善が行なわれる訳ではありません.実際には opt コマンドを複数回与えることによって,回路を改善していきます.
よって ? や ?? はそれほど気にする必要はありません.本当に設計条件を満たしているかどうかを知りたい時には opt_map に lctf というコマンドを与えることにより,その時点で設計条件を満たさないものを表示することができます.
$PARTHENON/cell_lib.dir/DEMO/demo にある,デモ用のセルライブラリのデータは,Version 2.3.X 以降では 0.8μ CMOS テクノロジ (Version 2.2.X 以前は 1.5μ CMOS テクノロジ) の,それぞれの実例値を使用して作成したものです.
このデモ用の PCD ファイルの中の数値の単位は以下の通りです.
power : μW/MHz
area : Kμm2 (1000μm2)
容量 : pF
時間 : ns
可能です. セルライブラリの pcd ファイルの記述において,
(def-module in01d1 power 2.8 area 0.73728 gates 0.5 ...
のように,小数を使うことができます.
opt_map から EDIF 形式のネットリストを出力することにより,接続可能です.
特定の FPGA用に回路を最適化したり,FPGA をドライブしながらシミュレーションをするといった意味では,現在の PARTHENONだけで,FPGA の設計を行うことはできません.これらには,それぞれの FPGAベンダ等が提供している開発 (マッピング) ツールが必要となります.
なお,PARTHENON と他のツールとのインタフェースは,
PARTHENON <- セルライブラリ情報(PCD) (opt_map) -> ネットリスト(EDIF)
というファイル形式になっており,ツールを連携させて利用することは容易です.
原則的には FPGA で実現する場合もゲートアレイやスタンダードセルと同様に,
の 2 ステップが必要となります.
ただし,現在提供中の PARTHENON では,LUTなどの FPGAの論理ブロックを直接扱うことはできませんので,FPGA の開発 (マッピング) ツールが認識できる擬似セルの情報 (基本論理ゲートと 3〜4種のフリップフロップなど) を,PCD で表現したものを用意し,セルライブラリとして用いることになります.
この場合,FPGA で実現できる設計規模は FPGA の開発 (マッピング) ツールの能力に依存します.
また,開発 (マッピング) ツールによっては, EDIF をサポートしていても,ネーミングルール等で使用できる文字に制約を課している場合がありますが,これには, AWK を用いることなどで対処できるでしょう.
なお, ALTERA, XILINX, GATEFIELD については,PARTHENONのダウンロードにおける各OS別のページで,セルライブラリを提供しています. また,Version 2.3.X 以前のPARTHENON については,こちらをご覧ください.
このエラーは論理合成プログラムsflexpの内部で使用されている prolog の処理系が静的に取るメモリ(スタック)が不足するために起きます. もし autoコマンドで sflexp が使用される設定になっているようでしたら,代わりに sflexpl が使われるように設定を変えて試してください. (autoが参照する $PARTHENON/com/Makefile などを書き換える) sflexpl は sflexp と同機能のプログラムですが, 使用するスタックが大きめに取られます.
しかし, 合成対象となる SFL記述によっては, 少々のリソースの追加ではこのオーバフローは解消できません. その場合は, 設計記述のしかたを工夫して対処していただくよりありません.
例えば, 論理を積和形に展開すると積項が増えてしまう場合にオーバフローが発生します. 以下のように, 論理の構造に即した内部端子を挿入することにより, オーバフローを防ぐことができます.
ex. 変更前 変更後 input a<8>; input a<8>; input b<8>; input b<8>; output c; output c; -> term tmp<8>; c = /& ^ (a & b); par { tmp = a & b; c = /& ^ tmp; }また, ステージ中に条件分岐が多くなると, 合成処理が重くなります. 合成に適したSFL記述のテクニックとしては,
PARTHENON の opt_map は EDIF 2 0 0形式のネットリストを出力することができます.以下のコマンドをopt_mapに与えることにより指定されたファイル名の EDIF 2 0 0形式のネットリストが得られます.
cnn edif (ファイル名)cnnはピン名などをEDIF形式で許されている文字のみを使った名前に変更するコマンドです. edifコマンドを実行する前に必ずこのコマンドを実行するようにしてください.なお, このコマンドによって変更された名前を元に戻すことはできませんので御注意下さい.
WS版にはnld_edifというプログラムが添付されていますが, これはnld形式のネットリスト からEDIF 1 1 0形式のネットリストを出力するプログラムです.
この message は,プログラムの実行形式を make した環境で用いた shared library よりも,実行時の環境で参照される shared library の minor version の方が新しいため,OS 側(ld.so)から出される警告です.
Sun OS 4.1.1 と 4.1.2 のように,minor version だけが違う場合には,動作に問題はありません.
WS版のPARTHENONは,
という条件のもとで,無償で御試用いただけます.
PARTHENONのダウンロード内の各OS別のページから,必要なパッケージをダウンロードして御利用願います.
なお,PARTHENONを構成する各プログラムは,パスワードファイルによって利用期間が制限されています.必要に応じて,別途,最新のパスワードファイルをPARTHENONのダウンロードのページからダウンロードして利用願います.
PARTHENONを御試用いただいた場合,パルテノン研究会等で御意見をいただければ幸いです. もしパルテノン研究会に加入されていないようでしたら,この際に加入されることをお勧め致します(強制ではありません).
これは,パスワードファイルで指定している PARTHENON の使用期限が切れたためです. 続けて御使用になりたい場合は,上記を御覧の上,パスワードファイルを更新して下さい.
これは, インストール後の各サイトでのコンフィギュレーションに依存します.$PARTHENON 下の各 file, 特に$PARTHENON/com/parthe.nonに,使用する user または group に対しての read permission が与えられているかどうかをチェックして下さい. ユーザ yyyy がこれらの file を読めない場合, chmod して read permission を与えて下さい.
環境変数 PARTHENON が set されていない場合も,同じ様な message が出ることがあります.
このエラーメッセージは誤解を招き易いのですが, PARTHENON 自身は,user, group などの単位でのプロテクトは行なっておりません. host 単位のみです.
学術団体として「パルテノン研究会」が設立されています. 詳しくはこちらを御覧下さい.
大阪大学今井研究室の御厚意により SFLのメーリングリストが運営されています.
・入会は, subscribe edaj-sfl と本文に書いて, majordomo@eda.ics.es.osaka-u.ac.jp 宛にメールを 送ります. Subject は 空で構いません. To: majordomo@eda.ics.es.osaka-u.ac.jp Subject: -------- subscribe edaj-sfl その後,折り返し送られるメールに従ってください. ・脱会は, unsubscribe edaj-sfl と本文に書いて, majordomo@eda.ics.es.osaka-u.ac.jp 宛にメールを 送ります. ・なお,このメーリングリストに関する御意見,御質問などは,次のアドレス にお願い致します. eda-adm@eda.ics.es.osaka-u.ac.jp
PARTHENON = Parallel Architecture Refiner Theorized by NTT Original Concept
SFL = Structured Function Description Language
NLD = Net List Description
PCD = Physical Characteristic Description
SECONDS = SFL Extended Conversational Design System
SFLEXP = SFL Expander
OPT_MAP = Optimizer and Technology Mapper
ONSET = Optimizer for Logic Networks Supported by Extension of Transduction Method
RINV = Reducer for Logic Inverters
NLD_PS = NLD to PostScript