IVI動作確認

  • 2007/07/04(水) 10:07:20

ユーザディレクトリの下にIVIディレクトリを作り、この下にUpCntディレクトリを作ります。
Icarus Verilogの動作確認に使用したupcnt.v とupsnt_test.v をこのUpCntディレクトリにおきます。

/home /takuo /EDA
/IVI /UpCnt
       upcnt.v
       upcnt_test.v

eclipseを開きます。


ファイルメニューからNew→Project...を選択します。
IVIのIVI Verilog Projectを選択してNextをクリック。


Project Name をupcnt とし、Use DefaultのチェックマークをはずしてDirectoryをBrows..で先ほど作成したUpCntに指定してFnishをクリック。


Verilog開発用のパースペクティブを開くか聞いてくるので、Yesをクリック。


ここでVerilogファイルのエディットやコンパイルができるようです。
シミュレーションに入ります。
WindowメニューからOpen Perspective...→IVI Simulationを選択します。
(一番右のウインドウは使わないようなので閉じます)


波形エディタ用のファイルを追加します。
FileメニューからNew→IVI Wave Editorを選択するとNew Fileダイアログが開きます。


プロジェクトフォルダupcntを選択し、File Nameをwave.iwf としてFinishをクリック。

実行(RUN)します。
RunメニューからRun...を選択するとRunダイアログが開きます。


左側のIVI Cver VerilogからNew configurationを選択してRunをクリック。


右下IVI Simulation Viewウインドウの左側のモジュール名を選択すると右側に信号名が表示されます。
表示したい信号をShiftキーを押しながら選択し右クリック。Trace Signalsと出てくるのでこれを選択すると、画面左側にあるIVIDFIOListにその信号が表示されます。


同様にこのウインドウに表示されるモジュールを選択し信号を選択して右クリック。
Add to Wave →wave.iwfを選択すると、波形エディタに選択した信号が表示されます。

右下のIVI Simulation Vtew ウインドウの右上にある三角のRunボタンをクリックします。


波形エディタウインドウを選択してZoom Fullボタンを押すと波形が表示されます。

IVIインストール

  • 2007/07/03(火) 18:18:44

IVIは、eclopseのプラグインとして開発されています。
まず、eclipseをインストールします。

$sudo aptitude install eclipse

次に、IVIのアーカイブファイルをサイトよりArcフォルダにダウンロードします。

ダウンロードするファイルは次の三つです。

net.sourceforge.ivi.cver.linux_installer_1.0.2_1.zip
net.sourceforge.ivi.cver.tools.linux_installer_1.0.2_1.zip
net.sourceforge.ivi.linux_installer_1.0.2_1.zip

では、インストールを始めます。
まず、eclipseを開きます。

$eclipse

ディスクトップのパネルメニューのアプリケーションから→プログラミング→Eclipseでも開くことができます。
HelpメニューからSoftware Updates→Find and install...を選択すると、Install/Updateダイアログが開きます。


Search for new feature installを選択して、Nextをクリック、Installダイアログが開きます。


New Archived Site...をクリックするとSelect Local Site Archiveダイアログが開きます。


ArcフォルダにダウンロードしたIVIのアーカイブファイルを選択してOKをクリック。


Edit Local SiteダイアログがでたらOKをクリック。


インストールする三つのアーカイブファイルにチェックマークがついているのが確認できたらFinishをクリック。


Search Resultsダイアログがでたら、インストールする三つのアーカイブファイルにチェックマークをつけてNext。


Feature Licenseダイアログがでたら、ライセンスに同意するにチェックを入れてNext。
Installationダイアログでインストールディレクトリの確認をしてFinish。


Feature Verificationダイアログでインストールの確認をしてInstall Allをクリック。
インストールが開始されます。


インストールが終わると、Install/Updateダイアログが開き、Yesをクリックするとeclipseがリスタートします。

GPLCverインストール

  • 2007/06/30(土) 19:09:33

まず、コンパイルするときに必要なgccをインストールします。

$sudo aptitude install gcc

次に、ユーザディレクトリの下にEDAフォルダを作成し、この下にGplCverフォルダを作成します。

/home /takuo /EDA /GplCver
/Arc

サイトよりバイナリファイル(gplcver-2.12a.linux.bin.tar.bz2)をダウンロードします。
ダウンロードする際ダウンロード先フォルダをArcフォルダにするために、ウェブブラウザIceweaselの編集メニューより設定を選択してその設定を行います。

Arcフォルダにダウンロードされているのが確認できたら、EDAフォルダの下に作成したGplCverフォルダに移動し

$tar xvfj ../../Arc/gplcver-2.12a.linux.bin.tar.bz2

gplcver-2.12a.linux.binフォルダが作成されるので、このフォルダに移動し、更にこの中にあるsrcフォルダに移動して、

$make -f makefile.lnx all

gplcver-2.12a.linux.binフォルダ作成されたbinフォルダにあるcverにPASSを通します。
このbinフォルダに移動して、

$cp cver /user/local/bin/

では、動作確認をします。
ユーザディレクトリの下にCverディレクトリを作り、この下にUpCntディレクトリを作ります。
Icarus Verilogの動作確認に使用したupcnt.vとupcnt_test.vをこのUpCntディレクトリにおきます。

/home /takuo /EDA
/Cver /UpCnt
   upcnt.v
   upcnt_test.v

UpCntディレクトリに移動して

$cver upcnt.v upcnt_test.v

vcdファイル upcnt.vcd ができているのが確認できたら、

$gtkwave upcnt.vcd

GTKWaveが開きます。
ツールメニューのSeachをクリックしプルダウンメニューからSignal Search Treeを選択。
観測したい信号を選択してAppendをクリックすると波形が表示されます。


Icarus Verilog インストール

  • 2007/06/28(木) 20:16:44

Icarus Verilogはパッケージ化されているので、aptitudeコマンドを使って、

$sudo aptitude install verilog

でインストールできます。

次に、波形表示ツールGTKWaveをインストールします。
これもパッケージ化されているので

$sudo aptitude install gtkwave

では、動作確認をします。
テストに使うモジュールは、アップカウンタ(upcnt.v)です。
カウンタのビット幅はパラメータで設定できます。今回はパラメータを4にして4ビットカウンタとします。
テストベンチ(upcnt_test)では、カウンタをリセットしてからキャリーが出るまでカウントするようにしています。
カウント数は、task文を使って、カウンタ出力がAll1になるまでループするようにしています。
テストベンチのinitial begin の下にある

$dumpfile("upcnt.vcd");
$dumpvars(0,upcnt_test);


では、vcdファイル名(upcnt.vcd)と観測する信号のモジュール名(upcnt_test)を指定しています。

upcnt.v
/*-----------------------------------------------
up counter with enable & reset
------------------------------------------------*/

module upcnt ( en,
clk,
reset,
carry,
dout);
parameter DW = 8;
input en,clk,reset;
output [(DW-1):0] dout;
output carry;

reg [(DW-1):0] dout;

always @(posedge clk) begin
if(reset) begin
dout <= {DW{1'b0}};
end else if(en) begin
dout <= dout + 1;
end else begin
dout <= dout;
end
end

assign carry = (dout == {DW{1'b1}}) ? 1 : 0;

endmodule

upcnt_test.v(テストベンチ)
/*------------------------------------------------
up counter test bench
-------------------------------------------------*/

`timescale 1ns/1ns

module upcnt_test;

parameter DW = 4;

reg en,clk,reset;

wire [(DW-1):0] dout;
wire carry;

upcnt #(DW) upcnt(
.en (en),
.clk (clk),
.reset (reset),
.carry (carry),
.dout (dout)
);
/*simulation start*/

parameter step = 30;
integer count;

always #(step/2) clk = ~clk;

initial begin
$dumpfile("upcnt.vcd");
$dumpvars(0,upcnt_test);

en = 0;
clk = 0;
reset = 0;
#step reset = 1;
#step reset = 0;
#step roop;
#step en = 0;
$finish;
end

task roop;
for (count = 0; count <= {DW{1'b1}}; count = count + 1) begin
#step en = 1;
end
endtask

endmodule

ユーザディレクトリの下にIcarusディレクトリを作り、この下にUpCntディレクトリを作ります。
上のupcnt.vとupcnt_test.vの二つのファイルをこのUpCntディレクトリにおきます。

/home /takuo /EDA
/Icarus /UpCnt
   upcnt.v
   upcnt_test.v

UpCntディレクトリに移動して

$iverilog -o upcnt -s upcnt_test upcnt.v upcnt_test.v

-o upcnt で、出力ファイルupcntを指定します。
この指定を行わなかった場合、出力ファイルはaoutとなります。
-s upcnt_test でテストベンチのモジュール名upcnt_test を指定します。
この指定は行わなくても動作するようです。
出力ファイル upcnt ができているのが確認できたら、

$vvp upcnt

で、vcdファイルが作成されます。
vcdファイル upcnt.vcd ができているのが確認できたら、

$gtkwave upcnt.vcd

GTKWaveが開きます。
ツールメニューのSeachをクリックしプルダウンメニューからSignal Search Treeを選択。
観測したい信号を選択してAppendをクリックすると波形が表示されます。