Download - ispLEVERVer7.x Lattice版ActiveHDL User Manual
1Active-HDL_manual_rev1.0
ispLEVER Ver7.xLattice版 ActiveHDLUser Manual
2Active-HDL_manual_rev1.0
ispLEVERは、Lattice Semiconductor社のPLD、FPGA設計ツールです。ispLEVERには、言語シミュレータであるALDEC社のActive-HDLがバンドルされております。
本マニュアルではLattice社、PLD、FPGA設計に関して、Active-HDLを使用して言語(VHDL、Verilog)によるシミュレーション方法を順を追って解説しています。
1.はじめに
3Active-HDL_manual_rev1.0
◇PLD設計におけるシミュレーションの位置付け
このページでははじめにラティス社PLD設計フローを通して、シミュレーションがどのような位置付けにあるのかについて記し
ます。尚、下記フローにおける解説の詳細は本マニュアル内の該当箇所をご参照ください。
RTL(回路設計)
論理合成
フロア・プラン
配置
配線
タイミング解析
ダウンロード
ファンクションシミュレーション:機能シミュレーションともよばれる。文字通り機能的な動作を確認するためのシミュレーションで、各信号間の遅延などのタイミング情報はシミュレーションの実行において加味されない。
タイミングシミュレーション:遅延シミュレーションともよばれる。論理合成後、ターゲットデバイスに回路をフィッティングした結果のシミュレーション。デバイスが固有に持っている最大遅延値がシミュレーション実行の際に加味されるため、各信号間においてタイミング的な問題を評価/検討することができる。
2.はじめに ~シミュレーションフロー
4Active-HDL_manual_rev1.0
◇ispLEVERを起動させます。1.スタートメニューより、[プログラム]→[Lattice Semiconductor]→[ispLEVER Project Navigator]を実行します。
2.[File] → [New Project]を選択して、新規プロジェクトを作成します。
New Project を選択
※新規以外のプロジェクトの場合は、Open ‒ Project を選択してください。
ispLEVERの起動
5Active-HDL_manual_rev1.0
◇新規プロジェクト用に新しいフォルダを作成します(必ず作成してください!)
◇デフォルトでは、プロジェクト名と同じ名前のフォルダが作成されます
1. Project Wizard が起動します。
2. 各項目を入力・選択して、「次へ」をクリックします。
プロジェクト名
※プロジェクト名には「日本語」を使用しないでくだ
さい。上図のようにプロジェクト名を sample として、
プロジェクトのタイプは VHDL を選択してください
(プロジェクトタイプはエントリー方法に応じてお選
びください)。合成ツールを選択してください。
※プロジェクトフォルダを配置する場所としてマイ
ドキュメントやデスクトップを選択しないで下さい
(プロジェクトが保存されているパスに日本語や空
白スペースが入っていると問題になることがあり
ます)。
プロジェクトのパス
プロジェクトのタイプ
合成ツール
新規プロジェクトの作成
6Active-HDL_manual_rev1.0
◇新規プロジェクトで用いるターゲットデバイスを選択します
1. ターゲットデバイスを選択します。
①デバイスファミリーの選択
②スピードグレード
③パッケージタイプ
⑤デバイス名
④製品グレード
⑥ デバイス情報
2. 「次へ」をクリックします。
新規プロジェクトの作成
7Active-HDL_manual_rev1.0
◇新規プロジェクトで用いるソースファイル
1. すでに使用するソースファイルがあれば、「Add Source」ボタンを押して追加します(ここで指定しなくても
ありません)。
追加の際、各ソースのタイプもあわせて指定します。
2. 指定したソースがリストに追加されます。「次へ」をクリックします。
ソース追加ボタン
指定したソースをプロジェクトフォルダにコピーするか指定
新規プロジェクトの作成
8Active-HDL_manual_rev1.0
◇新規プロジェクトの内容確認
1. プロジェクトの構成が表示されます。内容を確認して完了ボタンを押すと、プロジェクト作成が完了します。
2. 前画面でテストベンチファイルを指定した場合、そのテストベンチをどこに関連させる
か指定します。
新規プロジェクトの作成
9Active-HDL_manual_rev1.0
◇新規プロジェクトのエントリーをします(例として、回路図とVHDLで行ないます)
1. Project Navigatorから[Source]→[New]を選択します。 2. VHDL Moduleを選択し、OKをクリック
します。
新規作成時は[New]を選択して下さい。
VHDL Moduleを選択
3. 表示されたダイアログボックスの各項目
を入力してOKをクリックします。
※入力参考例
File Name :counter
Entity :counter
Architecture :behavioral
既にソースが作成済みの場合の場合は、[Import…]を選択してください。
Schematic 回路図入力(EC/ECP/XPはトップ階層のみ)
User Documentコメント等のオプション機能Verilog Module Verilog HDL のソースVerilog Test Fixture Verilog HDL のシミュレーション記述VHDL Module VHDL のソースVHDL Test Bench VHDL のシミュレーション記述
※選択できるファイルタイプは、プロジェクトタイプにより変わります。
プロジェクトからソースを外したいときには[Remove]を選択してください。※この作業ではフォルダ内からファイルは削除されません。
デザインエントリー
10Active-HDL_manual_rev1.0
◇ソースファイルを作成します(簡単な4ビットのアップ/ダウンカウンタを作成しましょう)
1. 前ページで入力した項目が記載されたテキストエディタが開きます。
入力するサンプルソースは次ページ以降を参照してください。
Saveアイコンを選択して保存してください
[File]→[Save]を選択して保存してください
もしくはもしくは
VHDLソース入力
11Active-HDL_manual_rev1.0
PLL
4ビットカウンタ
25MHz 50MHzCLK
Decodecnt = "1010" の時
High その他はLow
clk_inst
Cnt[3:0]
RST
DOUT
●内部PLLで2逓倍したクロックで4ビットカウンタを構成。●カウンタ値が1010の時のみHighを出力、それ以外はLowを出力●リセット(RST)はLowアクティブ
VHDLサンプル回路
12Active-HDL_manual_rev1.0
library ieee;library xp;use xp.components.all;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity top is
port( RST,CLK : in std_logic;DOUT : out std_logic
);end;architecture behavioral of top is
component pll_instport (CLK: in std_logic; RESET: in std_logic; CLKOP: out std_logic;
LOCK: out std_logic);end component;
signal cnt : std_logic_vector(3 downto 0);signal clk_inst : std_logic;signal lock : std_logic;signal pll_rst : std_logic;
begin
pll_rst <= not RST;-- parameterized module component instancePLL_UUT : pll_inst
port map (CLK => CLK, RESET => pll_rst, CLKOP => clk_inst, LOCK => lock);
process(clk_inst,RST)begin
if((RST = '0') or (lock = '0'))thencnt <= (others => '0');
elsif(clk_inst'event and clk_inst = '1')thencnt <= cnt + 1;
end if;end process;
DOUT <= '1' when cnt = "1010" else '0';
end behavioral;※入力が終了しましたら保存して下さい。
VHDLサンプルソース
13Active-HDL_manual_rev1.0
◇ソースファイルをコンパイルします(ソースのチェックを行ないます)1. Place & Route Timing Checkpointをダブルクリック。もしくはハイライト表示して、Startボタンをクリックしてください。
※記述したソースに文法的な誤りがあるかどうかをチェックします。
※エラーが発生した場合はもう一度記述等を確認してください。
2.コンパイルが始まります。
ダブルクリック!
右クリックで表示されるウィンドウから[Start]を選択してください
もしくはもしくは
エラーがなければチェックマークがつきます
コンパイル成功です(エラーはありません)
コンパイル成功です(ワーニングがあります)
コンパイルエラーです(ログを確認して下さい)
(チェックマークの意味)
ソースのコンパイル
14Active-HDL_manual_rev1.0
◇テストベンチファイルの生成①1. ispLEVERのテストベンチ自動生成機能を使ってファイル
を作成します。2.レポートビューアーで自動生成されたファイル(counter.vht)が
表示されます。
①ソースファイルをハイライト表示
②VHDL Test Bench Templateをハイライト表示、ダブルクリック。
※参考※ レポートビューアーが表示されない場合には、プロジェクトナビゲータ の メ ニ ュ ー よ り 、[Options]→[Environment]を選択していただき、表示されるウィンドウの中から[Log]タグを選択して、“Using Report Viwer”にチェックを入れてOKを押下してください。
テストベンチの作成
15Active-HDL_manual_rev1.0
◇テストベンチファイルの編集-1
1. 先に開いていた、テキストエディタのメニューから、
[File]→[Open]をクリック、もしくはOpenアイコン
をクリックしてください。
2. ファイル名の項目に“*.vht”と入力してリターンキーを押してください。
*.vhtとここに入力
これがOpenアイコンです
“counter.vht”を選択して開くをクリックすると先程作成したテストベンチファイルがエディタ
で開きます。
3. テキストエディタが開きます。
テストベンチの編集
16Active-HDL_manual_rev1.0
◇テストベンチファイルの編集-2
1. 右記を参照してファイルを完成させてください。
尚、先に開いていた“sample.vhd”を参照したい場合は、[Window]→[Tile Horizontal]をクリックしてください。
二つのファイルがエディタ上で同時に開きます。
LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.numeric_std.ALL;
ENTITY tb_top ISEND tb_top;
ARCHITECTURE behavior OF tb_top IS
COMPONENT topPORT(
RST : IN std_logic;CLK : IN std_logic; DOUT : OUT std_logic);
END COMPONENT;
SIGNAL RST : std_logic;SIGNAL CLK : std_logic := '0';SIGNAL DOUT : std_logic;
BEGIN
uut: top PORT MAP(RST => RST,CLK => CLK,DOUT => DOUT
);
CLK <= not (CLK) after 20 ns;
process beginRST <= '0'; wait for 10 ns;RST <= '1'; wait;
end process;
END;
①25MHzクロックを生成。②10ns間 RST = ‘0’それ以降は RST = ‘1’
テストベンチの編集
17Active-HDL_manual_rev1.0
◇テストベンチファイルの編集-3
1. 完成したファイルを名前をつけて保存します。[File]→ [Save As…]をクリックしてファイル名を指定して保存してください(verilogの場合は拡張子
を“*.tfi”から“*.tf”に変更してください)。
名前をつけて保存します
テストベンチの編集
18Active-HDL_manual_rev1.0
ションシミュレーションの実行1.Project Navigator上から、シミュレーションを実行します。まず、テストベンチファイルをハイライトし、VHDL Functional Simulation With Aldec Active-HDL
orVHDL Post-Route Functional Simulation With Aldec Active-HDL
orVHDL Post-Route Timing Simulation With Aldec Active-HDLをダブルクリックしてください。
①テストベンチファイルをハイライトして
②ダブルクリック2.Active-HDLが自動的に立ち上がります。
※ファンクションとタイミングシミュレーションの違い※ファンクションシミュレーションではデザインした回路の動きのみをシミュレートしているのに対して、タイミングシミュレーションでは実際に各信号間の遅延を含めて観測することが可能になります。Active-HDLの操作方法としてはファンクション/タイミング両シミュレーションにおいて違いはありませんので以降の解説を参考に作業を進めてください。
シミュレーションの実行
19Active-HDL_manual_rev1.0
3.シミュレーションが実行されて、波形が表示されます。Undockボタンをクリックして、wave画面を単独に取り出すことができます。
①クリック
②wave viewのみを取り出すことができます。
シミュレーションの実行
20Active-HDL_manual_rev1.0
移動したい信号をドラッグ&ドロップで簡単に移動できます。
①ドラッグ&ドロップ
②RST信号が移動します。
信号の移動
21Active-HDL_manual_rev1.0
観測したい内部信号を間単に観測することが可能です。
①uutをハイライト
②uutをハイライトすると、内部信号が表示されます。内部カウンタcnt0~cnt3を観測したい場合はCntlキーを押しながら選択すると、複数の信号を選択できます。
③選択した内部信号をドラッグ&ドロップで波形エディタに移動させます。
内部信号の観測
22Active-HDL_manual_rev1.0
⑤バス名を変更したい場合は、自動的に作成されたバス名をクリックすると、名前の変更が可能です。
④取り出した内部信号をバス化したい場合は対象となる信号を選択し、[右クリック]→[Merge Signals]を選択すると、右図のようにバス化されます。
⑥バス名の前の+ボタンをクリックすることで内部バスの信号全てを表示できます。また、内部信号の並び替えもドラッグ&ドロップで可能です。ドラッグ&ドロップで
並び換え可能。
内部信号の観測
23Active-HDL_manual_rev1.0
⑦restartボタンをクリック
観測したい内部信号を全て取り出した後、restart を実行し、Runをかけることによって、取り出した内部信号の波形を観測することが可能です。
⑧Runをクリック
取り出した内部信号波形を確認できる
内部信号の観測
24Active-HDL_manual_rev1.0
内部信号が多い場合は、観測したい内部信号を簡単に検索することが可能です。
①uutをハイライト
②cntという内部信号を検索したい場合はこの部分に入力し、リターンを押します。リターン後にcntを含む内部信号が表示されます。
③選択した内部信号をドラッグ&ドロップで波形エディタに移動させます。
内部信号の検索
25Active-HDL_manual_rev1.0
バスの表示はデフォルトでヘキサ表示ですが、希望するフォーマットに表示変更することが可能です。
①cntというバスを変更した場合は、信号をハイライトし、右クリックからPropertiesを選択します。
②Generalタブから希望する表示フォーマットを選択し、OKをクリックします。(例ではBinaryを選択します。)
③表示がBinaryに変更されます。
信号の表示変更~数値表記変更
26Active-HDL_manual_rev1.0
信号の大きさ、色、太さの表示変更することが可能です。
④①を実施後Displayタブを選択、希望する色や大きさの変更をします。変更後OKをクリックします。
DisplayHeight ⇒ 波形の縦幅を設定します。Color ⇒ 波形の色を設定します。Bold ⇒ 波形を太くします。
ShapeLiteral ⇒ 波形を定数(数字)で表現します。Logic ⇒ 波形をHigh、Lowのレベルで表現します。Analog ⇒ 波形をアナログ表現します。
⑤変更した項目が反映されます。
信号の表示変更~色変更
27Active-HDL_manual_rev1.0
信号の値に任意の名前を付けることができます。
⑥Signal Alias Editorが立ち上がります。Alias_name⇒ 登録名を任意で付けます。Value ⇒シミュレーションで表示されている値を入力します。Mnemonic ⇒値に対応する名前を任意で付けます。
⑦ セーブをしてSignal Alias Editorを閉じます。
⑤①を実施後GeneralタブのEdit Aliasesをクリックします。
⑧ Use Aliasをチェックして、作成した登録名を選択します。
⑨ cntというバスの値にSignal Aliasで付けた任意の名前が反映されます。
信号の表示変更~値を任意名に変更
28Active-HDL_manual_rev1.0
Waveform editor から遅延を簡単に確認することができます。
①まず、Zoom Mode をクリック
②拡大したい範囲をクリックしながら選択します。
②を実行すると右図のように拡大されます。
遅延時間の確認
29Active-HDL_manual_rev1.0
③遅延を測定する為に、Measurement Modeをクリック。
始点終点
④測定したい遅延の始点をクリックした後、クリックした状態のまま、終点まで持ってゆき、離します。始点、終点のエッジ部でカーソルが緑色に変化します。その箇所で選択してください。
⑤選択した範囲の遅延が表示され、4.6nsであることが確認できます。
遅延時間の確認
30Active-HDL_manual_rev1.0
Active-HDLのGUI上でテストベンチソースファイルの編集が可能です。
①Filesを選択します。
②編集したいソースを選択
③ソースを編集します
④ソースを編集後セーブします。
⑤Consoleウィンドウで以下のコマンドを入力することでActive-HDLを再起動せずに再度シミュレーションが可能です。
do -tcl (テストベンチ名).fado (VHDL Functional Simulation用)do -tcl (テストベンチ名).xado (VHDL Post-Route Functional Simulation用)do -tcl (テストベンチ名).xado (VHDL Post-Route Timing Simulation用)do -tcl (テストベンチ名).vado (Velirog Functional Simulation用)do -tcl (テストベンチ名).rado (Velirog Post-Route Functional Simulation用)do -tcl (テストベンチ名).wado (Velirog Post-Route Timing Simulation用)
コマンド入力部で↓↑、kで過去の実行したコマンドを探すことができます。
ソース編集後の再シミュレーション
31Active-HDL_manual_rev1.0
シミュレーションの入力パターンをテストベンチソースではなくActive-HDL上で作成することができます。
①入力波形を作成する信号を選択して、右クリック⇒Stimulatorsをクリックします。
*例ではCLK信号を選択しています。TypeでClockを選び10MHzのクロック信号を生成しています。
②選択した信号名にチェックを入れます。
③Display Pathsにチェックを入れると、信号名+階層を表示します。
④Typerでスティミラスのタイプを選択します。
⑤選択したTyperによって、設定内容が表示されます。
パラメータを変更することで信号パターンが作成することができます。
⑥Applyで設定が反映されます。
スティミラス設定
32Active-HDL_manual_rev1.0
ブレークポイントを設定すると希望する状態で検証プロセスを停止させることができます。
①Simulation → Breakpoints を選択します。
②Signal Breakpointsを選択し、信号を選択。(今回は内部ノードのcnt_3を選択)
ブレークポイント設定
33Active-HDL_manual_rev1.0
③ -break always : 指定したラインが実行されたら停止-break when less : 指定したHit countよりも少ない場合に停止-break when equal : 指定したHit countと同じ場合に停止-break when grater : 指定したHit countよりも多い場合に停止-break when multiple of: 指定したHit countの整数倍で停止
ブレークポイント設定
34Active-HDL_manual_rev1.0
④runボタンをクリックすると、cnt3 = 1の時にBreak され、赤いラインで表示されます。
再度runボタンをクリックすると、次のcnt3 = 1時にBreak されます。
ブレークポイント設定
35Active-HDL_manual_rev1.0
Active-HDLでは任意のシミュレーションライブラリを作成することが可能です。
①Active-HDLを起動して、View⇒Library_Managerをクリックします。
②Attach Libraryをクリックします。
③登録するライブラリ(*.lib)を読み込む。“Attach as Global Library”にチェックを入れると、グローバルライブラリとして登録される。
ライブラリの登録
36Active-HDL_manual_rev1.0
シミュレーション結果をVCDファイル形式でExportすることが可能です。
①波形を表示した状態で、File⇒Export⇒Waveformsを選択します。
②保存形式をプルダウンメニューから選択して保存します。
VCD for Verilogdesign : Verilog用のVCDファイルVCD for VHDL design : VDHL用VCDファイル
*VCDファイルはLattice Power Calucratorツールで読み込み可能です。VCDファイルを使用して、より精度の高い消費電流の見積もりが可能です。
VCDファイル出力
37Active-HDL_manual_rev1.0
シミュレーション結果をJPG、BMP、GIF、PNGファイルで出力することができます。
①波形を表示した状態で、File⇒Export⇒Graficsを選択します。
②ファイル名、サイズ、画像フォーマット、出力範囲などを選択してOKをクリックします。
波形のファイル出力
38Active-HDL_manual_rev1.0
詳細なお問合せ、ご質問等に関しましては、技術サポート貴社担当FAEまたは下記技術サポート窓口までお気軽にお問い合わせ下さい。
株式会社 マクニカ テクスターカンパニー電話 045-470-9841/FAX 045-470-9842Email [email protected] http://www.tecstar.macnica.co.jp/
おわりに
39Active-HDL_manual_rev1.0
日付 Revision Old-page New-Page 変更内容の概要 更新担当者2008/11/28 1.0 初版 古屋
Revision History