とりあえずまとめてみた。規格として必要としていることと、僕が必要としていることをごっちゃに書いているので、検索で飛んできた人は鵜呑みにしないように。
`begin_keywords [19.11]
`end_keywords [19.11]
この2つがペア。使ったことないし、OpenSparcにも出てこないので無視。そのままパーサへ。
`celldefine [19.1]
`endcelldefine [19.1]
PLIで使う。OpenSparcにも出てこないので無視。そのままパーサへ。
`default_nettype [19.2]
デフォルトのネットを禁止する。そのままパーサへ。
`define [19.3]
`undef [19.3]
パーサの前で処理する。`resetallの影響を受けない。
`ifdef [19.4]
`else [19.4]
`elsif [19.4]
`endif [19.4]
`ifndef [19.4]
パーサの前で処理しないと駄目。
`include [19.5]
パーサの前で処理する。少なくとも15レベルのネストの処理必須。コマンドラインのオプションで、パスの指定が出来るようにする。
`resetall [19.6]
OpenSparcにも出てこないので無視。そのままパーサへ。
`timescale [19.8]
そのままパーサへ
`line [19.7]
説明多いな。
オリジナルのファイル名と行番号を記述するのに使う。`lineディレクティブはソース上のどこにでも書けるが、同じ行には空白だけ認められる。コメントも駄目。`resetallの影響を受けない。
line_compiler_directive ::= `line number "filename" level
numberが行番号、filenameがファイル名。レベルは0、1、2のどれかの値を取り、1はinclude fileに入ったときの最初のライン、2がinlude fileを出た最初のライン、0はそれ以外を表す。パーサに入る前に処理。
`nounconnected_drive [19.9]
`unconnected_drive [19.9]
未接続の入力ポートの処理
OpenSparcにも出てこないので無視。そのままパーサへ。
`pragma
そのままパーサへ。
これでいこう。