可编程逻辑/设计流程
本页面将讨论使用可编程逻辑器件的设计流程。
让我们谈谈开发 VLSI 芯片所涉及的基本流程。通常,由于开发产品的实际情况,此流程本质上是稍微循环的。在开发项目的整个生命周期中,经常需要重新审视和修改规格,这会影响流程中后续的每个步骤。
工程师和销售人员为了满足特定市场的需求而对产品进行概念化。他们会考虑销量、产品成本、市场上的其他产品、公司自身的产品线、产品的可用资源以及许多其他因素。在 ASIC(专用集成电路)等领域,工程师通常会与潜在客户合作以满足他们的需求。
通过调查,他们提出了芯片的基本要求。这将包括
- 芯片将生产的封装。
- 芯片的功耗要求。
- 芯片的速度。
- 衍生品的计划。
- 为客户提供原型和样品的必要性。
一旦确定了需求,设计师就可以创建产品的功能规范。虽然理论上,功能规范可以是芯片行为的抽象描述,但大多数客户理解的不仅是行为级别,而且通常功能规范至少包含芯片组装方式的顶层架构。
对于 VLSI 设计,实际电路通常由现有的子模块构建。例如,一个平台可以结合处理器、内存缓存和总线接口单元。外设和板载内存可以被添加。PLL(锁相环电路)通常被放置在硅片上,以提供现在可用的高速频率。功能规范通常描述了各个模块的连接方式以及它们如何协同工作。它们还描述了产品如何与引脚上的连接进行交互。
一旦定义了功能规范,设计工程师就可以开始填充芯片的基本架构。HDL(硬件描述语言)如 Verilog 或 VHDL 通常用于高级概念设计和后期的门级设计。在架构级别,存根 HDL 文件可以描述模块的端口。我们可以像在面向对象的计算机程序中实例化对象一样,在芯片级连接 HDL 文件中实例化这些存根,以定义所有模块之间的互连。
对于每个模块,我们可以在 HDL 中编写一个行为模型。HDL 的编写方式非常类似于计算机程序。这允许设计师试验模块的预期行为。仿真器可以解释 HDL 并显示其如何与各种激励进行交互。激励也可以用 HDL 或其他语言编写。为测试此模块而创建的测试平台,在设计流程的后期,可以用于设计更低级别的描述。
每个模块的行为模型可以与顶层结构文件一起使用,以模拟芯片在仿真中的行为。随着模块的逻辑设计被创建,我们可以用 RTL 替换行为模型并验证芯片的行为是否符合规范。
功能验证是测试模型以确定它们是否按功能规范执行的过程。验证工程师编写的测试用于使用测试平台,以确定行为模型是否符合需求收集过程中创建的规范。通常会投入大量精力来验证模型是否按规范执行。
在模块级别,这称为单元级功能验证。模块设计需要通过所有功能验证测试,然后才能用于芯片级设计。重要的是,功能测试涵盖模块的所有可能的实际使用。这些测试通常可以在其他模型的设计上重复使用,例如 RTL 和门级模型。