硅技术的进步不可避免地导致微处理器子系统与定制的软硬件被完整集成到单个器件上。随之而来的是一系列机遇和问题,包括设计方法学的变革。
典型的嵌入式平台由一个或多个处理器和总线结构及支持部件组成。这并非新的理念,许多公司几年前就开始在PCB上复用处理器子系统。不过,在单个集成电路上创建专用标准产品(ASSP)的应用相对而言还比较新颖,这种ASSP可以在多种产品中复用,以减少相关成本和风险。这个趋势将持续下去,甚至连分析家都预测ASSP的使用会不断增多。
嵌入式平台给已经非常复杂的IC设计方法学带来新的约束条件。多家公司正在设法有效地改进嵌入式平台设计流程,并发展了许多方法,包括利用C模型实现不同目的、抽象化器件通信、通过仿真进行工作速度测试及采用预验证的IP。
业内各种组织正在试图通过标准与合作来促进各种方法学的统一。一种涉及使用C、C++和SystemC模型的方法学正在逐步形成,在该方法学下,公共的系统模块可以被软件、硬件和验证领域所使用。随着事务级建模和其它新技术的采用,这种方法学会不断扩展。
嵌入式处理器方法学
许多方法学问题与以下这个事实有关,即硬件和互连软件必须在芯片制造之前就能正常工作,所以只有很少的机会可以纠正它们的错误,这是与基于印刷电路板(PCB)的嵌入式平台的主要区别。因此,有效的验证和调试变得更加重要。
这种本质的区别导致许多要求,其中重要的一项是早期软件测试。在传统方法学中,软件和硬件是分开设计的,直到设计过程的后期才开始在新硬件上第一次运行软件,这个过程通常会用到模拟器。虽然这种方法学仍适于应用软件,但直接与硬件打交道的底层代码必须尽早通过验证。在这一层发生的软件错误将迫使设计师改变硬件,从而导致代价高昂的制造反复。
许多系统公司一直在寻求有效集成的软硬件开发流程。这样的机制可以减少后期的设计错误,同时提高整体效率。
最近,业界开发出一种使用C、C++和SystemC模型验证高级系统规范的方法学。这些模型是抽象的,主要用于事务处理和执行算法转换。它们还允许为特定的设计流程阶段添加详细的循环级功能。当系统模型完成后,其组件被提供给各个不同的专业开发团队。
图1: C、C++和最新的SystemC模型可用于验证高级系统规范。
软件工程师能够使用更抽象的处理器指令集仿真器(ISS)模型、总线事务和寄存器操作等手段来检查代码。用C派生语言编写的模型可以直接链接到软件,从而使测试过程流线化。
这些模型还可以提供给硬件工程师充当操作规范,用于与他们的RTL代码作比较。这要求更详细的抽象。该设计流程的倡导者正在研究关键节点和其它比较点可以在这方面发挥哪些帮助作用。
验证小组采用这些模型复制平台环境以实现快速测试。平台的大部分可以使用基于C语言的模型来描述,允许基础软件与定制的HDL代码互连。使用SystemC SCV标准或自动验证语言创建的自动测试程序可以复制外部输入。声明允许验证规范的细节。
这种方法学可以实现并行的软硬件开发和验证环境,甚至能够在系统组件的开发过程中对它们进行集成测试。
这种方法学的主要问题在于各种模型要求不同的抽象级。由于同一个基础模型不能方便地既用于硬件又用于软件,因此必须找到一种方法学弥补这种不足。使用事务作为内部模块通信的一种直观抽象是解决方案的一部分。通过允许软件模型、硬件模型(通过总线功能模型)和验证测试在事务级进行通信,可以激活不同模型之间的共通点。这样,事务处理就成为应用这种方法学的基础。
链接单元
在检查这种方法学时必须记住软件、硬件和验证是有很大区别的,你必须认真考虑这些区别。
硬件设计与时间和空间相关,其中事件的因果关系是关键。硬件调试需要考虑这些因素,同时为理解各种不同的抽象设计提供基础。硬件验证一般使用仿真器进行,随后处理结果。硬件调试也可能包括设计实现和物理分析。
软件调试的交互性更强,其中一部分调试在代码创建阶段就开始执行了。软件经编译后在没有仿真器的条件下运行。除了多线程且有顺序的事件外,软件调试并不注重基于时序的事件。更复杂的数据结构,如处理器堆栈,还需要特殊检查。
软硬件联合调试必须清楚提供两者所需的功能,如波形和堆栈跟踪。联合调试必须简化后处理交互式使用模型。该模型必须被链接在软硬件之间,以便整个调试系统协同工作,将全部组件视为一个工作单元。
对于许多硬件设计师和驱动程序开发人员来说,软件和硬件之间的界限是非常模糊的。因此要求调试器或开发系统能够实现软硬件之间完整、透明的交互,通过一个易于使用的接口为软硬件提供恰当的工作模式,并提供有效的分析功能。
硬件和软件
现代嵌入式平台调试器的关键要求是:硬件调试功能,包括事件和结构评估;交互软件开发环境;涵盖各种抽象级的HDL、C和HVL语言;抽象事务的可视化以及集成的调试使用模型。
有两种可行的方法学能满足这些要求。首先,硬件功能可以嵌入到软件开发环境中,反之亦然。虽然这看起来是个合理的选择,但由于使用模型的本质区别,调试器可能在某些领域不完善。
另一种方法是,通过适当增强事务和语言支持,高效的硬件和软件调试器可以用同步机制智能地集成在一起。对于基于SystemC的方法学,这是推荐的调试/开发解决方案。
软件和硬件调试器之间的松散耦合可以达到一种合理的交互程度,即双方都具有时序同步、存储器和寄存器查看功能,同时仍能保留各自已有的灵活性和使用模型。
此外,硬件和软件调试器都支持SystemC,因为硬件模块和验证都多次使用SystemC代码。
支持事务处理是该环境的关键性能,在波形显示和更先进的电子数据表显示中都提供了这种支持。借助此功能可以监视软件执行,同时检查总线事务是否能完成所期望的功能,从而确保两个域之间的一致性。
尽管有其专用性,但这种环境能够满足嵌入式平台设计工程师的需要,同时保持使用模型的简单性。
作者:Yu-Chin Hsu
研发副总裁
Dave Kelf
行销副总裁
Novas软件公司







京公网安备 11011202001138号
