2010年2月19日金曜日

Javaのヒープ領域設定

とりあえず、

_JAVA_OPTIONS=-Xmx256m

とか設定しておくと、ヒープ領域を減らすことが出来る模様。

2010年2月8日月曜日

taskのoutput

verilog のtask のoutputについて。

verilog HDLのtaskではoutput宣言が出来ます。
このoutputですが、task終了時に値が反映されるようです。
つまり、task内でoutputを色々と遷移させても、outputに
接続された信号は遷移しない。

VHDLのprocedureでは、outに信号を接続することで、
接続された信号が遷移するのですが。何かいい方法は
ないですかね。

2009年6月23日火曜日

ISIM(ISE Simulator)

ISE Simulator(10.3)で、xcoを含むファイルをシミュレーションする際には、CORE Generatorで生成されているファイルも、シミュレーション環境の下にないと反映されない。
相対パスでxcoがあるパスを指定したとしても、それではシミュレーションに反映されなかった。

2009年5月7日木曜日

ModelSimでの信号追加

ModelSimで、全ての信号をモニタしたい場合、

add wave -r /*

で信号を保存しておける。

2008年10月21日火曜日

perlのリファレンス参照

perlの配列渡しで、リファレンスでサブルーチンに渡すことを試す。

サンプルとしては、以下。

--
#! /bin/perl

sub test {
my ( $ref, $ref_count ) = @_;
print "test:@org reference = ", $ref, "\n";
print "test:@org reference = ", $ref_count, "\n";
print "test:@org reference = ", @$ref, "\n";
print "test:@org reference = ", @$ref[0], "\n";
}

my @org = ( 1, 2, 3, 4, 5 );
my $org = @org;

&test( \@org, $org );

print "main:@org reference = ", \@org, "\n";
print "main:@org reference = ", $org, "\n";

--

要点としては以下。
・リファレンスを渡す場合、配列の前に\をつける。
@aaa -> \@aaa
・配列の数は、どうやら別途渡してやらないとサブルーチンではいくつの配列か判らないっぽい。
$aaa = @aaa で配列数をカウントし、サブルーチンに渡す。

2008年4月18日金曜日

サブルーチン(?)へのファイルポインタの引き渡し方法

perl使用時のサブルーチン(?)へのファイルポインタの引き渡し方法は、以下のとおり。

open ( WRITE_FILE, "> test.txt" );

&test_write ( *WRITE_FILE );

close ( WRITE_FILE );

sub test_write {
local(*FH) = @_;

printf( FH "Hello world\n");
}

[要調査項目]
(1) * は“型グログ”というらしい。詳細はチト不明。
(2) sub で記述している部分については、サブルーチンでいいのか? 関数とかではなく?
(3) localとmyの違い。なんか昔調べたのだけど忘れた。

2008年3月18日火曜日

ModelSimでのRocket IOお試し

ModelSimでRocket IO(Xilinx)のシミュレーションを実行してみる。
なお、Rocket IOのシミュレーションには、Smart Model対応の環境が必要。

試したモジュールは、CoreGeneratorで生成した“GTP Aurora(2.8)”。
これで生成すると、projectフォルダの下に以下のフォルダが生成される。

project
+- module_name
+ +- cc_manager
+ +- clock_module
+ +- examples
+ +- scripts
+ +- src
+ +- testbench
+ +- ucf

scriptsの下にお試し用のスクリプト(example_test.do)がある。
example_test.doでは、scriptsの直下で行なうことを前提としているような形でファイルの位置情報が記載されているので、scriptsフォルダをシミュレーション用フォルダとするか、module_nameの下にシミュレーション用フォルダを作成すること。

以下、VHDLおよびverilog HDLでのシミュレーション実行までの手順を示す。なお、基本的には2回目以降はexample_test.doを実行すればいいはず。

[VHDLの場合]
(1) smart_modelを使えるように、libraryを設定する。
> compxlib -s mti_pe -arch virtex5 -smartmodel_setup

# なおmodelsim.iniも書き換えておく必要あり。この辺を参照すること。
# http://japan.xilinx.com/support/answers/14019.htm

(2) example_test.doを編集する。MTI_LIBS変数はどこにも定義されていない上に不要な模様なので、以下の行をコメントアウトしておく。
set MTI_LIS $env{MTI_LIBS}

(3) example_test.doを実行する。
> do example_test.do


[verilog HDLの場合]
(1) VHDLと同様にライブラリの設定をする。詳細は前述を参照。

(2) example_test.doを編集する。MTI_LIBSはVHDLと同様にコメントアウトしておく。

(3) simprim、unisim、xlinxcorelibの参照位置をvmapコマンドで変えておく。
> vmap simprim C:/xilinx/verilog/mti_pe/simprims_ver
> vmap unisim C:/xilinx/verilog/mti_pe/unisims_ver
> vmap xilinxcorelib C:/xilinx/verilog/mti_pe/xilinxcorelib_ver

# これをしないと、なぜかVHDLの方のライブラリを参照しにいってしまい、
# “FDSモジュールにINIT変数なんかない”と言われてvsimでErrorで落ちる。

(4) example_test.doを実行する。
> do example_test.do


verilogの(3)については、もっと別のやり方があるような気がするので、時間があるときに方法を探しておこう。