芯片设计抽象层级清晰指南
在深入 Verilog 语言细节前,了解芯片设计的不同抽象层级很有帮助。
顶层是系统级架构,定义各子块并按功能分组。例如处理器集群包含多个核、缓存块和缓存一致性逻辑,全部封装为具有输入输出信号的单个块。
下一层,每个子块用硬件描述语言编写,准确描述各块功能,忽略电路原理图、工艺库等低层实现细节。例如控制器块最终包含多个 Verilog 文件,每个描述其功能的较小组件。
HDL 综合为门级原理图,涉及表征触发器等数字元件的工艺库。例如 D 锁存器的数字电路包含特定排列的与非门,使所有 D 和 E 输入组合产生真值表给定的输出 Q。
真值表给出所有输入电平排列及结果输出电平,下表为带使能引脚的 D 锁存器。硬件原理图也可通过布尔逻辑和 K-map 从真值表导出,但对于处理器、控制器等复杂数字块不切实际。
与非门的实现通过特定格式连接 CMOS 晶体管。此层级考虑晶体管沟道宽度、Vdd 和驱动输出容性负载能力。
最后一步是使用 EDA 工具在硅上布局这些晶体管以便制造。此层级需要器件和工艺知识,因为不同布局会导致不同电阻、电容等物理特性。
设计风格
数字模块设计主要有两种风格:自顶向下和自底向上。
自顶向下
先定义顶层块并识别构建所需的子模块。每个子块进一步分解为更小组件,直到叶子单元或无法再分解阶段。
自底向上
首先识别可用构建块,然后以特定方式连接组装成更大单元,拼凑出顶层块。
通常结合两种流程。架构师定义系统级视图,设计师实现各功能块逻辑并综合为门。此前遵循自顶向下。然而这些门遵循自底向上流程构建:从最小块的物理布局开始,以最佳面积、性能、功耗优化。这些标准单元也有硬件原理图,可获取建立/保持时间、功耗、延迟等信息,供综合工具挑选实例化。
Verilog