IP (Intellectual Property) ,直译为知识产权。在集成电路(IC,Integrated Circuit)设计中,IP 核被定义为已经经过工程验证、可以多次使用的具有某种确切功能的集成电路设计模块。如今比较出名的 IP 产品有 Intel 的处理器技术、Nvidia 的 GPU 技术、TI 的 DSP 技术、Motorola 的嵌入式 MCU 技术、Trident 的 Graphics 技术等。这些经过验证和已经大量使用的集成电路模块是具有比同类产品更加优秀的性能、能耗降低发热减少、技术比较比较先进、知识产权集中、有比高的市场价值等特点,并且是代表世界集成电路设计产业的最关键产业要素和竞争力体现。集成电路是整个信息产业的 '芯',而 IP 又是这个 '芯' 的 '核',这就是所谓的 IP 核,而且是一段具有特定电路功能的硬件描述语言程序,该程序与集成电路工艺无关,可以移植到不同的半导体工艺中去生产集成电路芯片。

IP 核在开发芯片过程中是具有极其关重要的作用,使用 IP 核技术能够有效地减少芯片设计时间,提高芯片设计效率。随着计算机技术及微电子技术的不断发展,IP 核越来越多地被应用于集成电路领域。而且 HDL 语言形式对应着软核,网表形式对应着固核,版图形式是对应着硬核。这种分类主要依据产品交付的方式,而这三种 IP 内核实现方法也各具特色。

软核:通过硬件描述语言(如 VHDL 或 Verilog HDL)的具有特定功能的模块,但不涉及特定的电路元件。软 IP 通常以 HDL 源文件的形式出现在硬件描述语言中,应用开发过程与正常的 HDL 设计非常相似,但所需的硬软件环境开发成本较高。而在实际的嵌入式系统中,IP 一般都具有较好的可移植性和可重用特性。因此,将软核引入到传统的硬件设计模式中是可行的。软 IP 具有设计周期短、设计投资少的特点。由于没有物理实现的参与,有很大的空间进一步设计,所以如果使用这种方式实现 IP 核就会比较方便和灵活,但是主要弊端就是在后续工程应用中存在不适配的风险,因此需要根据实际情况对软 IP 进行修改,但是无法实现整体的优化性能。但是软核是以硬件描述 描述语言编辑的源代码的形式提供的,虽然源代码可以进行加密,但是知识产权保护 的问题也值得重视。

硬核是最终阶段产品: 硬核在 EDA设计领域指经过验证的设计版图;具体在 FPGA设计中指布局和工艺固定、经过前端和后端验证的设计,设计人员不能对其修改。 不能修改的原因有两个:首先是系统设计对各个模块的时序要求很严格,不允许打乱已有的物理版图;其次是保护知识产权的要求,不允许设计人员对其有任何改动。IP 硬核的不许修改特点使其复用有一定的困难,因此只能用于某些特定应用,使用范围较窄。

固核则是软核和硬核的妥协。固核是软核与硬核之间的妥协。FPGA 中使用的大多数 IP 内核都是软核,它可以帮助用户调整参数,提高可复用性。为了提高软核系统性能,需要将所有功能都集成到一个芯片上,这增加了芯片级电路面积、功耗及成本。 而使用加密软核可以简化这种复杂的过程。软核通常以加密的形式提供,因此用户看不到实际的 RTL,但布局和线路是灵活的。而硬件上的硬核则需要使用专用的软件来实现其功能。在许多情况下,软/硬件结合可以提高芯片性能。例如,Virtex-5 芯片级处理器。在这些加密软核中,将内核用各种参数表示,这样就可以通过头文件或用户接口比较方便设置操作参数。对于有些对定时要求比较严格的内核,比如说 PCI 接口内核,为了满足时序要求可以预布线或分配特定的布线资源。这些内核就叫做固核,并且因为内核是一个先前就设计好的实现某种特定功能的代码模块,所以这可能会影响包含内核的总体设计。但是因为设置、保留时间和握手信号都可以固定,所以在设计其他电路时必须考虑内核。而他的缺点在于内核有固定的布局或部分固定的布局,这也 会影响其他电路的布局。

而在现实工程使用中,知识产权核主要有两种使用方式,一是根据自身应用功能需求,通过硬件描述语言自己开发可以相应功能的 IP 核,二是直接调用现有的可以重复使用的 IP 核,现如今大多数开发环境都会提供某些可以重复使用的IP核。本文主要是采用第一种方式,根据控制系统功能需求开发实现特定功能的IP核。在本论文的IP核开发过程可以叫做在SOPC系统开发中,基于AXI总线,实现固定规范和特定功能的电路模块,在开发完成后可以用在不同的项目中,有很大的灵活性,在本论文中是极为重要的关键技术。IP核的设计流程大致分为以下几个步骤:

(1)确定 IP 核的规格 IP 核的规范包括以下内容:第一,要确定 IP 核的规格。其次,要明确 IP 核所涉及到的各个组成部分之间的关系及相互之间的映射关系;最后,IP 核在不同阶段对这些部分的具体要求是不相同的。IP 核的规格至少包括以下内容:概述、功能需求、性能需求、物理需求、详细的结构模块框图、对外系统接口的详细定义,可配置功能详细描述、需要支持的制造测试方法、需要支持的验证策略等。其中功能需求是最重要的一部分,也就是 IP 核必须具备的核心能力之一。它主要包含了 IP 核应该具有的基本功能以及能够满足该基本功能的硬件架构和软件体系结构两方面内容。规格的确定过程通常包括为功能论证进行行为建模和为在性能和成本上达成妥协进行可行性分析等活动 确定规格的过程一般又包括 行为建模进行功能论证,可行性分析就性能和成本 进行妥协等活动。

(2)进行模块划分 在构建好 IP 结构模块框图的同时进行模块的划分,对于个下层模块给出一个具体的功 能描述,而且必须确定每个下层模块之间接口的相互时序。如果没有这个环节,则整个 IP 结构都无法建立起来,最终导致开发出的产品与实际不符。这就说明,在进行模块化之前,首先要制定好相应的模块规划。只有规划好模块,才能够设计好。确定规划和划分模块是 IP 开发是否成功最为关键的一步。

(3)进行子模块定义和设计 开发设计人员先进行讨论设计可行性再核对所有子模块的规格,最重要的是是检查时序接口和功能接口是否一致,然后整理了子模块的具体设计方案。在此基础上,设计一个包含有多个功能模块的系统模型,将各个子系统封装为统一的逻辑结构。 然后对系统模型中各部分的组成以及相互之间关系做进一步说明。最后介绍整个系统的开发流程。然后,开发人员根据实现方案编写 RTL代码、时间约束文件、综合批处理文件、用于子模块 testsuite的测试平台和测试套件。一旦这些任务通过代码规范性检查、测试覆盖率检查、功能覆盖率检查检查等方式完成并被接受,这个子模块可以与其他模块集成。

(4)进行顶层模块设计 顶层模块开发就是把子模块通过例化调用子模块端口,将子模块集成起来集中控制,产生顶层模块,并对它进行综合处理和功能验证。通过编写综合的处理文件,以及在不同的参考库上综合,完成综合过程。以及对于制造上的可测性插入扫描链然后 产生最终的性能分析和功耗分析等。

(5)IP 核的产品化过程 在此产品化过程中,需要提供具有 testbench IP 设计和验证,testbench 通过硬件描述语言调用 IP 核的端口,给输入值赋予初值和商用转换器一起包装和提交,但在转换后需要重新验证,如进行回归测试以确保转换工作,在几个主流仿真器上捕捉模拟,对几个主要工艺库进行合成,门级仿真,形式验证以确保网表和 RTL级之间的一致性,以及生成或更新用户文件

(6)IP 核的验证 在验证 IP 核的时候,主要是建立参照模型和测试平台,然后进行回归测试和形式验证。其中,从原型到 RTL 级 IP 核所需时间约占整个 IP 核开发周期的一半以上,此处引用的模型主要用于验证系统功能并与用 Verilog HDL 或 VHDL 各种语言构建的 RTL 模型进行交叉引用。在设计开发 testbench 测试平台的时候要与底层模块设计一起进行,还要构建验证环境和开发测试用例,然后根据 IP 核的行为级模型对相关测试环境以及测试用例进行调用,并且准备好用来仿真测试 RTL级 IP 核的验证环境和测试用例。回归测试解决的问题是设计在修改一个错误的同时,却引入了另外一个错误。回归测试保证在修改一个错误或加入一个新功能时,已经验证过的基本功能仍然正确。验证工程师应该注意在验证过程中找到一个错误,或加入一个新功能时,要把它们对应的测试用例及时加入到回归测试集中。形式验证是一种系统级的验证手段,不需要测试向量,而是根据“静态”地通过判断两个设计是否等价来确认他们的功能是否一致,因此,形式验证必须事先有一个参照设计。在 IP 核验证过程中,前面建立的参照模型就是我们的参照设计。形式验证常用来判断一个设计更改后核设计更改前实现的功能是否一致。同时,形式验证也被用来确认综合后、扎入扫描链后,版图提取后网表实现的功能前后是否一致。

IP 核:集成电路设计的核心竞争力

原文地址: https://www.cveoy.top/t/topic/nEjj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录