记录一下用Synaplify综合出现的Removing警告问题,在用Synaplify综合的时候,你可能综合完之后发现有的port不见了,或者instance不见了,这都是很常见的问题,这个时候你只要去搜索log关键词Removing,再和你要找的port或者instance相关,你就能找到原因,今天就我自己遇到的问题稍微总结一下。
1.Removing sequential instance xxx because it is equivalent yo instance...这个是说优化掉了一些东西用另一个代替,因为这个2个是相等的。这个警告一般不用管,不会出啥问题。如果不想被替代,可以在instance括号后面,分号之前加()/*synthesis syn_preserve=1*/; 不允许它替代;
2.Removing sequential instance xxx,because it does not drive other instance;遇到这种情况要注意了,你要找到原因,再对症下药。首先可能是这个模块没有给clk时钟;或者reset没有释放,一直被reset;再者可能本来就是你放的一个空壳,本来就没有驱动别的模块;还可能是ila,ila本来就是用来抓信号,不需要驱动别的模块。这个时候它是不能被优化掉的,所以你要在代码中instance括号后面,分号之前加上命令: ()/*synthesis syn_noprune=1*/; 如下图  3.对于wire类型的需要在wire申明之后分号之前加/*synthesis syn_keep=1*/; 如下图:
3.对于wire类型的需要在wire申明之后分号之前加/*synthesis syn_keep=1*/; 如下图:
4.对于reg类型的需要在wire申明之后分号之前加/*synthesis preserve=1*/; 如下图: