FPGA 入门 —— 核(软核、硬核与固核)
FPGA 入门 —— 核(软核、硬核与固核)
要想了解 硬核、软核与固核,这里我们首先要知道什么是 “核”!!!
核
核(CORE)是一个数字系统的核心,负责整个系统的内存调度,中断管理,算术逻辑运算等,如同整个系统的大脑,是由物理电气实现逻辑功能的关键。尽管复杂,但不可忽略的是,核同其他数字器件一样,也是一个典型的逻辑器件(准确的说是时序逻辑),也由逻辑门、触发器构成,那么也就可以由硬件描述语言来描述
既然核可以由 HDL 来描述,那么对于每一个特定功能和性能(即逻辑的时序和功能特定)的核而言,必有一组 HDL 描述等价于它,而具体的器件信号、封装等,只不过是这组 HDL 依赖具体工艺的一种物理实现罢了。因此,我们应该认识到,所谓核,本质上是一种知识产权,是一种特定的可描述的逻辑结构
IP 核
IP 核是具有知识产权的集成电路芯核总称,是经过反复验证过的、具有特定功能的宏模块,与芯片制造工艺无关,可以移植到不同的半导体工艺中。到了 SOC 阶段,IP 核设计已成为 ASIC 电路设计公司和 FPGA 提供商的重要任务,也是其实力体现。对于 FPGA 开发软件,其提供的 IP 核越丰富,用户的设计就越方便,其市场占用率就越高。目前,IP 核已经变成系统设计的基本单元,并作为独立设计成果被交换、转让和销售
核的分类
从 IP 核的提供方式上,通常将其分为软核、固核和硬核这 3 类。从完成 IP 核所花费的成本来讲,硬核代价最大; 从使用灵活性来讲,软核的可复用使用性最高。与软核实现方式相比,硬核可以把功耗降低 5~10 倍, 节约将近 90% 的逻辑资源
软内核
软核(Soft IP Core) : 软核在 EDA 设计领域指的是综合之前的寄存器传输级(RTL) 模型;具体在 FPGA 设计中指的是对电路的硬件语言描述,包括逻辑描述、网表和帮助文档等。软核只经过功能仿真,需要经过综合以及布局布线才能使用。其优点是灵活性高、可移植性强,允许用户自配置;缺点是对模块的预测性较低,在后续设计中存在发生错误的可能性,有一定的设计风险。软核是 IP 核应用最广泛的形式
软内核指的是在 FPGA(现场可编程逻辑门阵列)或者 SOC(片上系统)的 IP 内核,可以理解为类似于一种处理器或者 MCU(微控制器)的内核
若利用 FPGA 的可编程性在芯片内部构造实现了一个计数器逻辑,那么在构造计数器逻辑过程中使用到的功能便可以成为“软功能”,又称之为“软内核”
硬内核
硬核 (Hard IP Core) :硬核在 EDA 设计领域指经过验证的设计版图;具体在 FPGA 设计中指布局和工艺固定、经过前端和后端验证的设计,设计人员不能对其修改。不能修改的原因有两个:首先是系统设计对各个模块的时序要求很严格,不允许打乱已有的物理版图;其次是保护知识产权的要求,不允许设计人员对其有任何改动。IP 硬核不允许修改的特点使其复用有一定的困难,因此只能用于某些特定应用,使用范围较窄
如果某个功能若是直接利用芯片实现的,则是利用了芯片内部的“硬功能”,一般又称之为“硬内核”
固核
固核(Firm IP Core) :固核在 EDA 设计领域指的是带有平面规划信息的网表;具体在 FPGA 设计中可以看做带有布局规划的软核,通常以 RTL 代码和对应具体工艺网表的混合形式提供。将 RTL 描述结合具体标准单元库进行综合优化设计,形成门级网表,再通过布局布线工具即可使用。和软核相比,固核的设计灵活性稍差,但在可靠性上有较大提高。 目前,固核也是 IP 核的主流形式之一
内核对比
虽说是内核对比,这里主要是对比 “软核” 和 “硬核”
软核、硬核优缺点
制程技术独立性
软核是用FPGA的通用逻辑资源(LUT+FF)搭建而成的。从用户使用角度来看,二者没有什么开发难度上的区别;性能上,一般硬核速度比软核高,整体功耗也要低一些
硬核是固化在FPGA内部的特殊硬件电路,简单理解的话,可以把硬核看成是嵌入在FPGA内部的ASIC。如嵌入式RAM,嵌入式乘法器, PLL 等
软核的其中一项优点就是制程技术独立性。高阶的 Verilog 或 VHDL 程序不需要运用某一特定的制程技术或标准的单元库(cell library)。这意谓同一套 IP 核心可重复应用在多种设计,或是未来新世代的设计方案中。(部份软核IP供货商开发出针对特定制程的方案,让其核心不具制程技术的独立性,但这种模式的优点尚不明确)
另一方面,硬核则具有相当高的制程技术特定性。事实上,若厂商变更其制程参数或单元库变量(cell library factor),硬核有可能就无法正常运作。因为 IP 供货商在制程参数改变后,须重新检验硬核,所以这种特性即衍生出运用上的风险
硬核可移植到新的制程技术,但须投入相当可观的心力与成本来重新进行最佳化调校。对于某些先进的微处理器核心而言,须耗费两年甚至更长的时间。因此,硬核的尺寸通常会针对新制程等比例缩小。这种方法虽简单且迅速,但可能减低研发团队针对最初制程进行的最佳客制化效益
事实上,软核可能是针对单一制程技术与单元库为设计依据,设计本身与此一技术无关。针对制程技术与单元库提供最佳的效能,类似的技术可能达到接近最佳化的成效,但是差异性较大的技术(例如搭配速度较慢的RAM)可能就无法达到相同的结果。此种现象并非绝对重要,所以软核在最佳化的弹性方面优于等比例光学缩小的硬核
客制化弹性
软核另一项超越硬核的优势就是:编译当时才做客制化,在建置之前,可自行选择许多设计选项
高速缓存大小是编译时常见的一种客制化项目。软核处理器让使用者选择其特定嵌入式系统所需的快取记忆容量。而硬核则无法进行这种客制化设定
许多软核具有的另一种客制化设计就是自行定义指令集,也就是自行支持特定指令的功能。例如若 SOC 有特殊需要,可使用外部协同处理器,有些系统或许需要运用具有压缩功能的指令码,但若系统不需要这些功能时,这些多余硬件就可从软核中移除,以节省芯片面积与功耗
软核同时也有一些建置组态参数,这些特殊的客制化参数能使软核进一步融入 SOC 团队所进行的设计环境。例如,微处理器核心通常运用逻辑闸频率电路进行建置,但这种频率可能无法搭配部分频率路由工具。若处理器核心有提供编译时的设定功能,能将所有逻辑闸频率变更成等效的再流通 MUX(多任务)组件,就能减少建置过程中所遇到的困难
整合的难易度
除非硬核由内部研发小组所建置,否则软核通常比较容易整合至作业流程。其原因是研发团队将在获得授权的IP核心周围加入各种RTL模块。此时核心就如同 SOC 中的其它模块,亦能采用相同的建置处理方式
硬核比较像一个黑箱RAM组件(black-box RAM),尤其是采用全客制化技术所建置的核心。这代表硬核供货商须提供更多的黑箱式核心模型,让 SoC 研发业者能针对这些处理器设计其模块。这种流程应用难度原本就高于软核。例如,一套全客制化的硬核可能没有逻辑闸层级的电路清单(netlist)。这是因为设计工作是在晶体管层级中进行,并未涉及逻辑闸。但设计团队可能需要做含有回馈(back-annotated)时序机制的逻辑闸层级功能仿真测试,此时若缺乏逻辑闸层级的电路图就很难进行这种模拟
软核通常以可综合的 HDL 提供,因此具有较高的灵活性,并与具体的实现工艺无关,其主要缺点是缺乏对时序、面积和功耗的预见性。由于软核是以源代码的形式提供,尽管源代码可以采用加密方法,但其知识产权保护问题不容忽视。硬核则以经过完全的布局布线的网表形式提供,这种硬核既具有可预见性,同时还可以针对特定工艺或购买商进行功耗和尺寸上的优化。尽管硬核由于缺乏灵活性而可移植性差,但由于无须提供寄存器转移级(RTL)文件,因而更易于实现 IP 保护
固核则是软核和硬核的折衷。大多数应用于 FPGA 的 IP 内核均为软核,软核有助于用户调节参数并增强可复用性。软核通常以加密形式提供,这样实际的 RTL 对用户是不可见的,但布局和布线灵活。在这些加密的软核中,如果对内核进行了参数化,那么用户就可通过头文件或图形用户接口(GUI)方便地对参数进行操作。对于那些对时序要求严格的内核(如 PCI 接口内核),可预布线特定信号或分配特定的布线资源,以满足时序要求。这些内核可归类为固核,由于内核是预先设计的代码模块,因此这有可能影响包含该内核的整体设计。由于内核的建立(setup)、保持时间和握手信号都可能是固定的,因此其它电路的设计时都必须考虑与该内核进行正确地接口。如果内核具有固定布局或部分固定的布局,那么这还将影响其它电路的布局
软核、硬核对比
硬内核能够采用新的工艺技术,但是重新优化全定制内核的工作既费事又昂贵。而对于一些先进的微处理器内核,这可能要花两年或更长的时间。因此,硬内核经常根据新的工艺进行光学调整。虽然这一方式既简单又快速,但是它减少了由设计团队为现有工艺定制优化的许多优势
另一方面,硬内核是非常特殊的技术。事实上,如果代工厂改变其工艺参数或库函数,随着工艺的改变硬内核可能无法正常工作。这就产生了一个风险,因为在工艺参数改变时,IP 提供商需要重新对硬内核进行验证
软内核的优势之一是采用独立的技术。这就是说,高水平的 Verilog 或 VHDL 不需要使用一种特定的工艺技术或标准的单元程序库。这意味着同一个 IP 内核能够应用到多种设计,或现有设计的下一代产品中。(一些软内核提供商利用使客户依赖其内核技术的设计方式,但是这种方式的好处并不明显。)
目前 MIPS、ARM、ARC 和 Tensilica 等公司正在加入软内核行列中,足见软内核是一种发展趋势