在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3268|回复: 7

[求助] vivado generate语法问题

[复制链接]
发表于 2022-1-7 15:38:28 | 显示全部楼层 |阅读模式
100资产
最近在尝试用generate 去例化多个ip核。
百度一些情况,发现博客例子中都是使用generate去控制统一个寄存器的不同位数,例如 将generate生成展开:
.dina(datain[1])
.dina(datain[2])
.dina(datain[3])

我想用generate去完成不同寄存器的控制(寄存器名称有规律),例如
将generate生成展开:
.dina(datain1_1)
.dina(datain1_2)
.dina(datain1_3)

不知道是否可行,我试着写成下面这个样子,但是dina接口那行会提示‘undeclared symbol datain1_i ,assumed default net type wire’,不知是否有问题。
genvar i;
generate  
    for(i=1;i<=8;i=i+1)
    begin :RAM1
        DP_RAM_18X128 RAM1_i (
          ...
          .dina(datain1_i),   
          ...
        );
    end
endgenerate

最佳答案

查看完整内容

如果只用verilog,那么可以用二维数组。reg [15:0] xxx [127:0]. 如果数目不定,可以写为parameter。 parameter NUM 128; reg [15:0] xxx [NUM-1:0] 然后generate 逻辑可以使用NUM来generate。
发表于 2022-1-7 15:38:29 | 显示全部楼层
如果只用verilog,那么可以用二维数组。reg [15:0] xxx [127:0]. 如果数目不定,可以写为parameter。
parameter NUM 128;
reg [15:0] xxx [NUM-1:0]
然后generate 逻辑可以使用NUM来generate。
发表于 2022-1-7 16:22:45 | 显示全部楼层
本帖最后由 innovation 于 2022-1-7 16:38 编辑

这个问题应该跟verilog,或者vivado没啥关系了,所以我虽然不会verilog语法,也说两句:
1) datain中的i是一个数组的索引
2) datain1_i中的i是一个符号中的一个字符
3) 还真没见过支持在for循环中替换一个符号中的一个字符来循环的编程语言?都不用举例了,你这个例子本身就可以,datain1_i中有两个i,你让编译器咋整呢?换哪个?
发表于 2022-1-7 16:42:37 | 显示全部楼层
本帖最后由 innovation 于 2022-1-7 16:46 编辑

既然eetop的编辑器不能所见即所得,就别怪我灌水了。。。

这个问题应该跟verilog,或者vivado没啥关系了,所以我虽然不会verilog语法,也说两句:
1) datain(i)中的i是一个数组的索引
2) datain1_i中的i是一个符号中的一个字符
3) 还真没见过支持在for循环中替换一个符号中的一个字符来循环的编程语言?都不用举例了,你这个例子本身就可以,datain1_i中有两个i,你让编译器咋整呢?换哪个?
难道是eetop编辑器不能随便写方括号,然后里面再来个i。试一试呢,显示正常?


发表于 2022-1-7 16:49:58 | 显示全部楼层
这样写肯定不行,你可以先把你的变量放在一个二维数组中
 楼主| 发表于 2022-1-7 17:17:03 | 显示全部楼层


innovation 发表于 2022-1-7 16:42
既然eetop的编辑器不能所见即所得,就别怪我灌水了。。。

这个问题应该跟verilog,或者vivado没啥关系了, ...


对的,我想实现的是字符的有规律替换,在写代码的时候也在想编译器怎么完成替换,那看来这个想法是错误的。
 楼主| 发表于 2022-1-7 17:37:13 | 显示全部楼层


ladybug6 发表于 2022-1-7 16:49
这样写肯定不行,你可以先把你的变量放在一个二维数组中


想请教一下,数据数据是外部模块给的128个16比特的数据,我在设计模块端口的时候设计成了128个[15:0]端口,这也导致了无法用generate来 例化ip核。现在看来,如果在设计端口阶段就直接将端口设计成1个[2047:0]的端口,就不会有这样的问题了。是不是一般的设计中都会直接采用设计成一个端口的方法?
发表于 2022-2-26 19:15:59 | 显示全部楼层
thank you very much
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-6-9 19:28 , Processed in 0.027243 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表