先说答案:不行。
通常,reg [7:0] mem [1:0]这种写法是作为内部二维寄存器使用的,比如定义一个1KB的存储器,可以用reg [7:0] memory [0:1023],或者reg [7:0] memory [1023:0]。那二维数组作为输入输出端口可以综合不?
做个小实验,简单造个小代码:
用input [7:0] mem [1:0]这种二维数组作为input端口,
Verdi检查
首先用Verdi编译看看报错不:
上图很明显,Verdi默认就直接支持这种SV类型语法。
Spyglass检查
Spyglass就能严格报出来,除非set_option enableSV yes,否则不支持这种sv语法特性,
DC工具
那么Design Compiler是否支持这种语法综合呢?
综合一下,查看LOG:
也很明显,直接报Error,综合进程终止,DC是不支持的。
man查询一下报的错:VER-253:
感兴趣的朋友可以用C家的genius试试。
结论
结论:Verilog语法不支持二维数组作为输入输出端口。
可能有同学吐槽Verilog语法太僵硬了,不如sv便捷强大,况且很多国外团队已经用sv进行开发了,但是DC工具更希望RTL开发者明确指定每一根输入输出信号线的具体连接关系,虽然工作量繁杂一点,但可以避免工具与人的理解不一致而造成的芯片错误, 也迫使开发者想清楚每根线怎么连接。
感谢阅读,别走!点赞、关注、转发后再走吧
转载:全栈芯片工程师
免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:Verilog二维数组作为输入输出端口可以吗-verilog中数组的使用 https://www.yhzz.com.cn/a/10386.html