VivadoのSystemVerilog対応状況(シミュレーション編)

(1099d) 更新

公開メモ

概要

電気回路/HDL/VivadoのSystemVerilog対応状況(合成編) につづいてシミュレーション編を

参考資料

Vivado Design Suite User Guide - Logic Simulation [UG900 (v2015.3) September 30, 2015]

http://www.xilinx.com/support/documentation/sw_manuals/xilinx2015_3/ug900-vivado-logic-simulation.pdf

こちらも頻繁に更新され、どんどん機能が追加されています。

主に、"Appendix D: System Verilog Constructs Supported by the Vivado Simulator" の内容についてです。

まずは Verilog への非対応項目のうち気になった部分

"Appendix B: Vivado Simulator Mixed Language Support and Language Exceptions" の "Verilog Language Support Exceptions" より

  • System Timing Check Commands
    • $skew_timing_check not supported
    • $timeskew_timing_check not supported
    • $fullskew_timing_check not supported
    • $nochange_timing_check not supported
  • Value Change Dump (VCD) Files
    • $dumpportson not supported
    • $dumpports not supported
    • $dumpportsoff not supported
    • $dumpportsflush not supported
    • $dumpportslimit not supported
    • $vcdplus not supported

元となる資料

マニュアルでは Synthesizable Set of System Verilog 1800-2009 との差分で表示されています。

現在、System Verilog は Accellera という団体がその仕様を管理しています。 System C や OVL などもここが管理しているみたい。

実は 2015/10 現在の最新版は IEEE 1800-2012 で、 IEEE 1800-2009 はその古いバージョン。

最新版は上記リンクから無料で落とせるけれど、古いバージョンは購入しないと読めないみたい。

仕方がないので最新版を見ながら考えることに・・・

合成可能部分について

基本は Synthesizable Set of System Verilog 1800-2009 との差分なので、 合成不可能な部分については別途の記述になります。

とりあえず、unsupported の物を列挙してみます。

Chap 6: Data type

$cast dynamic casting 6.24.2 Not Supported

Chap 7: Aggregate data types

  • Tagged unions 7.3.2 Not Supported

Chap 9: Processes

  • Parallel blocks 9.3.2 Not Supported
  • Sequence events 9.4.2.4 Not Supported

Chap 10: Assignment statement

  • Net aliasing 10.11 Not Supported

Chap 11: Operators and expressions

  • Streaming concatenation as an assignment target (unpack) 11.4.14.3 Not Supported
  • Streaming dynamically sized data 11.4.14.4 Not Supported

Chap 12: Procedural programming statement

  • Pattern matching conditional statements 12.6 Not Supported

Chap 13.4: Function

  • Background process spawned by function call 13.4.4 Not Supported

Chap 13.5: Subroutine calls and argument passing

  • Import and Export function 13.6 Not Supported

Chap 23: Modules and hierarchy

  • Binding auxiliary code to scopes or instances 23.11 Not Supported

Chap 25: Interfaces

  • Clocking blocks and modports 25.5.5 Not Supported
  • Interfaces and specify blocks 25.6 Not Supported
  • Example of multiple task exports 25.7.4 Not Supported
  • Virtual interfaces 25.9 Not Supported

clocking が使えるとシミュレーションがはかどりそうなのに・・・

Chap 26: Packages

  • The std built-in package 26.7 Not Supported

Early Access

Early Access として、Synthesizable でない部分も実装されています。

Dynamic Types

  • String
  • Queue
  • Associative Array
  • Class
  • Non-synthesizable constructs

このリストは徐々に拡充されてきているので、今後も楽しみです。


Counter: 2422 (from 2010/06/03), today: 13, yesterday: 0