一个奇怪的警告,字面意思很清晰,有个端口未连接。
顶层
module Top
(
input wire wSysClk50M ,
input wire wRstKey_n ,
...
input wire wSDO //出问题 wire
);
...
Ctrl Ctrl_inst
(
.wSysClk50M (wSysClk50M ),
.wRstKey_n (wRstKey_n ),
...
.wSDO (wSDO ) //这里 端口 wSDO 连接到顶层模块的 wSDO
)
endmodule
Ctrl模块
module Ctrl
(
input wire wSysClk50M ,
input wire wRstKey_n ,
...
input wire wSDO
);
...
endmodule
根据代码,wSDO是连接到模块Ctrl的wSDO端口上的。但综合警告Ctrl_inst 的端口wSDO未连接。
发现是Vivado把Ctrl模块的 wire wSDO 优化掉了,但是端口依然存在。
解决办法 在Ctrl模块定义 wSDO语句前加(* DONT_TOUCH = "1" *) ,防止其被优化。
关于防止综合优化参考 Vivado防止信号被综合掉的三种方法。