-lオプションを設定すると,コンパイル結果を反映したリストファイルが作成 されます.デバッグを行う際に非常に便利です.階層設計を行っている場合は, 下位の階層から順にコンパイルして下さい.また,パッケージファイルを使用 している場合は,必ずパッケージファイルのコンパイルを行ったのちに,通常 のVHDLソースのコンパイルを行います.%> vhdlan -l file_name.vhd
と定義して下さい.setupfile.incは自由な名前を付けても結構です. setupfile.incはVHDLシミュレータの初期設定ファイルとして利用します.今 後,信号線の観測や信号値の代入などは,全てsetupfile.incで定義します. VHDLシミュレータは,シミュレータ起動直後にsetupfile.incを読み込み初期 設定します.setupfile.incの例RUNREAD = setupfile.inc
ここで,top_entity_nameは最上位階層のエンティティ名を表します.また, signal_nameは,入出力ポートの信号線名もしくはアーキテクチャ内部で定義 した信号線名です.なお,VARIABLE型の信号の値は観測できません.もし,下 位階層の信号線を観測したい場合には,setupfile.incの中に以下の記述を追 加して下さい.trace /top_entity_name/signal_name
下位階層のラベル名(エンティティ名ではありません)を指定することで,下位 階層の信号線を観測できます.もし,バス信号線のある一ビットだけ観測した 場合には,signal_name(インデックス)を指定してください.trace /top_entity_name/component_label/・・・/signal_name
-after 500 を省略すると,シミュレーション時間0nsの時に信号値が代入され ます.また,バス信号の入力ポートに値を代入する場合は,assign -after 500 '1' /top_entity_name/input_port
とします.ここでは8ビットバスの場合を示しています.assign -after 500 "0101010" /top_entity_name/input_port
vhdlsimコマンドの引数は,コンフィギュレーション名であることに注意して ください.このコマンドを実行すると,VHDLシミュレータが起動されます. setupfile.incの中でtraceコマンドを使用しておけば,自動的にビューアが立 ち上がります.また,コマンドを実行したktermは,VHDLシミュレータのプロ ンプトが表示されます.プロンプトの設定は,setupfile.inc中の%> vhdlsim conf_name
で可能です.ここでは,最上位階層のVHDLファイル名をプロンプトに表示して います.set PROMPT ^$file->^
を入力します.Simuration-Timeは,実行するシミュレーション時間を指定し ます.以下では,5000nsシミュレーションを実行する場合を示しています.sim_prompt-> run Simuration-Time
を入力してください.ビューアの波形もクリアされます.restartした場合は, setupfile.incも再度読みなおされます.sim_prompt-> restart
sim_prompt-> trace /top_entity_name/add_signal
を実行します.sim_prompt-> quit
-- setupfile.inc -- ユーザオリジナル・コマンドの定義 -- run_p100 Clk_Name Reset_Name Sim_Time -- comm run_p100 -- コマンド名 if ($# < 3) then -- パラメータ数のチェック echo ============== Error ============== echo You must set some parameters!! echo run_p100 Clk_Name Reset_Name Sim_Time end if if ($# > 3) then -- パラメータ数のチェック echo ============== Error ============== echo You must reduce some parameters!! echo run_p100 Clk_Name Reset_Name Sim_Time end if if ($# = 3) then -- パラメータ数のチェック(OK!) assign '1' $2 -- 2番目の引数(Reset_Name)に'1'を代入 assign -after 150 '0' $2 -- 150ns後に2番目の引数に'0'を代入 set tmp_cou 0 -- カウント用変数をリセット while ($tmp_cou < $3) loop -- 3番目の引数(Sim_Time)までLOOP assign -after 50 '0' $1 -- 50ns後に1番目の引数(Clk_Name)に'0'を代入 assign -after 100 '1' $1 -- さらに50ns後に1番目の引数(Clk_Name)に'1'を代入 set tmp_cou $tmp_cou+100 -- run 100 -- シミュレーション時間100nsだけ実行 end loop end if endこのコマンドrun_p100は,
というように利用します.Clk_Nameにはクロック信号名を,Reset_Nameにはリ セット信号線名を指定します.また,Sim_Timeには実行したいシミュレーショ ン時間を入力します.setupfile.incで以下のコマンド定義を行い,sim_prompt-> run_p100 Clk_Name Reset_Name Sim_Time
と実行すると,シミュレーション時間1000nsまで以下のような信号がClockと Resetに代入されます.sim_prompt-> run_p100 Clock Reset 1000
__ ____ ____ ____ ____ Clock |____| |____| |____| |____| 50 100 150 200 250 300 350 400 ____________ Reset |_____________________________