您的位置: 嵌入式在线 > 解决方案 > 通信与网络 > 电子系统级设计所面临的挑战

电子系统级设计所面临的挑战

2007-11-22      嵌入式在线      收藏 | 打印

        一般而言,电子系统级设计(ESL)模型可分为 Programmer View (PV)、Programmer View with Timing (PVT)、Cycle Accurate (CA) 等不同层级,除CA层级的设计验证可以沿用传统RTL除错(debug)概念。

        如在多设计语言(mixed-language)设计中作讯号追踪,以及常以批次模式(batch mode)进行验证与除错之外层级越高的模型,通常更着重在功能(functionality) 和信息交换(communication)的验证,一些不必要的细节通常会被忽略。

       因此,除错的方式也应有所不同,基本上,讯号在ESL模型中是属于较低阶的信息交换表现方式,在PVT或PV层级中,表现信息交换的方式通常为transaction和event。

       在现今的平台式(Platform-based)数字IC设计中,多个处理器的设计已是常态,不同模块(module)之间通常会用程序(process)来做同步(synchronization) 的控制。当程序间的同步出现问题时,有可能是某个程序未通知其它的程序,或某个程序没有接收到通知,亦或是接收到的通知并不是预期中的程序所产生,譬如:当2个process存取同一块VGA的frame buffer时,write frame buffer的process,必须等到前一个display到屏幕的read process读完才能写,不然就会出现屏幕花掉的情形。这时就需要进行程序间的同步问题的追踪与除错,常遇到的问题包括:

       1.如何写出(dump)程序的执行状态。

       2.当某个程序出现错误或该出现而没出现的时候,这个程序和事件,模块之间的关系为何。

       在delta-cycle中,可能出现多个程序对同一资源写入的状况的数据有误时(这个资源可能是系统内存、全域变量、档案等),就需要探讨到底造成问题的最后一个程序到底是哪一个,而这个程序又是预期中的或是不是预期中的,这个程序和其它程序或事件的关系,可说是相当的复杂在delta-cycle出现多个程序对同一资源写入的状况时,对于仿真器来说,其值不应因为执行的顺序不同而有所不同,若真的发生因为顺序不同而造成结果的不同时,对于程序设计师来说,是一件非常头痛的事情,因为他们并无法真正了解仿真器在这delta-cycle中发生什么事,甚至不知道这种违背规则的错误发生,若无仿真器的检查和告知,这种除错势必很难发现和解决。

       除出错外,如何更有效率来做验证以节省时间对系统验证亦是非常重要的,因为,系统上的验证更是复杂许多,像是需要不同的应用程序对不同的主要的IP进行随机测试(random test),常发生的状况是在OS开机成功之后,先后挂上视讯和音讯的标准检查程序(benchmark)来做随机测试(random test),而每次都需要从头开始跑是非常耗时的。(如图一不同阶层在linux上所需的开机时间)因此,若能将开机成功的状态储存起来,在挂上不同的标准检查程序,势必可以节省好几个小时甚至数十小时的时间。

       图一:Oleg Petlin,Wilson Snyder Functional Verification of the SiCortex Multiprocessor System-on-a-Chip,in the 44th DAC,June 2007 ps.Beh means Behavior。

       另外,对一整个包含各个层级的设计验证来说,一旦验证结果发现有bug存在时,也必须从头开始进行模拟,以复制错误产生状况以进行除错,其时间花耗可能要数小时到数十小时不等,这也是令人头痛的问题。

       在系统级的设计验证上,常有许多用Verilog VHDL所写的旧IP,而新的IP则往往可能会用SystemC来撰写以达到快速验证的目的,但是这些旧IP和新的IP一起用现有市面上的多语言混合仿真器进行仿真的结果,往往比纯粹用SystemC的时间的时间慢许多,因为这瓶颈在于两个不同仿真器需有一定的互动沟通,比起把这些事件,放在单一个仿真器来仿真,自然慢的许多,由图的比较中可以发现,以同一设计运用不同模拟环境进行的结果来看,纯SystemC的速度要比 SystemC + Verilog的速度快3倍以上。

       如图二所示:

       图二:The Study on the Behavioral Model of IEEE 802.3 MAC Using SystemC Language。

       当系统层级越往上提升时,仿真速度就可以更加快速,如图三所示,其中的Architecture View(AV)指的是比CA高一点层级的cycle-approximate),Architecture View (AV) 层级的会比RTL快18倍,而PV层级的会比RTL快500多倍。

       图三:Realtek,Microprocessor Modeling and Simulation with SystemC in VLSI-DAT,2007。

       由以上列出的问题我们可以了解在 ESL所遇到的硬件除错问题,包含了:

       (1)追踪硬件各个不同层级的信息交换

     (2)程序错误所造成的问题:资源竞争(resource racing),讯息竞争(message racing),死结(deadlock),活结(livelock)

       (3)模拟时间或重复复制错误的时间过长

       (4)除了硬件相关的问题外,软件和硬件的除错更是复杂

       (5)当有错误发生时,如何停在(break)在软件的某一点,追踪软件和硬件信息交换之间的关系

       (6)当停在软件的某一点,如何让其它处理器要继续跑亦或是停下来

       (7)如何分析硬件资源应用是否最佳化;经由软件工程师或编译器产生的threads,是否有将硬件资源充分应用

        (8)根据不同的应用,如何在价格、速度、省电上很快的抉择出软硬件系统的架构上。因此,在ESL,好的除错软件和分析软件更扮演着举足轻重的脚色。(本文由思源科技市场营销部负责ESL侦错产品规划/赖依秀提供)

 

本文来源:DIGITIMES    作者:

隐藏原文↑


查看原文↓

验证码:  看不清?换一张

 

快乐大本营
工程师之星
高福东
擅长嵌入式开发及单片机应用开发
  • 王波涛  熟悉单片机及其接口技术
  • 朱伟平  熟悉51单片机系统LCD驱动程序编写及调试。
热门招聘
论坛热贴