FPGAロジック開発におけるVHDL-2008情報源

# 概要
FPGAロジック開発者向けのVHDL-2008の新機能についての情報源まとめ。
あくまで自分が調査した__情報源__であって、VHDL-2008の新機能の紹介記事ではないことに注意されたし。
そういう記事はこれから書いていきます。

とにかく無駄と思われるようなタイプ量の多さでイライラさせられるVHDLだけど、コンパイル時にガチガチにチェックしてくれるのはやっぱりありがたいと思う。
合成に1時間かけたFPGAが動かない原因が、レジスタの幅の不一致だとか、1文字のtypoによるdefault nettypeだったなんて、悲しすぎるよ。

言語仕様についてはLRMを参照せよという正論は、言語の利用者には厳しいと思う。俺にはムリ。

# そもそもVHDLって
[VHDL]:https://ja.wikipedia.org/wiki/VHDL
[Verilog]:https://ja.wikipedia.org/wiki/Verilog
[VHDL - Wikipedia][VHDL] って、情報少ないね。
[Verilog - Wikipedia][Verilog] との情報の差がそのまま人気の差を表してる。

[VHDL:歴史 - Wikipedia](https://ja.wikipedia.org/wiki/VHDL#%E6%AD%B4%E5%8F%B2)にもある通り、最初のVHDLは米ペンタゴンが「納品される電子回路の仕様記述」のために作った言語で、「何かを作るための言語」ではないというのがポイント。
軍に納品される機器の仕様を、曖昧さ無く簡潔に記述できるようにしたかったという事。
ペンタゴンが「これで仕様書を書いて持って来い」って言うから、書いてたら誰かが「逆にこれで書いた仕様から回路が出来れば便利じゃね？」って事に気付いてIEEEで規格化されたという経緯。

だから、動くモノを作るための言語って視点で見ると変な所もこういう経緯を理解すると、少しは許せる気がするかもしれない。
でも個人的にはdowntoとcomponent宣言はどうしても嫌。

# VHDL規格の変遷
CがC90→C99、C++がC++98→C++11,14,17と変わってきたようにVHDL規格もバージョンアップしてきてる。
とは言えFPGA的にはVHDL-93しかないのが現実。

## VHDL-87
最初のバージョン。今となっては特に気にする必要は無いと思う。
けど、ファイル操作の文法がVHDL-93で大きく変わったので、VHDL-87で書かれたソースはVHDL-93以降ではコンパイル出来ない。
シミュレーションでログを残すようなコードがあれば注意が必要。

## VHDL-93
FPGAで広く使われてるのはこのバージョン
ISE, Vivado, Quartus, Diamondのどのツールでも等しく使える。
日本語の書籍もこのバージョンで書かれている

## VHDL-2002
スミマセン、正直何が変わったのか把握してないです

## VHDL-2008
この記事の主役。
言語としてよく上げられる不満点を解消して利便性を向上するような機能が取り入れられたバージョン。
追加機能の数は多く、C++98からC++11くらいの追加があると思う。
けど実際には、言語として出来る事が大きく増えた訳ではなく、VHDL-2008で新たに可能になった機能はシミュレーションでのExternal Nameくらいで、Verilogでは遙か昔から使える。
以前のVHDLがそれだけ不親切というか、言語としては貧相だという事だと思ってる。
2008年リリースだけど、2019/8月時点でFPGAの環境でまともにサポートしてるのはModelSim Intelくらい？

# FPGA開発ツールでのVHDL-2008対応状況
## Xilinx
自分の主戦場。
Vivadoがバージョンアップ毎に徐々にサポート範囲を広げていて、ようやく使えるようになってきた。
しかし__合成とシミュレーションでサポート範囲が違う__という誠に困った状況で、Vivadoでサポートされた！合成OK！シミュレータ起動 → 恐怖のInternal Errorで落ちる(どれが原因か分からん)でハマる
Vivadoでのサポート状況については別記事を書きます。
合成・シミュレーション共に公式資料にVHDL-2008の記載がある。

*  [UG901 - Vivado Design Suite User Guide: Synthesis (v2019.1)](https://japan.xilinx.com/support/documentation/sw_manuals_j/xilinx2019_1/ug901-vivado-synthesis.pdf)
*  [UG900 - Vivado Design Suite ユーザー ガイド: ロジック シミュレーション (日本語版) (v2019.1)](https://japan.xilinx.com/support/documentation/sw_manuals_j/xilinx2019_1/ug900-vivado-logic-simulation.pdf)

## Altera(Intel)
Quartusは公式情報ではPro版でサポートと書かれている。
https://www.intel.co.jp/content/www/jp/ja/software/programmable/quartus-prime/download.html#introtext_63a
リンク先の「機能」の表の下で「表示件数を増やす」とVHDL-2008が出てくる。
無償版では使えない？（未確認）
## Lattice
Diamondは合成にSynplifyが使えるので、サポートしてるんじゃないかと思うけど未確認。
Lattice謹製の合成エンジンLSEでは多分使えない。
シミュレーションはWindows版ならActive-HDLが付いてくるので使用可能なはず。
最近使ってないので、確認して書きます。

# Webの情報
日本語の情報は見た事がない。
Vivadoで使える範囲なら、先に挙げたVivadoの日本語版資料が良いかも。

## SynthWorskのPDF資料 VHDL-2008, The End od Verbosity!
http://www.synthworks.com/papers/VHDL_2008_end_of_verbosity_2013.pdf
各機能が最小限のサンプルコードで説明されている。
シミュレーションで使えるExternal Nameについては書かれてないのでこれで全部という訳ではない事に注意。
タイトルの通り、今まで面倒だったところがVHDL-2008では改善されてるって事が主題。

## DOULOSのVHDL-2008
https://www.doulos.com/knowhow/vhdl_designers_guide/vhdl_2008
ページの下の方にそれぞれのトピックへのリンクがある。ページ最下部のNextリンクで全ページ順番に辿っていける。
新機能については全部書かれてると思う。

# 書籍
リンクは日本のAmazon。日本語の書籍は無い。
そもそもVHDLのまともな書籍がCQ出版の[VHDLによるハードウェア設計入門](https://www.amazon.co.jp/dp/4789833968/)くらいしかない。
この本は良いのだが索引が無いという技術書としては致命的な欠陥があるのが非常に残念。

## VHDL-2008: Just the New Stuff
https://www.amazon.co.jp/dp/0123742498/
タイトル通りVHDL-2008の新機能についてのみ書かれている
たった254ページで￥5,864-もするのでお勧めしない

## The Designer's Guide to VHDL, Third Edition
https://www.amazon.co.jp/dp/B01MY26C9P/
↑と同じ会社の書籍でVHDLの全てが網羅されている。
909ページで￥7,683-。ハードカバーは厚さ50mm！！でこれで襲われたら死ねる。軽い気持ちで買ったらマジ後悔した。
が、これは良い。英語は平易。<br/>
ベースはVHDL-2008で書かれているが、VHDL-87,93,2002で異なる点は丁寧に各章末に違う点がまとめられてる。
CQ出版の[VHDLによるハードウェア設計入門](https://www.amazon.co.jp/dp/4789833968/)の次に読むべし、読むべし、読むべし。
自分は電車で読みたいので結局Kindle版も買って、合計￥15,000-の出費だけど十分元は取れた。
Amazon.comのレビューにもあるが間違っても最初にコレを買ってはいけない。Cで言うところのK&Rに相当。
網羅されているという事は、それだけ回りくどく書かれているという事でもある。

# まとめ
そもそもVHDLなんて誰も…とも思うけど、個人的には好き。
新機能の詳細やVivadoでのサポート範囲については、順次記事を書いていきます。
奇特な同士の方がいれば、コメント下さい。