报错场景:基于Xilinx Spartan6 XC6SLX9平台,使用ChipScope采集AD模数转换端口接收到的波形,在.v代码中使用了“(*KEEP = "TRUE"*)wire XXXXXXX(信号名);”语句,使目标信号不被优化掉,可被ChipScope搜索到。synthesize未报错,Implement Design时在Map阶段会报错ERROR:Pack:1107-Pack was unable to combine the symbols listed below into a single IOB component because the site type selected is not compatible.
报错原因:.v代码中的“(*KEEP = "TRUE"*)wire XXXXXXX;”语句,会在.ucf约束文件中添加对应信号的Keep true XXXXXXX(信号名)语句,导致编译报错
解决办法:删掉.ucf约束文件中的对应信号的Keep true XXXXXXX(信号名)语句即可。
PS:感觉在.v中使用“(*KEEP = "TRUE"*)wire XXXXXXX(信号名);”语句不是100%会报错(同样的代码之前在XC6SLX16下未见此报错情况),而且看网上感觉ERROR:Pack:1107出现的原因都不一样,故在此记录,如有谬误,烦请各位大佬不吝赐教。