|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
本帖最后由 crystalbreezy 于 2022-11-21 11:05 编辑
我目前在尝试对一组基于SystemVerilog的RTL进行综合,其中的端口利用了struct结构,并且使用了多维数组,所以在RTL导入后出现了以下结构:
irqs[3][irq_vcs][2]
irqs[3][irq_vcs][1]
irqs[0][irq_vcs][0] irqs[0][irq_trig]
....
如果使用DC define_name_rules 自带的多维数组展开选项,上面的端口似乎会被完全展开为irqs[0]、irqs[1]、... irqs[7] 这样的结构,非常不方便后续的识别,如果用下面的指令:
define_name_rules flatten_struct_bus_0 -map {{"[", "_"}, {"]", "_"}} -type port
change_names -rules flatten_struct_bus_0 -verbose
又会彻底把bus拆分为互相独立的端口:
ravenoc port irqs[0][irq_vcs][2] irqs_0__irq_vcs__2_
ravenoc port irqs[0][irq_vcs][1] irqs_0__irq_vcs__1_
ravenoc port irqs[0][irq_vcs][0] irqs_0__irq_vcs__0_
ravenoc port irqs[0][irq_trig] irqs_0__irq_trig_
想请教一下各位大佬,是否有办法保留最后一层数组,类似于这样:
ravenoc port irqs[0][irq_vcs][2] irqs_0__irq_vcs[2]
ravenoc port irqs[0][irq_vcs][1] irqs_0__irq_vcs[1]
ravenoc port irqs[0][irq_vcs][0] irqs_0__irq_vcs[0]
ravenoc port irqs[0][irq_trig] irqs_0__irq_trig_
我在上面指令的基础上尝试了以下指令,但似乎没有作用:
define_name_rules flatten_struct_bus_1 -map {{{"_%d_$", "[%d]"}}} -type port
change_names -rules flatten_struct_bus_1 -verbose
不知道是否是因为map pattern不支持%d?请问还有没有别的方法可以尝试?谢谢大家!
|
|