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

更新


[[公開メモ]]

#contents

* 概要 [#rb5f9766]

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

* 参考資料 [#wefbba45]

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 への非対応項目のうち気になった部分 [#p7de40a2]

"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

* 元となる資料 [#ea873720]

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

現在、System Verilog は [[Accellera>http://accellera.org/]] という団体がその仕様を管理しています。
System C や OVL などもここが管理しているみたい。

実は 2015/10 現在の最新版は [[IEEE 1800-2012>http://accellera.org/downloads/ieee]] で、
[[IEEE 1800-2009>http://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=5354133]] 
はその古いバージョン。

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

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

* 合成可能部分について [#ge605b0a]

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

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

** Chap 6: Data type [#zf422d99]

$cast dynamic casting 6.24.2 Not Supported

** Chap 7: Aggregate data types [#df45c4a1]

- Tagged unions 7.3.2 Not Supported

** Chap 9: Processes [#w7b5e4e9]

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

** Chap 10: Assignment statement [#d6b502f5]

- Net aliasing 10.11 Not Supported

** Chap 11: Operators and expressions [#h3bdf1c5]

- 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 [#nc4b0035]

- Pattern matching conditional statements 12.6 Not Supported

** Chap 13.4: Function [#mcf5776e]

- Background process spawned by function call 13.4.4 Not Supported

** Chap 13.5: Subroutine calls and argument passing [#h1507727]

- Import and Export function 13.6 Not Supported

** Chap 23: Modules and hierarchy [#j19d2a5f]

- Binding auxiliary code to scopes or instances 23.11 Not Supported

** Chap 25: Interfaces [#k418ca5f]

- 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 [#m5743710]

- The std built-in package 26.7 Not Supported

* Early Access [#he0ca5c6]

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

** Dynamic Types [#aba0ac11]

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

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

Counter: 4763 (from 2010/06/03), today: 8, yesterday: 0