当前位置:首页 > > 全栈芯片工程师
[导读]先说答案:不行。通常,reg[7:0] mem[1:0]这种写法是作为内部二维寄存器使用的,比如定义一个1KB的存储器,可以用reg[7:0] memory[0:1023],或者reg[7:0] memory [1023:0]。那二维数组作为输入输出端口可以综合不?做个小实验,简...


先说答案:不行。




通常,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开发者明确指定每一根输入输出信号线的具体连接关系,虽然工作量繁杂一点,但可以避免工具与人的理解不一致而造成的芯片错误, 也迫使开发者想清楚每根线怎么连接。








本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭