2、综合优化
2.1)撰写代码时要注意哪些问题
上面提到综合其实就是将代码映射到第三方的工艺库中,并且进行优化达到面积、功耗最小,性能最好的过程。那么该如何进行综合优化,我们在撰写代码的过程中要注意哪些问题呢。
2.1.1)良好的模块划分,partition
好的开始意味着成功了一半,芯片从开始设计的时候就要特别注意模块划分,一般划分按照功能来划分,不宜过多,也不宜不少,每个模块的代码控制在1000行左右,太多的话也不利于阅读和维护;模块划分有利于后端的综合,日后ip的重用,代码的维护,灵活性比较强,切记将所有的功能揉到一个模块中,也切记将一个功能分割成许多的子模块。
例如上图就是一个比较糟糕的模块划分,B模块变成了纯组合逻辑,这样很不利于后续的综合(当然可以利用展平模块来综合解决这种问题,但是尽量不要这样;有些模块其实并不能跨模块进行综合)。
改成上图这种划分就比较好,将组合逻辑包在一块进行处理,这样比较利于后续的综合工作。
但是上面的几种划分其实都有一定的问题,就是如果ABC组合逻辑太大的话还是不利于后续的综合,最好的就是将每块的组合逻辑都经过时序逻辑的处理。当然,如果组合逻辑不是很大的话,也可以不必做下面的处理。
2.1.2)避免胶连逻辑,glue logic
胶连逻辑在模块例化的时候最容易被产生而且忽略,这种逻辑在综合的时候不属于任何一个模块,所以很尴尬,不能被很好的综合。如下图的与非门,不属于ABC任何一个模块。
最好的办法是如下图,将胶连逻辑吸进到C模块里。这样Top层除了模块例化的连线之外再也没有其他逻辑了。
2.1.3)模块大小适宜,block size
模块太大或者太小的时候你就需要考虑是否需要重新进行模块划分,否则影响综合处的结果,也影响综合所花费的时间和成本。
2.1.3)模块分割适宜,block separate
Pad,clk,power,jtag,core logic等分开划分,不要搅在一块。
2.1.4)总结:
文章评论(0条评论)
登录后参与讨论