原创 【博客大赛】SOC感---综合及时序分析--综合优化1

2016-2-27 15:47 1299 20 20 分类: 工程师职场 文集: SOC

2、综合优化

2.1)撰写代码时要注意哪些问题

上面提到综合其实就是将代码映射到第三方的工艺库中,并且进行优化达到面积、功耗最小,性能最好的过程。那么该如何进行综合优化,我们在撰写代码的过程中要注意哪些问题呢。

2.1.1)良好的模块划分,partition

好的开始意味着成功了一半,芯片从开始设计的时候就要特别注意模块划分,一般划分按照功能来划分,不宜过多,也不宜不少,每个模块的代码控制在1000行左右,太多的话也不利于阅读和维护;模块划分有利于后端的综合,日后ip的重用,代码的维护,灵活性比较强,切记将所有的功能揉到一个模块中,也切记将一个功能分割成许多的子模块。

20160227154503995001.jpg

例如上图就是一个比较糟糕的模块划分,B模块变成了纯组合逻辑,这样很不利于后续的综合(当然可以利用展平模块来综合解决这种问题,但是尽量不要这样;有些模块其实并不能跨模块进行综合)。

20160227154512930002.jpg

20160227154521822003.jpg

改成上图这种划分就比较好,将组合逻辑包在一块进行处理,这样比较利于后续的综合工作。

但是上面的几种划分其实都有一定的问题,就是如果ABC组合逻辑太大的话还是不利于后续的综合,最好的就是将每块的组合逻辑都经过时序逻辑的处理。当然,如果组合逻辑不是很大的话,也可以不必做下面的处理。

20160227154528933004.jpg

2.1.2)避免胶连逻辑,glue logic

胶连逻辑在模块例化的时候最容易被产生而且忽略,这种逻辑在综合的时候不属于任何一个模块,所以很尴尬,不能被很好的综合。如下图的与非门,不属于ABC任何一个模块。

20160227154534293005.jpg

最好的办法是如下图,将胶连逻辑吸进到C模块里。这样Top层除了模块例化的连线之外再也没有其他逻辑了。

20160227154548151006.jpg

2.1.3)模块大小适宜,block size

20160227154556775007.jpg

模块太大或者太小的时候你就需要考虑是否需要重新进行模块划分,否则影响综合处的结果,也影响综合所花费的时间和成本。

20160227154604637008.jpg

2.1.3)模块分割适宜,block separate

20160227154613765009.jpg

Pad,clk,power,jtag,core logic等分开划分,不要搅在一块。

20160227154624274010.jpg

2.1.4)总结:

20160227154631439011.jpg

文章评论0条评论)

登录后参与讨论
我要评论
0
20
关闭 站长推荐上一条 /2 下一条