先說答案:不行。
通常,reg [7:0] mem [1:0]這種寫法是作為內(nèi)部二維寄存器使用的,比如定義一個(gè)1KB的存儲(chǔ)器,可以用reg [7:0] memory [0:1023],或者reg [7:0] memory [1023:0]。那二維數(shù)組作為輸入輸出端口可以綜合不?
做個(gè)小實(shí)驗(yàn),簡單造個(gè)小代碼:
用input [7:0] mem [1:0]這種二維數(shù)組作為input端口,
Verdi檢查
首先用Verdi編譯看看報(bào)錯(cuò)不:
上圖很明顯,Verdi默認(rèn)就直接支持這種SV類型語法。
Spyglass檢查
Spyglass就能嚴(yán)格報(bào)出來,除非set_option enableSV yes,否則不支持這種sv語法特性,
DC工具
那么Design Compiler是否支持這種語法綜合呢?
綜合一下,查看LOG:
也很明顯,直接報(bào)Error,綜合進(jìn)程終止,DC是不支持的。
man查詢一下報(bào)的錯(cuò):VER-253:
感興趣的朋友可以用C家的genius試試。
結(jié)論
結(jié)論:Verilog語法不支持二維數(shù)組作為輸入輸出
端口。
可能有同學(xué)吐槽Verilog語法太僵硬了,不如sv便捷強(qiáng)大,況且很多國外團(tuán)隊(duì)已經(jīng)用sv進(jìn)行開發(fā)了,但是DC工具更希望RTL開發(fā)者明確指定每一根
輸入輸出信號(hào)線的具體連接關(guān)系,雖然工作量繁雜一點(diǎn),但可以避免工具與人的理解不一致而造成的芯片錯(cuò)誤, 也迫使開發(fā)者想清楚每根線怎么連接。