CPU设计实战:LoongArch版
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 芯片设计的工作阶段

对于一个CPU来说,其芯片设计的工作可进一步划分为如下9个阶段。

1)明确设计规格

2)制定设计方案

3)进行设计描述(编写RTL代码)

4)功能和性能验证

5)逻辑综合

6)版图规划

7)布局布线

8)网表逻辑验证、时序检查、版图验证

9)交付流片

无论是硬件产品还是软件产品,设计之初必然要明确其设计规格,确定设计的边界约束情况。对于CPU设计开发来说,典型的设计规格包括支持的指令集,主频、性能、面积和功耗指标,以及接口信号定义。

明确了设计规格之后,就要给出相应的设计方案。这个设计方案通常是用自然语言或高级建模语言从较为抽象的角度对CPU的微结构设计所做的行为级描述。例如,CPU划分为多少级流水、每一级流水线最多处理多少条指令、有多少个运算部件、指令的执行调度机制是什么,等等,这些内容都要在设计方案中详细给出。

有了设计方案之后,接下来就需要将行为级描述进一步转换为EDA综合工具可以处理的硬件描述语言(Hardware Description Language,HDL)描述。这个过程通常是由人完成的。近年来学术界和工业界在高层次描述向低层次描述的自动化转换方面做了很多积极的尝试,可以将一个高级建模语言的描述转换为HDL描述甚至直接综合为门级电路。不过就目前的技术发展来看,针对CPU设计,有经验的工程师设计出的电路质量还是远高于采用高层次综合工具或HDL语言生成器设计的电路质量。由于CPU产品具有“赢者通吃”的特性,单纯地缩短上市周期并不能获得持久的商业优势,因此CPU对电路质量的要求比领域专用加速器的要求要高得多。所以,短期来看CPU产品从设计方案到设计描述仍将主要依赖人工。

寄存器传输级(Register Transfer Level,RTL)描述使得我们可以在这个层次展开功能和性能的验证。所谓功能和性能验证,是指证明设计的功能正确性和性能指标是否符合设计规格中的定义,它发现并修正的是设计描述阶段引入的逻辑实现错误。如果发现功能或性能上的错误,就需要返回设计描述阶段进行修改,甚至要返回设计方案阶段对不合理的地方进行修改,然后再进行功能和性能验证。整个设计过程会在这几个阶段反复迭代,直至所有的功能和性能验证都通过。这里我们反复提到了“验证”这个概念,它与软件开发中的“测试”非常相似。之所以不用“测试”这个词,是因为在芯片设计制造领域“测试”这个概念另有所指。芯片设计制造领域的测试虽然也是检测电路的功能和性能是否符合设计指标,但是它发现并修正的是芯片在生产制造环节中引入的电路故障。

通过验证环节的检验,确定功能和性能指标都符合预期后,RT L级的描述将通过EDA综合工具转化成门级网表。综合工具将根据设计者给出的约束,尽力保证综合出的门级网表满足时序、面积和功耗方面的要求。

接下来的工作是对最终实现的电路版图进行设计规划,即对电路的接口引脚、各主要数据通路的相对位置关系进行平面布局规划。目前这项工作的完成质量,富有经验的工程师仍然高于自动化工具。不过近年来随着AI技术在该领域的深入应用,双方的差距正在逐步减小。版图规划完成之后,自动化布局、布线工具将读入之前综合所得的网表并生成电路的版图。

生成电路版图以后,除了要对版图自身进行设计规则检查和电路/版图一致性检查外,还需要针对最终设计进行静态时序分析和功耗分析以确保达到频率和功耗目标,同时将提取出的延迟信息反标至网表中,进行带有反标SDF的延迟和时序检查的功能仿真验证。各类验证检测无误后,就可以将版图交付给工厂进行生产了。

总的来说,CPU的设计开发流程与其他类型的超大规模数字集成电路的设计开发流程基本一致。毕竟从电路的角度来看,CPU就是一种数字逻辑电路。但CPU又是一种特殊的数字逻辑电路,它在设计、实现与功能验证三个方面具有其自身的特点。对于CPU设计的初学者而言,学习的难点也常集中在这三个方面。本书后面的内容将针对这三个方面展开论述。