一般に論理合成はVHDLファイルのコンパイル,テクノロジの指定,制約条件の設定など様々な情報を指定しながら,作業を行う必要があります.本セミナーでは,そのような手間を省くためにあらかじめ用意してある論理合成用のスクリプトファイルを用いて論理合成を行います.
論理合成の対象に合わせて論理合成用スクリプトファイルをVHDLソース があるディレクトリにダウンロードして下さい.
chkalu.m:算術論理演算回路検証用スクリプトファイル
kite.m:KITE-1マイクロプロセッサ用スクリプトファイル
これらのスクリプトファイルは,必要なVHDLファイルのコンパイル,論理合成,テクノロジの指定,最適化,ネットリスト生成までを自動で行うためのコマンドが含まれています.ここでは,算術論理演算回路用のスクリプトファイルについて簡単に説明します.
まず,VHDLファイルを論理合成用にコンパイルします.
printf "Compile VHDL Files\n"
if(alcom alu.vhd) {{printf "Error: alcom alu.vhd\n"}{ exit}}
if(alcom chkalu.vhd) {{printf "Error: alcom chkalu.vhd\n"}{exit}}
論理合成ツールに必要なVHDLファイルを読み込みます.
printf "Open VHDL Files\n"
if(opn design -vhdl alu.vhd) {{printf "Error: opn alu.vhd\n"}{exit}}
if(opn design -vhdl chkalu.vhd) {{printf "Error: opn chkalu.vhd\n"}{exit}}
合成対象のデバイスとしてLCA 4000シリーズを指定します.
printf "Set Target Technology(LCA XC4000)\n"
if(env dst xc4k/default) {{printf "Error: env dst xc4k\n"}{exit}}
論理合成を実行します.
printf "Synthesis\n"
if(syn vhdl work chkalu -arch beha){}{{printf "Error: syn chkalu\n"}{exit}}
デバイスのより詳細な情報を指定します.
printf "Set Device Informations\n"
if(add env -custom device_number "4010" speed_grade -5 package_type "PGA" num_pins "191" temp_range "Commercial 0 to +70 C" enhanced_ce "No" macro_mapping "NONE" macro_mapping_type "AREA" sgconfig_file "PADs on top level, PORTs on other levels"){{printf "Error: Add env XC4010\n"}{exit}}
最適化(面積)を実行します.
printf "Optimize\n"
if(opt area -low) {{printf "Error: opt area\n"}{exit}}
入出力バッファを挿入します.
printf "Add IO Buffers\n"
if(opt custom "add_rm_tech_io yes () add"){{printf "Error: add IO Buffers"}{exit}}
クロック用バッファを挿入します.
printf "Insert Global BUffers\n"
if(opt custom "xi_global_ins_del_top clk_only () insert"){{printf "Error: Insert Global Buffer\n"}{exit}}
生成した回路データをXNFファイル形式で出力します.
printf "Write XNF\n"
if(opt custom "wr_xnf_nl xnf_chkalu/opt_nl.xnf xnf_chkalu/opt_nl.als no"){{printf "Error: Write XNF\n"}{exit}}
合成ツールの終了処理.
printf "Run Complete\n"
quit
if文はエラーが発生した時点で処理を中断させるためのものです.