PlanAhead - 严重警告:[Designutils-31]无法识别的符号[0] .usub“给出了使用generate语句创建的子模块

描述

当在我的HDL代码中使用“generate”语句生成子模块时,PlanAhead约束解析不识别生成的子模块。

在下面的示例中,我生成了三个核心:

生成genvar i;
for(i = 0; i <INSNUM; i = i + 1)开始

dut_sub
#(
.BUSWIDTH(BUSWIDTH),
.REGNUM(248),
.CNTNUM(160)
)usub(
.sub(SUB [i]),
.clk(CLK_320MHZ),
.RST(RST),
.din(din),
.dout(douw [i])
);



示例代码生成三个名称为的模块:

  • \ [1] .usub#dut_sub
  • \ [2] .usub#dut_sub
  • \ [0] .usub#dut_sub

但是,在应用约束时,PlanAhead似乎无法识别这些模块。

严重警告:[Designutils-31]无法识别的符号[0] .usub“[/proj/project_2/project_2.srcs/constrs_1/imports/scr_files/top.ucf:10]
严重警告:[Designutils-31]无法识别的符号[2] .usub“[/proj/project_2/project_2.srcs/constrs_1/imports/scr_files/top.ucf:13]
严重警告:[Designutils-31]无法识别的符号[1] .usub“[/proj/project_2/project_2.srcs/constrs_1/imports/scr_files/top.ucf:16]

如果在实例名称之前添加“*”,则首先会识别它。

初始UCF:
INST“[2] .usub”AREA_GROUP =“pblock_ [2] .usub”;
AREA_GROUP“pblock_ [2] .usub”RANGE = SLICE_X0Y150:SLICE_X30Y199;

修改后的UCF:
INST“* [2] .usub”AREA_GROUP =“pblock_ [2] .usub”;
AREA_GROUP“pblock_ [2] .usub”RANGE = SLICE_X0Y150:SLICE_X30Y199;
但是,在打开实施的设计后,PlanAhead不会再次识别该块。

此外,使用“生成”语句综合的块下的任何原语都不会出现在“器件”窗口中,尽管导入实现了放置。

发生这种情况是因为实例名称以“[”开头。

您可以通过GUI(或Tcl)进行分配,将实例正确分配给AREA_GROUP:

add_cells_to_pblock {pblock_ [0] .usub} [get_cells [list {[0] .usub}]] -clear_locs
add_cells_to_pblock {pblock_ [1] .usub} [get_cells [list {[1] .usub}]] -clear_locs
add_cells_to_pblock {pblock_ [2] .usub} [get_cells [list {[2] .usub}]] -clear_locs

但是,如果您打开/重新打开任何视图,此链接将再次丢失并且Tcl控制台会出现问题:

严重警告:[Designutils-31]无法识别的符号[2] .usub“[/proj/project_2/project_2.runs/impl_1_2/.constrs/dut_top.ucf:10]

您可以通过向generate语句添加“generate_block_name”来解决此问题:

生成genvar i;
for(i = 0; i <INSNUM; i = i + 1)begin:test
这将命名实例“test [0] .usub”,“test [1] .usub”和“test [2] .usub”。
编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-07-31 14:33:49 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它