设计抽象层

2025年3月17日 | 阅读 3 分钟

Verilog 语言对于理解芯片设计中不同的抽象层至关重要。

顶层是系统级架构,它定义了各种子块,并根据功能对它们进行分组。

例如,一个处理器集群可以有多个缓存块、核心和缓存一致性逻辑。所有这些都将表示为一个带有输入和输出信号的单个块。

Design Abstraction Layers

在下一层,每个子块都用硬件描述语言编写,以准确描述每个块的功能。

在这个阶段,诸如电路原理图、技术库之类的底层实现细节被忽略。

例如,一个控制器块将有多个 Verilog 文件,每个文件描述一个较小的功能组件。

然后,HDLs 被转换为门级原理图,其中涉及表征数字元件(如触发器)的技术库。

例如,D 锁存器的数字电路包含以特定方式排列的 NAND 门,使得 D 和 E 输入的所有组合都产生由真值表给出的输出 Q。

Design Abstraction Layers

真值表本质上给出了所有输入信号电平和结果输出电平的排列。

硬件原理图也可以从真值表中使用 K-map 和布尔逻辑推导出来。但是,对于更复杂的数字块,例如控制器处理器,使用这种方法没有用。

Design Abstraction Layers

NAND 门的实现是通过以特定格式连接 CMOS 晶体管来完成的。在这一级别,在设计过程中会考虑晶体管沟道宽度、Vdd 和驱动输出电容负载的能力。

Design Abstraction Layers

最后一步是使用 EDA 工具在硅中布置这些晶体管以进行制造。在这一级别需要一些器件和技术知识,因为不同的布局最终会具有不同的物理特性,如电阻和电容,以及其他影响。

设计风格

数字块的设计主要遵循两种风格,一种是自顶向下,另一种是自底向上方法。

1. 自顶向下
在这种方法中,首先定义顶层块,并确定构建顶层块所需的子模块。

类似地,每个子块被进一步划分为更小的组件,并且该过程继续进行,直到我们到达叶单元或无法进一步划分的阶段。

2. 自底向上
首要任务是确定可用的构建块。然后将它们放在一起并以某种方式连接起来,以构建更大的单元并用于拼凑顶层块。

我们也可以结合使用这两种流程。架构师定义设计的系统级视图,设计人员实现每个功能块的逻辑,并将其综合成门。

到目前为止,遵循自顶向下的风格。然而,这些门是通过遵循自底向上的流程构建的,从最小块的物理布局开始,以获得最佳的面积、功耗和性能。

这些标准单元也有硬件原理图。并且这些可以用来获得各种信息,例如功耗的上升和下降、时间和其它延迟。

这些单元可供综合工具使用,该工具选择并在需要的地方实例化它们。