电子系统级设计所面临的挑战
一般而言,电子系统级设计(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 作者:
关于 通信网络 的相关解决方案
- 2008-08-06IPv4网络和IPv6网络互连技术
- 2008-08-05针对功率设计的SDR解决方案
- 2008-08-01多个Zigbee监测网络远程监控的实现
- 2008-07-28基于S12的无线传感器网络样机系统设计
- 2008-07-28移动WiMAX站点规划
通信网络 相关产品动态
- 2008-01-17艾讯中小型企业SMB量身订做一系列高性能网络安全应用平台
- 2007-02-09RMI公司推出了从中端级到入门级的XLS处理器系列
- 2006-12-08泰克推出整套针对IMS的性能测试和网络监测方案

