|
                  本文是上下连载的下篇,探讨的内容是:     自动化如何使没有硬件背景的设计师能实现定制硬件的加速。     越来越多的产品正在使算法模型和软件代码转换成硬件这一过程自动化,从而使没有具体硬件背景的设计师能够实现定制硬件加速。这些工具并不改变设计或工具流程,但可使这一流程中的一些手工步骤自动化(图 1)。这些工具要达到的目标是:要比其他方法缩短实现一项设计所花的时间,使设计师能探索更多的设计配置,使整个设计小组在完成某个项目期间能依靠单独资源工作,使用自动的“按结构校正”方法来提高流程可靠性,并确保验证流程与原始规范相联系。               正如这篇连载文章的上篇(见本刊2005年第2期 )所描述的,把定制硬件作为加速软件性能的指令或协处理器)来创造的各种可选方案正在演进之中。不过,上篇描述的过程假设:硬件工程师以人工方法把软件转换成硬件。虽然各种新型工具能使这一过程自动化,但大多数根据软件描述生成 RTL(寄存器传输语言)的工具都要求设计师至少了解一些要考虑的硬件因素(见附文《把软件移植到硬件》)。                根据某一算法规范或软件规范创建硬件并非没有挑战。设计师把某种算法作为软件来探索和实现所需要的技能,不同于用 FPGA 或 ASIC 来实现该算法所需的技能。软件设计师很少需要考虑系统时钟的偏斜、总线的容量和加载、模拟信号的处理和特性、温度、功耗以及电磁干扰,而所有这些都会影响硬件设计师优化设计的方法。软件采用一种顺序计算模型,而硬件一般处理设计师以很高的并行度来实现的状态机和组合逻辑。     传统的 EDA 工具处理的是如何在更高的程度上对硬件进行抽象,以提高设计师的工作效率。根据软件代码自动生成 RTL 的各种工具都有一个不同的重点。据 CriticalBlue 公司首席执行官 David Stewart 说:“挑战在于如何抽象各种软件概念,以便工具能把它们作为硬件来实现。”这些工具是供没有硬件背景的设计师而不是供精通 Verilog 或 VHDL 的硬件设计师使用的。这些工具允许在整个设计过程中坚持使用软件开发方法。它们使算法模型或软件代码在整个项目期间仍然是一个绝佳的资源,所以,对它所做的种种修改就能迅速、可靠、自动地传递到下游的动作中。      设计师在算法级要比在硬件级更容易了解总体情况。与 RTL 级仿真器相比,算法仿真器和软件仿真器能在宽得多的时间段内描述相关系统行为的特性,因此设计师就能探索并勾勒出更多的使用环境。鉴别高级别行为优化所带来的总系统性能提高要比鉴别低级别硬件优化大得多。软件转换成硬件这一过程实现自动化,也使设计师能探索更多其它的芯片实现方法,这是因为这些工具可简化这种转换工作,并可减少对设计修改所造成影响进行评估的时间。     这些工具通常通过对资源的报告、调度和显式映射,支持对处理速度和面积之间的折衷方案的分析和执行。除了生成RTL代码以外,这些工具还能在验证过程期间节省设计师的时间,这是因为它们能自动生成的测试台可利用来自各种算法探索工具的促进因素。这些工具几乎都不是独立的;当它们针对特定的FPGA器件或工艺技术时,便可与芯片制造商的工具接口,或直接集成到这些工具中。     正是因为一些工具能根据软件自动生成 RTL 代码并不意味着把它们用于所有代码是合理的。一般来说,与软件相比,硬件实现方法并不能以更好的成本和性能指标来执行复杂的顺序操作。适合转换成硬件的候选算法或功能有:能执行并行操作,并能受益于运行多个实例的算法或功能;能利用非标准的数据位宽度的算法或功能;能流水线操作的算法或功能;能完成那些执行时间比数据传输时间大得不成比例的数据处理的算法或功能。     从软件到 RTL     AccelChip 公司提供各种算法综合和验证工具及服务,可用来支持适用于FPGA、结构化 ASIC、普通 ASIC 的自顶向下 DSP 设计。今年,该公司推出了 AccelChip DSP Synthesis 工具,这是 AccelFPGA 的第二代替代产品,能直接根据MathWorks公司的 Matlab工具(用于DSP算法开发、数据可视化、数据分析)自动生成可综合的RTL模型。该公司还推出了 AccelWare,这是一种参数化DSP IP(知识产权)构件块,用以完成普通 Matlab工具箱功能。AccelWare块使用与Matlab功能和Simulink块相同的参数,并允许设师规定诸如定时等各种实现参数,以达到设计目标。AccelChip DSP Synthesis工具可为 整个算法生成RTL,其中包括 AccelWare 块。     AccelChip公司 的各种工具能使 Matlab工具在整个设计过程中仍然是绝佳的资源,这全在于它们能通过 MathWorks公司的Simulink接口支持系统级验证,并能集成到Synopsys公司的ASIC和Xilinx公司的System Generation工具流程中。AutoQuantizer工具能利用原始的浮点源和设计模型来确定每个变量的动态范围,由此使浮点模型变成定点设计这种转换自动化。AccelChip公司 的各种工具产生根据位真实的、周期精确的定点Matlab模型生成Simulink S 函数所必需的文件。AccelChip DSP Synthesis工具自动生成设计师用来验证布局后定点设计的仿真测试台。     Synplicity 公司的综合、验证和物理实现三种软件工具都是以实现FPGA、结构化 ASIC、平台 ASIC、单元基 ASIC、COT(客户自有的工具) ASIC 为目标的。该公司今年推出的Synplify DSP,能根据 Matlab 模型和 Simulink 模型生成可马上综合的 RTL 代码。Synplify DSP 工具使用系统级重定时等算法,以便在生成 RTL 之前在系统级优化 Simulink 模型,从而提高 DSP 实现性能。设计师只要根据一个单通道规范自动生成的一个多通道系统,就能对线程容量进行模拟分析。该工具能在规定的性能预算内共享器件上的资源,如乘法器,并且它支持在实现之前进行针对面积和性能的折衷分析,从而减少设计迭代。Celoxica 公司的 DK 设计工具套件有助于设计师探索硬件和软件分区,根据 C 描述自动生成硬件表示,并验证系统功能。借助面向 Altera SOPC Builder 的 DK Accelerator 设计工具,该技术可以纳入 Altera 的设计流程中。面向 Xilinx EDK 的 DK 设计工具套件是与 Xilinx 的工具流程捆绑在一起出售的,它支持利用多种高级语言对硬件和软件进行的协同仿真,这些语言包括 C、C++、SpecC、SystemC、Handel-C。DK3 版设计工具套件支持与 Matlab 和 Simulink 的更紧密的协同仿真。     利用 DK 工具组来转换基于 C 的算法,这涉及到把 C 源代码移植到 Handel-C( C 的一种方言),还涉及到使用 #pragmas来进行硬件和软件分区。 Celoxica 公司的营销副总裁Jeff Jussel指出:“根据 Handel-C而不是根据假设情况分析模型生成 RTL,使设计师能捕获并表达足以在硬件中高效率实现复杂算法所需的细节。”2004年,Celoxica 公司通过推出 Agility 编译器扩展了 DK 设计工具套件的功能,使之不再是仅仅进行 Handel-C 综合,因为编译器能在工具流程与 Handel-C 工具的流程几乎相同的情况下支持 SystemC 综合。     SystemC 是一种基于 C++ 的有利于系统级设计的建模语言。SystemC 分类库根据标准 C++ 分层,并使之扩展,以便规定并发行为、时间顺序操作、用于描述硬件的数据类型、结构分层和仿真支持。在 Celoxica 公司和 Forte Design Systems 公司2004年推出SystemC 综合工具之前,SystemC 工具的支持只包括建模和仿真。     开发行为综合技术的Forte Design Systems 公司,提供一条从高级算法到 RTL 的自动化路径(其中包括综合、验证和共同仿真),使设计师能利用更高级别的设计抽象。该公司的 Cynthesizer 根据未定时的 SystemC 模型和设计师提供的一组指令和约束条件(如时钟速度、等待时间、流水线运作、循环展开)生成完全定时的 RTL 实现。只要把一组组不同的指令提供给同一个设计源,设计师就能探索并分析处理性能与芯片面积之间的折衷方案。Cynthesizer 的自动化行为综合功能包括操作调度、周期定时、状态机实现、控制和数据路径设计、资源分配、RTL 生成。     从事EDA的Mentor Graphics公司推出多种软件设计工具和硬件设计工具,其中包括侧重于基于C的设计工具。该公司的Catapult C Synthesis 算法综合环境能依据未定时的 C++自动生成 RTL,并可与SystemC模型兼容。Catapult C Synthesis不需要设计师在C++ 源代码中嵌入接口定时。该工具根据设计师提供的约束条件生成实现方法,允许人们探索各种硬件接口,如流式传输、单端口或双端口存储器、交换信号和FIFO。这种体系结构约束工具提供设计中所有端口、阵列、环路的图形视图,并允许设计师直接应用环路展开或合并、流水线运作、RAM、ROM 或 FIFO 阵列映射、资源分配、存储器位宽度再设置、以及合并存储器资源。     Catapult C Synthesis 工具采用符号分析与优化技术,如顺序恒定传播、可变寿命、环路边界和环路阵列索引分析、存储器带宽优化,因此它能自动减少操作符位宽度,并共享元件和资源。为了帮助设计者分析各种实现方法,以便寻找最佳的性能和面积折衷,该工具以图形方式显示结果,形式为 x-y 图、直方图、表格,或原理图。分层的甘特(Gantt) 图是一种算法分析和微架构分析工具,可用作算法的原理图查看器。它使设计师能够检查数据流、元件使用情况、环路执行概况,从而在 C++ 源代码中查明存储器带宽局限、阻止并行的环路依赖性、阻止最优调度的数据依赖性。     Impulse Accelerated Technologies 公司的 CoDeveloper 系统根据Impulse C 源生成 RTL。Imoulse C源是用许多与C兼容的库函数扩充的标准ANSI C,用来表达并行操作。CoDeveloper Universal 使设计师能够开发混合的 FPGA 和处理器平台,但并不要求设计中包括嵌入式处理器。适用于 Altera 和 Xilinx 的 CoDeveloper 可进行以开发FPGA为目标的 C 到 RTL 的编译,并可与每一家公司的合适工具组接口。     设计师需要把计算密集型软件进程移植到 Impulse C上,以便能够自动创建软件块的并行硬件实现方法。Design Assistant 支持导入单个 C 进程,接受输入/输出要求,并自动生成模板源文件。Impulse C 编程模型支持各种数据流、各种信号和各种共享的内存模型,以便实现进程间的通信。CoDeveloper 为进程间通信生成一个一致的接口,这样,设计师就能开发一个由连接到 Impulse C 的接口组成的公共接口库,以满足各种项目要求。     Synfora 公司2004年推出的工具和 IP 都是该公司开发惠普公司 PICO(程序输入,芯片产出)“算法到出带”综合专利的成果。PICO Express 把可配置的 IP 和直接根据算法的 C 描述来探索和生成 RTL的探索工具及配置工具组合在一起。IP 包括一条适用于计算密集型操作的可配置处理器阵列流水线和一个适用于控制密集型操作,或用作可编程处理器的可配置 VLIW(超长指令字)体系结构。探索工具从 C 创建一组Pareto 最优实现方法,用以满足不同的性能和面积点,并以图形方式显示结果。配置工具把算法描述(表达为嵌套循环序列)映射到处理器阵列体系结构流水线。PICO Express借助流式传输数据支持多个环路,并创建一个速率匹配的 RTL 块。     PICO 按照设计师规定的 C 算法以及关于面积性能和周期时间的约束条件来行动,然后创建一组具有不同的并行度的替代实现方法,以便进行性能和成本之间的折衷。该工具确定并只保留最优的 Pareto 实现方法。在探索结束时,设计师能检查代表每个性能点的最佳面积实现方法的替代实现法。     Poseidon Design Systems 公司最近宣布推出Triton Tuner 工具和 Builder 工具,这两种工具可根据ANSI C 自动生成 RTL。该公司提供用于嵌入式系统设计的电子系统级工具,其中包括硬件/软件分析、协同仿真,以及用于设计单片系统(SoC)和 FPGA 系统的硬件综合。Triton Tuner 协同仿真工具使用一个基于系统元件的事务级模型的 SystemC 仿真环境,来收集性能测量数据。它还在指令级、函数级和内部环路级描述软件的概况。该工具建立整个系统存储器分级结构的模型(其中包括包括高速缓存、写缓存、RAM 和闪存),使设计师能够配置存储器子系统,从而提高性能。          在设计师把系统在硬件和软件之间分区后,Triton Builder 工具生成驱动程序、加速器 RTL、系统引导支持和测试条件。它还能自动修改源代码,以便使用加速器块。当 Triton Builder 工具修改源代码时,它把驱动程序加到受影响的代码块,为的是配置加速块,与它通信,并调用它。为了支持被加速的逻辑块,加速器块体系结构可以包括本地存储器和专用数据传输逻辑、一个可自适应的总线接口、一个可编程高速控制器、一个单步控制器、一个用于查看和搜寻存储器的系统引导。     不同途径     Tensilica 公司提供使用可配置、可扩展、可综合的 Xtensa V 和 Xtensa LX 处理器芯核的许可证,不过该公司的 Xpres 编译器采取不同方法把 ANSI C 转换成硬件:它自动配置一个 Xtensa LX 微处理器芯核来更迅速地执行 C 代码。Xpres 编译器与 Xtensa C/C++ 编译器共同分析对于软件性能至关重要的区域,然后利用多种加速技术来探索数百万种可能的处理器配置     。这些配置代表各种兼顾应用性能和面积的定制Xtensa LX 处理器。这些配置是由设计师输入到 Xtensa LX Processor Generator中的TIE(Tensilica 指令扩展)代码组成的。     CoWare 公司的 LisaTek 工具组自动用某种体系结构规范语言生成 RTL。C/C++-basedLisa 2.0 规定指令集体系结构。LisaTek 工具能为VLIW、RISC、DSP、SIMD 等体系结构自动生成RTL,还能创建设计师为定制处理引擎编程所需的定制软件开发工具。LisaTek 概况描述工具使设计师能优化指令集、处理器微体系结构和包括高速缓存在内的存储器系统。     Stretch 公司则不同于上述各公司,因为既提供软件开发工具又提供硅靶。Stretch S5000 处理器集成有一个 Tensilica Xtensa 处理器芯核和一个片上 ISEF(指令集扩展结构)。Stretch公司 的软件可配置 ISEF 数据路径基于设计师用来扩展处理器指令集的专有可编程逻辑。Stretch 公司集成开发环境支持 C/C++ 功能开发、性能概况描述与调整、系统验证和在线调试。集成的 Stretch C 编译器既能编译扩展指令,又能编译应用程序代码。     设计师只要在代码中增加 Stretch C 扩展功能和编译器固有的功能,就可定义新的指令。Stretch C 扩展包括新的数据类型和显式数据移动和数据操纵指令,以便使 S5000 的宽寄存器适应 ISEF。有几项限制是编译器加速软件块所必需的。例如,扩展指令不能使用浮点数据类型,编译器必须能够展开所有环路,编译器不支持被加速的除法运算符和模数运算符,除非两个操作数在编译时是已知的。     ISEF 工作频率为100MHz,处理器芯核工作频率为300MHz。这两个性能值不仅能降低总功耗,而且允许把软件时间读写到 ISEF 的宽寄存器文件,而不会停止 ISEF 的运行。ISEF 包括计算(算术单元和乘法器单元)、路由、流水线和状态寄存器资源,并能支持动态的、但不是“周期到周期”的重新配置。设计师能看到总的资源使用情况在多次配置修改之间如何发生变化,从而鼓励他们把重点放在更高级别的行为模型和 C 代码上,而不是放在加速实现方法上,因为加速实现方法作为软件加速的较高级别抽象,会降低ISEF 工具的工作效率。     EDA 工具公司 CriticalBlue从软件实现的另一方面,以独特方式实现软件转换到硬件过程的自动化。该公司的 Cascade 工具直接从编译的目标代码提取并行性,并把它转换到一个定制的微处理器。这种方法与编程语言无关,因为软件代码已经处于目标处理器级。它不需要新的语言专业知识、新的软件开发工具和软件代码的人工优化,并支持设计师现有的验证工具和调试工具。     这种方法并不提供先进性能,而是给专用协处理器中的处理卸载或使之加速,从而使由于成本、功耗或调度三方面的约束条件而无法升级主处理器或增加一个完整指令集处理器的设计提高性能。这种工具根据可执行的软件代码自动生成协处理器 RTL、微代码和测试台,然后自动修改可执行代码,以便与协处理器一起工作。Cascade 允许设计师通过人工干预来优化代码和协处理器,并部署定制的硬件单元。     2003年里,很多公司业已把依据软件自动生成 RTL 是一种可行的增值能力这种信念变成有用的新工具和新产品。事实上,这些工具实现其自动化技术的方式多种多样,从使用 Matlab 模型到 C 及其派生语言,如 ANSI C、C++、SystemC、Handel-C和专有的 C 扩展,再到目标代码,不一而足。他们还把自动加速的目标瞄准各种实现方法,其中包括 FPGA 工具和 ASIC 工具流程、处理器阵列、定制处理器和专有的指令加速结构。     目前是否有其它方法在悄悄开发并将在近期宣布,这是无法确定的。但可能会有更多的开发活动,并将这几类工具最终整合在一起。如同软件编译器的演进一样,还有改进的余地,其中包括支持高级别探索的优良资源估算。虽然这几类工具将可能成为许多设计工具流程中的主要部分,但它们也许永远取代不了最先进的计算密集型功能的人工设计。毕竟,软件编译器也取消不了对最先进功能的人工编码之需求。           |