琉球大学情報工学科 和田 知久
- 真理値表
入力信号 出力信号 A B S C 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1
- ブール式
S = A xor B ;
C = A and B ;
リスト4.1(コピー)
リスト4.1(オリジナル)
ライブラリ宣言 | library IEEE; use IEEE.std_logic_1164.all; |
ライブラリ宣言、STD_LOGICを使用する場合に必要 いつもSTD_LOGICを使用するのでいつも必要! |
ENTITY宣言 回路の名前と 入出力信号 |
entity HALF_ADDER is | エンティティ宣言 |
port ( A, B : in std_logic; S, C : out std_logic ); |
ポート宣言(入出力信号と信号のデータタイプを定義) | |
end HALF_ADDER; | エンティティ終了。";"忘れるな! | |
回路の中味の記述 | architecture STRUCTURE of HALF_ADDER is | アーキテクチャ宣言 |
begin S <= A xor B; C <= A and B; end STRUCTURE; |
同時処理文! コンピュータプログラムとは違う この場合4つの同時動作するゲートに対応 |
リスト4.12(コピー)
リスト4.12(オリジナル)
ライブラリ宣言 | library IEEE; use IEEE.std_logic_1164.all; |
ライブラリ宣言、STD_LOGICを使用する場合に必要 いつもSTD_LOGICを使用するのでいつも必要! |
エンティティ | entity TESTBENCH_HA is end TESTBENCH_HA; |
エンティティ宣言 -- テストベンチのエンティティは空 |
アーキテクチャ | architecture SIM_DATA of TESTBENCH_HA is | |
component HALF_ADDER port ( A, B : in std_logic; S, C : out std_logic ); end component; |
以下の用いる回路部品(コンポーネント)の宣言 | |
signal SA, SB, SS, SC : std_logic; | 新たに使用する信号の宣言 | |
begin -- 検証対象回路のインスタンス化 M1 : HALF_ADDER port map (SA, SB, SS, SC); -- テストベクトル P1 : process begin SA <= '0'; wait for 50 ns; SA <= '1'; wait for 50 ns; end process; P2 : process begin SB <= '0'; wait for 100 ns; SB <= '1'; wait for 100 ns; end process; end SIM_DATA; |
実際のテストベンチ回路 | |
-- configuration宣言(最上位階層では必須) configuration CFG_HA of TESTBENCH_HA is for SIM_DATA end for; end CFG_HA; |
VHDLではひとつのエンティティに複数のアーキテクチャを持たせることができるので、その割り当ての宣言。 必ず最上位階層に記述する必要がある。 |
Synopsys EDA Toolを使えるようにするためには、以下に示す簡単な初期設定を行う必要がある。なお、Synopsys EDA Toolは 各pw*** にインストールされているため、以下の作業は pw*** に login をして行うこと。
ツールのセットアップ
1) nwにloginする2) そこからpwにsshする
3) pw 上のシミュレータを用い動作シミュレーションを行う。このとき、グラフィカルウインドウを自分の使用しているローカルなディスプレイに表示する必要があるので、以下の設定が必要である。(ニュースのDaisukeKAYOUにしたがってます。)
nwのローカルなウインドウで
% xhost pw016
pw に ssh したウインドウで
% setenv DISPLAY nw0216:0.0
4) 作業ディレクトリを作成し、そこに上記2つのファイルをコピーする。
% mkdir vhdl
% cd vhdl
% mkdir hadder
% cd hadder
netscape等を立ち上げ、上記2ファイルを作業ディレクトリにコピーする(Save Asでセーブする)
以下の2つのファイル名にする
hadder.vhd
hadder_test.vhd
5) VHDLアナライザ(vhdlan)でハーフアダーの構文解析をする。
% vhdlan hadder.vhd
エラーメッセージ等があればエラーを修正して、再コンパイルする。
コンパイル後に、.sim, .mra 等のファイルができるので確認する。
6) テストベンチファイル hadder_test.vhdの内容を理解し、構文解析をする。
% vhdlan hadder_test.vhd
7) Sciroccoコンパイラを用いてシミュレーション用実行ファイル scsim を作成する。コンパイラの引数は、テストベンチで宣言したコンフィグレーション名を用いる。
% scs CFG_HA
****** 以上でシミュレーションの準備は終了 *****
8) VHDLシステムシミュレータを Scirocco を起動する。
% scirocco
9) Scirocco を起動すると Menu Window が現れるので、 Interactive ボタンを押す。
10) Interactive ボタンを押すと、Simulator Invocation Dialog Window が現れるので、Type メニューから Scirocco を選びOKボタンを押す。この時、Interactive Window が現れる。
11) Menu Window の Hierarchy ボタンおよび Waveformボタンを押し、Hierarcy WindowとWaveform Windowを開く。
12) Hierarchy WindowのHierarchy欄で、テストベンチのentity名を選択すると、Signal欄に信号線名が表示される。そこから必要な信号を選択し、Waveform Windowへドラッグ&ドロップする。
13) Interactive Windowのシミュレーションタイムを適当な値(20)に設定して、すぐ右のOKボタンを押すと、Waveform Windowにシミュレーション波形が表示される。
14) Menu Window のExitボタンで全てを終了できる。
15) hadder.vhdのあるディレクトリに移動し、デザインアナライザーを起動する。
% design_analyzer &
デザインアナライザのウインドウが開く。このメニューを使って、回路を合成する。
16) ライブラリを確認する。
Setup -> Defaultsでターゲットライブラリがclass.dbであることを確認する。
17) VHDLファイルを読み込む。
File -> Read
hadder.vhd を選択し、OKをクリック。
18) 入出力ピンを確認する。
ウインドウ中央の HALF_ADDER をクリックし、左の下向き矢印ボタンを押す。
(もしくは、ダブルクリックする。)
19) 合成前の回路を確認する。
回路シンボルをダブルクリックしてさらに下位レベルへ移動する。
(もしくは、左のANDのボタンを押す。)
20) 面積最小で回路を合成する。
Attributes -> Optimization Constraints -> Design Constraints
Max Area を 0.00 として、Apply
Tool -> Design Optimization
デフォルトの設定でOK
これで、回路が合成される。
21) クリティカルパス(最大遅延パス)をハイライトする。
Analysis -> Highlight -> Critical Path
22) 合成された回路の、面積、クリテイカルパスの遅延時間とその経路を調べる。
Analysis -> Report
Timing, Areaをチェックして、Apply
リストより、
Combinational Area:
Total Cell Area:
クリティカルパス遅延:(data arrival time)
Start point:
End point:を調べる。
以上