dc综合学习笔记3

dc在综合的时候,可以将属性和约束加到电路上:

一、设计的组成

设计、单元、连线的概念容易理解,端口port和引脚pin的概念需要区分一下。端口port一般只指设计的输入输出,引脚pin可以指设计中所有cell的引脚

具体的可以参考下图:

 

 

二、TCL介绍

本节介绍了一些tcl语法,可以用来搜索、查看、更改、设置 一些object的属性

包括指明对象,指明对象集合,进行更改、赋值,等等

只能混个脸熟,用到再查看和学习

 

三、层次结构和模块划分

 

1、模块层次的概念

soc由多个组成部分,其中数字模块,也有内在的层次

这里还提到了软核和硬核的差别。

软核一般以代码的形式存在,可以加入设计流程中,进行后续的综合,同时也可以对设计进行修改,也可以适用于多种工艺

硬核通常是DSP、内存等(其实大部分处理器也是),往往这类模块的功能固定,并且已经经过优化和验证,与某种固定的工艺绑定,不可迁移到其他工艺

 

2、模块划分在综合环节的意义

 

即使是一个数字模块,如果功能很复杂,规模很庞大,也需要划分成不同的部分,来进行设计和后续综合

这种划分在设计时就已经做好了,当然书上也提到在dc中可以进行划分,但估计我用不到

 

在verilog中,例化会产生新的层次,这一点很容易理解,例化一个模块,这个模块就是更低层次。

这里提到,一些符号也会产生新的层次,这一点学习verilog的时候可以注意一下原因。

下面说一个模块划分的例子:

这三个模块分开综合,会导致合并后的效果变差,同时施加约束也会比较麻烦

但如果改成上图,那么优点就是,把组合逻辑放在一起能够充分发挥综合的优化功能

同时时序约束也更简单

进一步,还可以优化成下图:

这样看起来和前面那个的区别只是把寄存器放在模块的输出位置。

优点就在于,寄存器的组合逻辑部分也可以跟前面的组合逻辑模块一起综合,实现更进一步的优化

虽然理论上是这样,但是优化可想而知不会很大。这样的意义还在于有一个可以依照的规范,从而对时序约束的制定更统一

因为这样一来,每个端口的输入延时都相同了,都为前一个模块寄存器的延时

 

同时,分块应该避免胶合逻辑,具体就不说了,解决方式也很简单,把连接的逻辑随便并到其他模块的组合逻辑中

 

 

3、修改模块划分

 

这节先介绍了一般的逻辑划分方式,由于不会用到所以就不整理了,原则一般是按功能、工艺、工作类型划分,同时一个较大的模块也需要划分

不能划分成太多快,因为会影响综合的最优化,也不能分的太大块,这样增加了设计难度和时间

 

模块划分的命令主要通过group和ungroup实现

但估计用不到,所以也不具体展开了

 

posted @ 2023-07-12 02:29  Raven_claw  阅读(222)  评论(0)    收藏  举报