2019年9月26日

[筆記] port list can be ( , , ... , ) in SystemVerilog

最近在讀 SystemVerlog 的 LRM,發現裡面的語法允許某個很神奇的寫法:
module MM ( , , ,); ...
沒錯,port list 可以是一堆 , 沒有任何名稱! 雖然 LRM 的 syntax 確實允許這樣寫,但會允許是空的真的很奇怪



直接來看 syntax 是怎麼定的吧

list_of_port ::= ( port { , port } )
port ::= [ port_expression ] | . port_idintifier ( [ port_expression ] ) 

狀況就出在 port 的 syntax 定義:
port ::= [ port_expression ]
 這表示 port 可以是空的,而 list_of_port 可以是一連串由 分隔的 port,所以最後就可以生出一堆只有 , 但沒有 identifier 的 port list


... 完全搞不懂當初寫這 syntax 的人的考量是啥 (還是其實他們也沒發現?)

沒有留言:

張貼留言