FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

OpenSPARC T1の調査(1. シミュレーション環境の構築)

どうもOpenSPARC T2の調査が芳しくないので、一つ前に戻って、OpenSPARC T1について調査してみよう。

まず、simsコマンドについて調査していたのだが、VCS, NC-Verilog以外のシミュレータを使うための手段として、以下のサイトが参考になった。

abishekramdas.blogspot.jp

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

とりあえず動くようになったけど、ちゃんと命令フェッチは走り始めてるのかなあ。。。

要確認。

f:id:msyksphinz:20170225201753p:plain

追記:なんだかDRAMの初期化っぽいのが始まった気がする。もうちょっと様子を見てみよう。

f:id:msyksphinz:20170225215312p:plain