どうもOpenSPARC T2の調査が芳しくないので、一つ前に戻って、OpenSPARC T1について調査してみよう。
まず、sims
コマンドについて調査していたのだが、VCS, NC-Verilog以外のシミュレータを使うための手段として、以下のサイトが参考になった。
tar xjf OpenSPARCT1.1.7.tar.bz2 cp OpenSPARCT1.bash OpenSPARCT1.origin.bash chmod +w OpenSPARCT1.bash emacs OpenSPARCT1.bash source OpenSPARCT1.bash
Emacsでの編集内容は以下。
export DV_ROOT=/home/masayuki/work/opensparc/t1/ export MODEL_DIR=/home/masayuki/work/opensparc/t1_model/
sims
の実行は以下を利用する。
sims -sim_type=mti -group=core1_mini -sim_build_cmd=vlog -sim_run_cmd=vsim -sim_build_args="-work worklib" -sim_run_args=worklib.cmp_top -novera_build -novera_run -novcs_run
このままでは、ファイルリストが正しく生成できないので、bw_cpp
を訂正する。
# cpp -E -traditional-cpp `/bin/echo $* | /bin/sed 's/-B/ /g' ` | \ cpp -P -E -traditional-cpp `/bin/echo $* | /bin/sed 's/-B/ /g' ` | \
ここまで行くと、vlog
を実行することが出来るようになるのだが、Intel ModelSim Starter Editionの影響だかよく分かっていないのだがエラーが発生する。どうもオプションが違うらしいのだが修正方法が分からない。
sims: LM_LICENSE_FILE : /import/EDAtools/licenses/synopsys_key:/import/EDAtools/licenses/ncverilog_key sims: NOVAS_HOME not defined, Debussy will not be used. sims: Building rtl model sims: vlog -work worklib -f flist Model Technology ModelSim - Intel FPGA Edition vlog 10.5b Compiler 2016.10 Oct 5 2016 Start time: 19:45:05 on Feb 25,2017 vlog -work worklib -f flist ** Error: (vlog-66) Execution of vlib failed. Please check the error log for more details. sh: 1: /home/masayuki/intelFPGA/16.1/modelsim_ase/linuxpe/vlib: not found
最初に、vlib worklib
を実行しておけば問題ないことは分かっているので、tools/src/sims/sims,1.262 line 2285.
を修正してしまう。
- 訂正前
if (! $opt{dryrun}) { system ($build_cmd) ; die ("DIE. failed building model") if ($?) ; }
- 訂正後
if (! $opt{dryrun}) { system ("vlib worklib") ; system ($build_cmd) ; die ("DIE. failed building model") if ($?) ; }
ただし、このままではどうもperlのバージョンが合わないのか、うまく行かない。
どうもアセンブラをコンパイルしている見たいのなのだが、Vector.so
でエラーが発生している。
sims: Looking for diag under $DV_ROOT/verif/diag sims: Found diag under /home/masayuki/work/opensparc/t1//verif/diag/assembly/arch/cache_buf/Dcache_war.s sims: assembling diag sims: midas -mmu=niagara -diag_root=/home/masayuki/work/opensparc/t1/ diag.s /usr/bin/perl: symbol lookup error: /home/masayuki/work/opensparc/t1//tools/perlmod/Linux-x86_64/auto/Bit/Vector/Vector.so: undefined symbol: Perl_Gthr_key_ptr sims: Caught a SIGDIE. midas compilation error at /home/masayuki/work/opensparc/t1//tools/src/sims/sims,1.262 line 4090. /bin/rmdir: '/var/tmp/masayuki:dcache_war:model_core1:core1_mini:0:26202' を削除できません: そのようなファイルやディレクトリはありません sims: imiss_branches:model_core1:core1_mini:0 Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE *(\w+)}*/ at /home/masayuki/work/opensparc/t1//tools/src/sims/sims,1.262 line 3980.
これ、かなりいろいろ調査して解消しようとしていたのだが、結局うまく行かない。
midas -mmu=niagara -diag_root=/home/masayuki/work/opensparc/t1/ diag.s
まずは先に進むために、この部分を省略してみよう。
# my $waitstatus = call_program($cmd, "midas.log"); my $waitstatus = 0;
続いて、 symbol.tbl
の条件を削除する。
# die ("DIE. could not find symbol.tbl file") if (!-f "symbol.tbl") ;
worklibの場所をどのように指定すれば良いのか分からないなあ。とりあえず絶対パスを渡しておく。
sims -nosimslog -sim_build -novera_build -sys=core1 -vcs_rel_name=core1_2017_02_25_4 -sim_build_cmd=vlog -sim_run_cmd=vsim -sim_build_args="-work worklib" -sim_ run_args=/home/masayuki/work/opensparc/t1_model/core1/core1_2017_02_25_3/worklib.cmp_top -novera_run -novcs_run -nosas -novcs_run
とりあえず動くようになったけど、ちゃんと命令フェッチは走り始めてるのかなあ。。。
要確認。
追記:なんだかDRAMの初期化っぽいのが始まった気がする。もうちょっと様子を見てみよう。