今天,系统级芯片 (SOC) 设计师在产品开发中面临的最重要的问题之一就是如何选择一个知识产权 (IP) 内核。它能够影响产品的性能和质量,以及上市时间和盈利能力。然而SoC 设计师在选择一个内核的时候面临着诸多挑战。他们需要仔细考虑以决定哪种内核对特定的SoC最合适。他们必须决定内核的类型(软内核或是硬内核)、可交付成果的质量、可靠性和IP提供商的承诺等等。本文将就以上每个环节进行讨论,并为如何最好地评估多个竞争的IP内核的特性提供一个指导。
引言
芯片生产技术的持续进步已经使得今天设计工程师拥有了大量的芯片资源。但不幸的是,设计团队设计电路的能力没有跟上发展的步伐。这种不平衡催生了IP内核产业。IP内核可使设计团队通过整合预制的模块快速创建大量的系统级芯片(SoCs) 设计,而这些模块不需要任何设计或验证工作。然而,这一新的设计模式也伴随着一些严峻的挑战。根据内核的不同,它们能够被最小化或者被恶化。
首先,IP内核可以以两种形式提供给客户:软内核和硬内核。两种内核的提供方式都可以使客户获得在功能方面经过验证的设计。软内核,也被称为可合成内核,需要由客户集成在其SoC上实现。另一方面,硬内核可以完全实现和直接投入生产。(从技术上说,一种设计只有生产后才能实现。但是在此情况下,实现的意思是指安排布局并可直接投入生产)。SoC团队只需将硬内核像一个单片集成电路片那样置入芯片即可。软内核和硬内核具有不同的问题和好处,下面将逐一详细介绍。
IP内核启动了SoC设计工作中一个关键部分。利用验证的设计,设计团队能够以更少的时间、使用更少的设计及电子设计自动化 (EDA) 资源完成其芯片设计。然而,将内核整合到一个芯片上需要很多步骤。这个过程是否能够很容易地完成,主要取决于提供的交付成果。这篇文章详细介绍了一些能够非常容易地将内核集成到SoC设计过程的所有步骤的附属交付成果。
最后,还需要考虑IP供应商。IP产业刚刚起步,存在许多低质量甚至一些有缺陷的产品,而且它们还没有被限制开发。客户不仅必须对IP内核进行评估,而且还要评估IP提供商。
软内核与硬内核的对比
我们来分析一下两者的优势与不足:
性能
由于软内核不用执行,因此它在功能和实现方面比硬内核更加灵活。另一方面,硬内核开发者能够花更多的时间来优化它们的实现,因为它们能够在很多设计中使用。因此,这使人们觉得硬内核能够提供更高的性能。
事实上,为那些最先进工艺设计的高端、全定制硬内核确实能够提供比软内核更好的性能表现。通过使用锁存、动态逻辑、三态信号、定制存储器等,全定制设计组能够获得比完全静态合成的设计更好的结果。对于需要达到现有工艺和设计技术极限性能的SoC来说,全定制硬内核能够更好地的满足这些要求。
然而,如果性能目标只是在一个软内核范围内,那么硬内核潜在性能优势就无关紧要了。SoC设计团队能够使用软内核满足性能要求,并利用其内在灵活性的优势。(随着工艺技术的进步,软内核的最高频率限制也在提高,使它们成为了更多SoC设计师的选择。)在较低时钟频率下,硬内核或许可以提供芯片尺寸方面的优势。但是情况往往并不是这样。硬内核经常简单地使用ASIC的方法进行固化,使之不能提供速度上的优势。在其他情况下,全定制内核不能根据每一代工艺进行重新优化,所以减小了频率和尺寸上的优势。
技术独立和简化
软内核的优势之一是采用独立的技术。这就是说,高水平的Verilog 或 VHDL 不需要使用一种特定的工艺技术或标准的单元程序库。这意味着同一个IP内核能够应用到多种设计,或现有设计的下一代产品中。(一些软内核提供商利用使客户依赖其内核技术的设计方式,但是这种方式的好处并不明显。)
另一方面,硬内核是非常特殊的技术。事实上,如果代工厂改变其工艺参数或库函数,随着工艺的改变硬内核可能无法正常工作。这就产生了一个风险,因为在工艺参数改变时,IP提供商需要重新对硬内核进行验证。
硬内核能够采用新的工艺技术,但是重新优化全定制内核的工作既费事又昂贵。而对于一些先进的微处理器内核,这可能要花两年或更长的时间。因此,硬内核经常根据新的工艺进行光学调整。虽然这一方式既简单又快速,但是它减少了由设计团队为现有工艺定制优化的许多优势。
不仅如此,光学调整同时带来了另一个风险,因为它只能保证新的设计满足设计规则,而不能保证准确的时序或功能。因为光学调整是一条设计捷径,全面重新验证经过光学调整的IP内核是非常困难的。
速度/尺寸/功率优化
硬内核的IP提供商执行硬内核时先要进行一次优化。因为内核只被优化一次,IP提供商能够承担主要的资源成本。因而对于一种技术来说,硬内核经常比可比较的软内核运行的速度更快。但是即使在这种技术中,硬内核仅仅是针对一组目标而优化的。如果目标是在合理的性能上使芯片尺寸更小,那么,对于这种应用来说,为高度可调性能而优化的硬内核就可能太大了。
另一方面,软内核能够被"应用优化"。为适合特定的嵌入式SOC设计,时序、尺寸和功率目标可能需要进行调整。例如:如果SoC使用200 MHz 时钟,那么设计运行在250 MHz的软IP内核可能需要改为准确地运行在200 MHz上。这可在得到更小尺寸和更低功率的同时满足设计要求。
这种应用优化同时适用于低层IO时序。软内核的IO限制可以进行调整,以准确配合内核的使用环境。如果硬内核有延迟输出信号,SoC设计师几乎无法改善时序。
如果SoC的速度、尺寸和功率目标与硬内核的目标相符,那么硬内核将极具竞争力。但对于大多数设计师来说,软内核在特定的SoC优化方面更具优势。
用户定制能力
软内核相对硬内核还具有另外一个优势:编译时间用户定制化。这些是执行之前的设计选择。
高速缓冲存储器的内存大小就是一种常见的编译时间用户定制化。软内核处理器能够精确地根据特殊嵌入式应用所需的高速缓冲存储器的大小进行配置。而硬内核在这方面就不能定制化。
另一种在许多软内核中应用的定制化是指令专用,或选择性支持某种特殊指令。例如,一些系统可能需要对扩展协处理器的支持。然而,在一些不使用这些特性的系统中,软内核中多余的硬件可以去掉,以节省空间和功率。
软内核也可以包括执行配置参数。它们是一种特殊的编译时间用户定制化,可帮助软内核更好地配合SoC团队使用的设计方式。例如,微处理器内核经常通过使用门控时钟电路实现。然而,这种时钟不能与某些时钟路由工具很好配合。如果处理器内核可提供一种将所有门控时钟变为相等的重复多工器的编译时间设置,将使SoC团队的实现更为容易。
整合的便利
除非内部设计组已经实现了硬内核,软内核能够更容易集成到SoC设计团队使用的流程中。其原因是SoC设计团队将在他们认可的IP内核周围添加RTL模块。这些内核看上去就像其他SoC模块,并可像它们一样地实现。
另一方面,硬内核看上去更像一个黑匣子随机存储器,特别是在它通过全定制技术实现时。这意味着硬内核提供商将需要为该内核提供更多的黑匣子模型,使SoC设计师能够在其周围设计其模块。这本身就比使用软内核更困难。例如,全定制硬内核也许没有门级排线表。这是因为该设计已经在晶体管层完成,而没有使用逻辑门。但是设计团队可能需要通过逆向注解时序运行门级功能仿真。因为缺少门级排线表,这将非常难以实现。
附属材料
一个有竞争力的软IP内核不只是一个Verilog 或 VHDL源文件的集合。出于同样原因,一个好的硬内核也不只是一个设计图数据库。今天的IP内核包含一套交付成果,它们允许SoC 设计团队将IP内核整合到他们的设计中。这些附属交付成果的目的是尽可能容易地将IP内核整合到设计流程的各个环节。
图1显示了采用不同IP内核的SoC开发活动。这部分讨论了一些对软内核和硬内核都必需的交付成果。

文件
清晰和简练的文件是大多数技术产品的先决条件。然而,需要参考IP内核文件的人的差异非常大,这对于IP内核技术文件具有非常大的挑战性。
在图1中,每一个开发活动都有不同的文件需求。例如,软件开发者需要了解硬件的可编程特性,但他们可能不关心它是怎样实现的。因此,一组好的文件可使软件开发者更容易发现他们所需的信息,而不致被大量无用的信息困扰。
最后,如果SoC团队需要为能重复使用IP内核文件的SoC创建文件,IP提供商应该提供可编辑的源文件和SoC文件的引用权。
接口检验设备
SoC团队必须设计逻辑,以便与不同信号和IP内核协议进行连接。为了决定其设计是否正确,IP提供商能够提供接口检验设备模块,以验证所有接口信号和协议的正确运行。它可能与确认不变的静态信号一样简单,或者就像确认多周期总线协议的正确运行一样复杂。
这些检查设备能够大大简化SoC团队自动验证给定接口处理类型是否正确运行的工作。在一个非法处理的情况下,检查器应该报告错误,使SoC设计师能够容易地查明有缺陷的逻辑并排除故障。接口检查设备必须在SoC设计环境中准确工作。它应该能够非常容易地整合到功能模仿真中,而不以一种实际硬件的形式出现。
协议制表器
IP提供商能够提供另一种交付成果使接口验证变得更加容易,这就是协议制表器。这是一个监测接口处理的模块,可观察到各种特殊状况。协议制表器保存所有可见的处理类型并报告没被运行的特殊情况。IP提供商必须提供一个所需的进行接口全面验证的特殊情况表。
在开发过程中,协议制表器将帮助SoC团队决定那种特殊情况需要保留以便进行验证。一旦开发结束,它同时确保通知SoC团队已经执行了所有必须的特殊情况验证。由于IP提供商对内核接口具有最佳
的理解,这个特殊情况表将比SOC团队能够设计的任何方案更加完善。 随机存储器 (RAM) 检查器
如果一个IP内核拥有SoC团队必须编译和整合的内部随机存储器,在处理过程中有可能引入瑕疵。排除由深度嵌入式RAM导致的故障对于SoC团队是一件非常困难的事情,因为它经常涉及通过内核模块跟踪故障的工作。RAM检查器能够大大易化排除RAM模块导致的故障的工作。(当SoC团队不得不通过一个IP内核来排除故障时,这是一个非常糟的情况。他们应该能够信赖它的正确运行。)
快速仿真模型
对于SoC设计师来说,使用一个大型IP内核的RTL仿真完整的SoC可能非常缓慢。如果IP提供商能够提供一个周期精确的内核快速功能模型,客户将从快速仿真、快速调试及更少地使用仿真授权中获益。即使是一个非周期精确的模型,对于大多数SoC设计和调试已经足够好了。只要最后运行周期精确模型,在开发过程中就可以从快速功能模型中受益。
EDA工具支持
另一个内核质量指标是EDA工具的支持程度。由于不同设计团队可能使用不同的工具,支持多种EDA工具的多种形式的交付成果是今天先进内核经常提供的方式。
例如,即使一个IP内核使用Vereilog设计而成,那些使用基于VHDL的EDA工具和方法的客户仍然需要VHDL。如果一个内核只针对Verilog,那么SoC团队在使用该内核时,将不得不忍受一个充满容易发生错误的编译。
此外,IP提供商应该提供比需求格式更多的东西。不同的EDA工具可以有标准形式的不同实现方法。在以上的例子中,IP提供商不能仅仅为Verilog客户提供Verilog RTL。它必须支持客户使用的特殊的Verilog仿真器。否则,该客户可能无法排除运行与IP提供商提供的略微不同的Verilog仿真器时出现的调试设计问题。
这个概念实际上适用于所有交付成果。对于硬内核,这个概念同样可在实现阶段应用。硬内核必须以一种被SoC团队后端工具所支持的形式提供。而且 IP 提供商必须支持客户使用的特殊后端工具。
这个概念实际上适用于所有交付成果。对硬核来说,这个概念同样可在执行阶段应用。所提供的硬核必须是能被SoC团队后端工具支持的形式。而且 IP 提供商必须支持特殊后端工具的使用。
尝试EDA脚本
为了起动不同设计活动,IP提供商应该提供支持EDA工具的实例脚本。这是IP提供商帮助SoC团队有效地使用IP内核进行系统设计的另一种方法。该脚本可能如项目组成文件一样简单,有助于实现汇编功能仿真器。这些脚本也可能如一个全套的、针对功能倒退执行的自动化设计脚本一样复杂。在任何情况下,实例脚本对于SoC设计师来说都是非常有用的。
对于软内核来说,实例合成脚本几乎是必要的。至少它们应该提供最高层规范、故障路径和多周期路径。如果可能,应该同时提供执行几个工业标准综合方式的脚本。当然,这些实例脚本越简单,对于SoC设计师来说就越容易理解、修改和集成到他们的流程中。
功能内核验证
虽然SoC设计师不会修改软IP内核的RTL设计,但是他们确实会改变作为芯片设计常规部分的一些功能。这样的例子包括扫描链接插入、时钟缓存和RAM BIST集成。SoC设计队伍需要验证这些改变不会对内核的正确运行产生影响。
验证新的设计在功能上与以前的设计没有改变的一种方法是采用IP提供商提供的测试基准和测试套件,以全面验证内核是否正确运行。不幸的是,对于许多内核来说,完整的测试套件太大了,以至于不能作为IP内核的一部分来提供。因此,大多数IP提供商选用完整验证套件组的子集,它同样能够验证运行。大多数情况下,这个子集对于发现那些由以上设计变化类型产生的错误来说已经足够了。
然而,正式的验证工具对于保证正确运行是一个更彻底的方法。这些工具可精确地验证新的设计与老的设计相同之处。正式验证工具的支持无需SoC设计队伍运行门级倒退。
软件联合开发工具
为新系统开发软件的标准方式是,首先生产硬件样本,然后开发运行在上面的软件。然而,在很多情况下这延长了产品上市时间,因此软件开发经常与硬件开发平行进行。
软件开发比硬件开发需要快得多的系统仿真。因此IP提供商必须提供一个非常快的IP内核功能模型。这为低层固件的开发提供了足够的可性能。
对于更高的仿真速度,有时会使用硬件逻辑仿真器,它可比纯仿真快一个数量级(虽然这仍然比实际硬件慢2至3个数量级)。这些工具非常难以使用,而且需要特殊的合成。对于计划进行硬件和软件联合开发的SoC设计队伍来说,对这些技术的支持是IP内核的关键要求。
评估IP提供商
有许多公司可以提供IP内核。许多是小型、新兴的设计公司,还有一些是大型、成熟的公司,后者将IP内核作为为用户提供设计的一种新的途径。不幸的是,公司的大小并不能代表所提供的IP内核的质量。SOC设计师应该履行对其IP内核产品所作出的承诺。
设计是否可以重新使用?
例如,一个未对IP内核产品做出完全承诺的IP提供商,它的产品可能只是将以前的设计重新包装成IP内核。而一家以认真的态度致力于构建高质量内核的公司从一开始就把重新使用作为其设计理念。本文的以下部分将详细描述可重新使用的设计的一些特点。
首先,留意那些其源代码为全定制硬内核的软内核。由于这些原始设计不是针对可合成特性的,与针对可合成性而设计的产品相比,其性能较差。在制作一个硬内核时,可以基于已知执行方式进行优化。但是,对于一个软内核,就没有执行的需要,所以不应采用这些捷径,因为它们可能导致非功能性的或非理想的执行。
在寻找一个软内核时,需要注意的另一个问题寄存的接口信号。通过寄存IO,内部逻辑可实现与SoC设计队伍的任何方案定时独立。而且,它易于实现定时的可预测性,并为SoC设计师提供非常好的定时约束。所有这些使得SoC设计师更加轻松。
一个从一开始就针对重复使用性而设计的软内核常常拥有更多的配置选择,而且在执行中有更好的灵活性。它同时很可能考虑用于多种设计环境。一个没有考虑重复使用的设计将在功能和执行方面缺乏灵活性。
完整的产品线
一个好的IP提供商的另一个标志是完整的IP内核产品线。如果你选择软内核,应该确认那家公司提供的是面对未来产品开发的完整的软内核产品。如果你选择硬内核,应确认它可提供所有你将使用的工艺技术。他们是否计划扩展其提供的软内核产品?他们如何计划将硬内核与新的工艺配套?(密切注意全定制内核的视觉调整。)
维护与支持
产品维护和支持的质量不是IP内核唯一的选择因素。但是应小心那些缺乏全力支持的年轻公司。即使是一家成熟的公司,也有一些专门的维护IP内核所必需的基础架构,以下是期待项目的清单:
· 这家公司是否有一个清晰的为用户提供文档的方式,以帮助解答问题吗?
· 支持SoC队伍的费用如何?(你是否存在失去支持的危险?)
· 这家公司能否坦白的披露设计中的缺陷?
· 这家公司发布修复缺陷版本的频率如何?
· IP提供商是否发布维护版本,增加IP内核新的功能或其附属交付成果(如提供更多EDA工具支持)?
· 一旦需要技术支持,这家公司的反馈如何?
· 如果技术支持反馈时间太慢,这个问题能改善吗?
· 第一线的技术支持人员的素质如何?
在很多情况下,技术支持的质量并不是最初决定购买IP内核的因素。但是在设计队伍非常需要帮助的时候,对一个项目不佳的支持可能变成一个主要问题。最佳的技术支持是项目成功的必要因素。
总结
IP内核设计是一个新的领域。在这个快速发展的领域有许多公司为使自己的设计成功而竞争。SoC设计师必须谨慎地评估这些设计和IP提供商,小心地避免可在任何新技术中发生的各种缺陷。
针对硬内核的优化可能对要求特殊应用的少数设计师有帮助,但是一个软内核所拥有的灵活性对大多数设计将是更理想的。
· 应用优化
· 编译时间客户化
· 技术独立
· 易于集成到SoC流程
没有很好的交付结果的IP内核也很难集合到SoC流程中。所以,评估该IP内核的交付结果,确认其支持适当的EDA工具及所有SoC流程可以流畅地执行是非常重要的。
IP提供商的选择当然与选择IP内核本身一样重要。一个对IP内核做出郑重承诺的IP提供商是完全必要的。而且,SoC队伍需要了解该IP提供商在未来如何持续对其产品提供技术支持,以及如何推出新产品。
今天,SoC设计师面临着许多挑战。使用一家著名公司的高质量IP内核应该使应对这些挑战变得更容易,而不是更难。
