在芯片设计中大都绕不开用Synaplify来对数字代码进行综合,特别是在大系统中,资源很多,这样会导致FPGA中的资源不够用,就需要我们在综合中加一些限定来解决一些问题,这篇文章先介绍一些自己遇到的和资源相关的问题以及相关的命令。
如果你的设计中的RAM很多,在综合的时候RAM其实可以被综合成很多种,FPGA中有block_ram也就是BRAM,还有logic_ram也就是LRAM,当然还可以被综合成LUT;那么你可以根据这两种资源的占用情况来选择在Synaplify综合的时候被综合成什么RAM。
(1)被综合成LRAM,你可以加命令/*synthesis ramstyle="select_ram"*/或者/*synthesis ramstyle="logic_ram"*/,这两种都是综合成LRAM;这种情况建议用在小的Ram上面。
(2)被综合成BRAM,你可以加命令/*synthesis ramstyle="block_ram"*/或者/*synthesis ramstyle="no_rw_check"*/,这两种都是综合成BRAM;这种比较适合大的RAM,注意真双口的RAM只能被综合成BRAM,不能被综合成LRAM。
(3)被综合成LUT,你可以加命令/*synthesis ramstyle="registers"*/,这样就被综合成了LUT,就不会占用RAM的资源而是会占用LUT的资源。
命令的格式和其他的Synaplify的命令的格式一样,加在申明的分号之前,如下图:
这里我说的主要是针对Synaplify和Xilinx这对CP的组合,对于IntelFPGA以及其它的综合环境我看了下类别有小的不一样。具体的可以参考synopsys官方的文档。