VivadoのSystemVerilog対応状況(シミュレーション編)
- 概要
- 参考資料
- まずは Verilog への非対応項目のうち気になった部分
- 元となる資料
- 合成可能部分について
- Chap 6: Data type
- Chap 7: Aggregate data types
- Chap 9: Processes
- Chap 10: Assignment statement
- Chap 11: Operators and expressions
- Chap 12: Procedural programming statement
- Chap 13.4: Function
- Chap 13.5: Subroutine calls and argument passing
- Chap 23: Modules and hierarchy
- Chap 25: Interfaces
- Chap 26: Packages
- Early Access
概要†
電気回路/HDL/VivadoのSystemVerilog対応状況(合成編) につづいてシミュレーション編を
参考資料†
Vivado Design Suite User Guide - Logic Simulation [UG900 (v2015.3) September 30, 2015]
こちらも頻繁に更新され、どんどん機能が追加されています。
主に、"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
このリストは徐々に拡充されてきているので、今後も楽しみです。