VeritakSV の評価結果                        Oct.18..2010 updated by Tak.Sugawara                  


1.目的

  開発中のSIMエンジンの評価を行い、フレームワークの検証を行う。 比較対象としてModelSimXE6.5Cを使用。
  
2.ベンチ
  

Item Description Remarks
Machine Q9550(2.87GHz) DDR2 8GB memory
Core i7 920 DDR3 6GB memory
OS Vista Ultimate 32bit (Q9550)
Windows7 64bit (Core i7)
Test Bench Verilator's Site Bench/ FZ80/ Etc.
Simulator VeritakSV3.83A(0.39α)
/Veritak3.75(Basic/Pro) MXE6.5C(Not Starter. Full Xilinx Edition of Modelsim)
Measured Time From Simulation Starts to Simulation ends.
Not include compile time.
Veritak:Optimized Debug:Normal/ Level/2/NBA/Fast Switch


3. 結果

コンパイル後実行から終了までの時間を計測

Machine Q9550 Vista Ultimate 32bit-8GB DDR2

Category Bench Test Name Veritak-Pro(sec) VeritakSV(sec) MXE (sec) MXE/VeritakSV Veritak SV Remarks
w/o waveform w/ waveform w/o
waveform
w/
waveform
w/o
waveform
w/
waveform
Gate C6288(ISCAS'85) 14 0.38 0.83 57.44 151.96 151x 84x CycleBased
Altera Altera PLL 15 2.69 3.25 9.36 20.53 3.59x 6.3X
ddr 34 10.0 11.8
ddr3 78 28 37
ddr2-avalon 20 6.18 7.0
rapid-io 121 27.6 35.16
pci-express - 19 25.5
Xilinx DCM 69 12.8 17 21.12 39.34 1.65x 2.31x
RAM36 17 7 7.2 142 149.1 20.29x 20.71x
pci-xilinx 15 4.92 7.1
ddr2 -m 2 0.86 0.96
ddr3-11.1 204 91 101
Small Design WB_Z80(opencores) 28 6.1 6.57 69.56 83.87 12.4x 12.8x
DIV(opencores) 136 63 70 556 682 8.83x 9.74x
USB1.1(opencores) 21 8.7 9.43 1013 120 11.61x 12.72x
m68k(opencores) 137 32 119 562 1147 17.56x 9.64x
ata(opnecores) 107 36.6 107 732 1161 20.0x 10.85x
tv80(opencores) 10 5.3 6.0 31.12 75.69 5.87x 12.62x
fz80 15 5.43 6.43 42.6 71.17 8.82x 11.07x CycleBased
AES(sugawara-systems.com) 7 2 2.84 18.22 67.61 9.12x 23.78x CycleBased
VGA(user contributed) 17 9 19 140 292 15.56x 15.37x
conmux(opencores) 14 4.75 5.15 82.75 148 17.43x 28.74x
AC97(opencores) 392 202.9 230 1868 2030 9.21x 8.83x
H8(sugawara-systems.com) 5 2.05 2.4
YACC-w/o cache(opencores) 65 81
YACC-w/ cache(sugawara-systems.com) 215 135 165
openrisc(opencores) 5 1.48 1.84 14.58 17.26 9.82x 17.26x
A0(sugawara-systems.com) 4 2.71   2.96 11.08 16.44 4.09x 5.55x
LatticeMico32 387 126 146 765 2018 6.07x 13.82x
fpu(opencores) 1636 432 750 3844 12950 8.90x 17.5x
Large Design PCI(opencores) 305 557 2482 5533 8.06x 9.93x
Ethernet(opencores) 322 476 Iterationlimit -
Basic Component base_test_bench_delay 9 6.04 25.11 4.15x
base_test_bench_nba_delay 10 7.27 54.78 7.54x
base_test_bench_prop 8 0.53 2.92 5.51x
base_test_bench_prop_delay 50 8.35 76 9.11x
base_test_bench_prop_nba 53 10.61 107 10.08x CycleBased
base_test_bench 3 0.43 1.36 3.16x
base_test_bench_inv 3 0.44 1.32 3.0x

* w/o : 波形Saveなし
  w/ : デザイン全体の波形Save
あり

4.考察

4.1 速度比

MXEとの比較では、全体の95%のベンチで3倍速以上、平均的には、MXE比10倍速が得られた。現行VeritakPro-Fastモードの比較では、3倍速程度となった。なお、MXEは、40% of PE、SEは、PEの1-3xとされている。



4.2 波形追加

波形を追加すると、1.1倍から2倍程度に速度低下している。一般に低速なシミュレータでは、波形追加しても目立った速度低下は起きない。しかし、高速なシミュレータでは、波形を追加すると、SIMEngineよりも波形処理の方が重くボトルネックになることがある。VeritakSVでは、GUI部のマルチスレッド化で分散処理することにより、波形追加による速度低下を抑えている。特に大規模デザイン(上表でPCIやEthernet等)、または長期シミュレーション(fpu)では、ディスクアクセスがネックになるがその場合でも効果的に作用していると言える。勿論、この優位性は、DualCPU以上のマシンでのみ発揮される。SIMエンジンに1CPU,波形処理に1CPU,大量にログテキストを吐く場合には、さらに1CPUあるのが理想的であるので、VeritakSVのパワーをフルに発揮するには3CPU以上を推奨する。


 64 bit Simulatorの効果
 
<32ビットの限界>
  32ビットOS環境下では、1プロセスあたりのユーザメモリは、搭載RAM容量によらず2GBMaxになる。これを上回るデータが発生した場合は、ディスクに退避されることになる。これは、OSの制限であってアプリケーション側では避けることができない。このために例えば8GBというRAMを搭載していても32ビットOS下では、有効に生かすことはできない。

そこで、VeritakSVでは、64ビットOS環境下で動作する専用GUI(VeritakSV64)を搭載してこの問題に対処する。なお、SimEngine自体は、32ビットで動作するので、従来通り外部環境インターフェースVPI/DPI/DPI-SCは変更の必要がない。

 上の32ビットOS環境データで、波形追加で比較速度劣化の大きいベンチについて、64ビット環境(VeritakSV64)との比較を示す

 

Category Bench Test Name VeritakSV(sec)
8GB-32ビットVista
VeritakSV64(sec)
6GB-64ビットWindows7
MXE (sec)
8GB-32ビットVista
MXE/VeritakSV64
w/o waveform w/waveform w/o waveform w/ waveform w/o
waveform
w/
waveform
w/o
waveform
w/
waveform
Small ATA 36.6 107 32 40.7 731 1161 24x 29x
Small VGA 9 19 8.2 11.6 140 292 17x 24X
Small M68K 32 119 30 40.1 562 1147 19x 29x


 <マシン性能比 Q9550-Corei7 vs 920>
 波形なしで比較してみると、32ビットマシンと64ビットマシンの速度差は、殆どない。WOW64のオーバヘッドは、殆どないと考えられ、速度差は、Q9550とCorei7-920の性能差と見る。

 <安くなったDDRを生かす>
 これに対して、波形ありでは、64ビットマシンとの差は歴然としている。上の考察の通り、6GB搭載RAMが有効に生かされ、ディスクアクセスがなかった為に64ビットマシンでは目立った劣化がない。このように、大規模・長期シミュレーションでは、64ビット環境で,マルチCPUを有効に使い、かつ安くなったDDR-RAMを大量に搭載することで、ドラスティックな体感速度の向上が得られる可能性が高い。


4.3 Native Debugger
  VeritakSVでは、NativeDebuggerが搭載されているのでデバッグモードは存在しない。最高速で走行中に、手続き構文のみならず、ネット構文にもブレークポイントが置け、ツールチップ付きのシングルステップ行RUNが利用可能である。


5.課題

    64ビットOS環境下では、32ビットのワークスペースは2GBではなく、ほぼ32ビット限界の4GBが利用可能であり、従来より2倍強デザイン規模の拡大が可能になる。64ビットクロスコンパイルを構築し、さらなる大規模デザインに対応する必要がある

<参考>

http://www.synopsys.co.jp/products/technology/vcs/cross_compile_tb.html

     遅延なしゲートシミュレーションの高速化、RTLソースなしIPをゲートレベル記述で高速シミュレートする。  

    シミュレータの内部状態Save機能の搭載。Veritakでは、シリアライズ機能でSaveしてきたが、メンテナンス性に難があった。メモリプールを利用した高速な状態Save方式の開発が必要。 結果的にExe化することができる。 EXEがあれば、コンパイル時間不要で、バッチ化したregression testを並列に何本も走らせることが容易になる


が未だ残っているが基本的なフレームワークとしては、確認できたと考える。これらは、

といった背景技術により支えられている

 

 

6. 結論