(微电子学与固体电子学专业论文)基于iss的软硬件协同验证技术研究.pdf_第1页
(微电子学与固体电子学专业论文)基于iss的软硬件协同验证技术研究.pdf_第2页
(微电子学与固体电子学专业论文)基于iss的软硬件协同验证技术研究.pdf_第3页
(微电子学与固体电子学专业论文)基于iss的软硬件协同验证技术研究.pdf_第4页
(微电子学与固体电子学专业论文)基于iss的软硬件协同验证技术研究.pdf_第5页
已阅读5页,还剩54页未读 继续免费阅读

(微电子学与固体电子学专业论文)基于iss的软硬件协同验证技术研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 随着系统芯片设计规模越来越大,功能越来越复杂,其中不仅包含大量的硬件电路设计,而且 包含了相当部分的软件设计,因此,系统芯片s o c 的验证不仅仅是硬件的验证,还包括软件的验证, 也就是说要进行软硬件协同验证。软硬件协同验证的主要目的是验证系统级芯片软硬件接口的功能、 时序以及软硬件设计的正确性,并且可以在流片之前开发应用软件,从而使软件开发和硬件设计可 以并发进行,大大缩短整个项目的开发周期。 本文首先对各种软硬件协同验证方法进行分析比较,选取基于i s s ( 指令集仿真器) 和虚拟原 型的协同验证方法对g a r f i e l d 芯片的软硬件进行协同验证。接着根据g a r f i e l d 系列芯片的特点,确 定协同验证环境的框架及各个组成部分。由于a r m 公司的a r m u l a t o r 在仿真速度上的巨大优势, 选择其作为本文的指令集模拟器,并在其基础上扩展a r m 指令级模拟器的a h b 接口。然后,使用 c c + + 语言设计总线功能模型,实现外围硬件与软件之间的信息交互,并运用同步优化算法加快仿 真速度;为了便于软硬件的调试和观测,在模型中添加了波形生成功能和监视器检查器。 最后,使用转换工具v c r i l a t o r 将需要验证的硬件设计转换成s y s t e m c 代码,在协同验证环境中 进行多媒体音频播放、d m a c 数据传输等软件程序的仿真。从仿真结果分析可以看出,用此方法进 行协同验证,仿真速度快,软硬件的可调试性、可观测性高,可以提供大量数据和仿真波形,用于 系统的开发、调试和验证。 关键词 软硬件协同验证指令集仿真器总线功能模型虚拟原型同步优化 a b s t r a c t n o w ,t h ed e s i g ns c a l eo f s o ci ss oh u g ee n dt h ef u n c t i o no f s o c i sm o r ea n dm o r ec o m p l i c a t e d ,i t n o to n l yi n c l u d e sal a r g en u m b e ro f h a r d w a r ed e s i g nb u ta l s oi n c l u d e sq u i t eaf e wo f s o f t w a r ed e s i g n s o t h ev e r i f i c a t i o no f s o ci sn o to n l yt h ev e r i f i c a t i o no f h a r d w a r e ,b u ta l s ot h ev e r i f i c a t i o no f s o f t w a r e ,t h a ti s t os a yt h a ti tn e e dt od ot h es o f t w a r ee n dh a r d w a r ec o - v e r i f i c a t i o n t h em a i np u r p o s eo f t h ec o - v e r i f i c a t i o n i st ov e r i f yt h ei n t e r f a c ee n dt h et i m i n go f t h es o f i w a r ea n dh a r d w a r e ,t h ee x a c m e s so f t h ed e s i g no fs o c , a n dt od e v e l o pt h ea p p l i c a t i o ns o f t w a r eb e f o r et h ec h i pc o m i n gb a c k i tc a nm a k et h ed e v e l o p m e n to ft h e s o r w a r ea n dt h ed e s i g no f h a r d w a r eb ep r o c e s s e ds i m u l t a n e o u s l y ,c a ns h o r tt h ed e v e l o p m e n tp e r i o do f t h e w h o l ep r o j e c tg r e a t l y f i r s t l y ,v a r i o u sk i n d so f s o f t w a r ea n dh a r d w a r ec o - v e r i f i c a t i o nm e t h o d sa r ep r o v i d e d ,a n dt h em e t h o d o ft h es o f t w a r ea n dh a r d w a r ec o - v e r i f i c a t i o nb a s e do ni s se n dv i r t u a lp r o t o t y p e si ss e l e c t e dt ov e r i f yt h e s o f t w a r ea n dh a r d w a r eo ft h eg a r f i e l d s e c o n d l y ,t h ef r a m ea n de a c hc o m p o n e n to ft h ev e r i f i c a t i o n e n v i r o n m e n ta r ec o n f i r m e d b e c a u s et h es i m u l a t i o ns p e e do f t h ea r m u l a t o ri sh i g h ,s oa r m u l a t o ri su s e d a st h ei s so f t h i se n v i r o n m e n t ,e n dt h ea h bi n t e r f a c ei sd e s i g n e do ni t t h i r d l y ,c c + + l a n g u a g e sa r eu s e d t od e s i g nt h eb u sf u n c t i o nm o d e l ,a n ds y n c h r o n i z a t i o na l g o r i t h mi su s e dt oa c c e l e r a t et h es i m u l a t i o ns p e e d , e n dt h ew a v e f o r mg e n e r a t o r , m o n i t o ra n dd e t e c t o ra r ea d d e di n t ot h eb u sm o d e lf o rd e b u g g i n ga n d o b s e r v i n gt h es o f t w a r ee n dh a r d w a r ee a s i l y f i n a l l y , v e r i l a t o ri su s e dt oc h a n g et h eh a r d w a r ed e s i g ni n t os y s t e m cc o d e e n dt h em u l t i - m e d i a m u s i cp l a yp r o g r a me n dd m a cd a t at r a n s f e rp r o g r a ma r es i m u l a t e di nt h i se n v i r o n m e n t a c c o r d i n gt o t h e s i m u l a t i o nr e s u l tu s i n gt h i sm e t h o d ,t h es p e e do f s i m u l a t i o ni sh i g h ,a n dt h ed e b u g g i n ga n dt h eo b s e r v a t i o n o ft h es o f t w a r ea n dh a r d w a r ea r ee a s i e r m o r e o v e r ,am a s so fd a t ae n dw a v e sa r eg e n e r a t e dt od ot h e d e v e l o p m e n t ,d e b u g g i n ga n dv e r i f i c a t i o no f t h es y s t e m k e yw o r d : s o f t w a r ea n dh a r d w a r ec o - v e r i f i c a t i o n ,i s s ,b f m ,v i r t u a lp r o t o t y p e s ,s y n c h r o n i z a t i o no p t i m i z a t i o n l i 学位论文独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发 表或撰写过的研究成果,也不包含为获得东南大学或其他教育机构的学位或证书而使用 过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明 并表示了谢意。 关于学位论文使用授权的说明 幽2 :习 东南大学、中国科学技术信息研究所、国家图书馆有权保留本人所送交的学位论文 的复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本人电子文档的 内容和纸质论文的内容相一致。除在保密期内的保密论文外,允许论文被查询和借阅, 可以公布( 包括刊登) 论文的全部或部分内容。论文的公布( 包括刊登) 授权东南大学 研究生院办理。 第一章绪论 1 1 课题背景及研究意义 第一章绪论 随着集成电路制造技术的飞速发展,半导体加工工艺进入深亚微米时代,芯片的特征尺寸越来 越小,单位芯片上晶体管的数目越来越多,同时芯片的规模也越来越大,已经可以在单个芯片上集 成上千万甚至成亿个晶体管。集成电路规模的变大,使得s o c ( 系统芯片) 的发展与应用成为了可能。 s o c 将电子系统几乎全部的功能集成到一块芯片上,从而在单个芯片上能实现数据的采集、转 换、存储、处理和i o 等多种功能。换一个角度来说,s o c 能集成数字电路、模拟电路、硬件专用 电路、存储器、微处理器、数字信号处理器d s p 等多种异构模块,实现多个复杂的应用功能。s o c 具有速度快、集成度高、功耗低等优点;此外,由于s o c 集成了多种功能,使整机成本和体积都大 大降低,加快了整机更新换代的速度,顺应了现代通信、电脑、消费电子产品向高性能、低功耗和 低成本方向发展的趋势。 一般而言,s o c 系统都具备强大的数据处理和存储能力,能适应于一类典型应用的功能和性能 要求;同时,它还应当具有灵活的软硬件可编程能力。软件的可编程性体现在基于同一种类型的体 系架构下,充分发挥软件本身的适应性和可重用性,减小更改硬件所带来的开销,提高设计速度。 硬件的可编程性在于通过对应用的特殊功能定制满足性能要求的专用加速器,充分利用硬件本身的 便携性和可扩展性,减小研发软件而带来的额外费用,缩短设计周期。因此,s o c 的设计应该是一 个软件、硬件协同设计的过程,这也是s o c 系统一个非常重要的标志。然而,传统的集成电路设计 方法一般都是将系统分为两个阶段:系统级软件开发部分和电路级硬件设计部分,软件开发和硬件 设计往往是相对独立进行的,如图l ,l 所示。在系统级,软件开发人员使用诸如c ,c + + 等高级编程 语言进行系统描述和算法仿真,并分析系统在软件层面的各项指标,撰写系统设计书,然后移交给 硬件设计工程师。在电路级,硬件设计师首先要花大量的时间理解系统设计书,之后才能利用v h d l 或v e i l l o g 硬件描述语言进行电路设计。在此手工转换的过程之中,可能还会引入人为的错误因素。 另外,为了验证软件开发的正确性,必须等到硬件全部完成之后才能开始进行软件测试和系统集成, 大大延长了设计的进程。 软硬件协同验证的概念已经提出多年,但是直到这些年随着s o c 技术的发展,软硬件协同验证 技术才得到更多的关注和重视,并得到发展。软硬件协同验证是一种在硬件流片封装之前,验证s o c 系统硬件和软件是否能够正确工作的技术1 2 】。通过采用协同验证技术,可在设计早期开始这一设计 调试过程。由于软件的开发通常在系统开发的后段完成,在设计周期中较早的开始调试有可能将使 这一项目提早完成,软硬件协同验证技术可以降低首次将硬件和软件连接在一起时出现意外,而致 使项目延期完成所造成的风险。由于这种协同验证是在硬件尚未流片时进行的,因此,如果发现硬 件有问题,可通过改变硬件设计加以解决,而不是在软件中解决有关硬件的问题,提高一次流片成 功的可能性。对比图1 - 1 和图l - 2 可以看出,采用软硬件协同验证,可以较早的进行软硬件的整合, 缩短上市时间。 东南大学硕士论文 1 2 论文的主要工作 图1 2 使用软硬件协同验证的项目规划 本文以东南大学国家专用集成电路系统工程技术研究中心( a s i c 工程中心) 自主研发的一款 s o c 芯片- - g a r f i e l d 为研究对象,对g a r f i e l d 芯片设计过程中软硬件协同验证的技术做深入的研究, 本论文的主要工作是以i s s 为基础对g a r f i e l d 芯片的软硬件进行协同验证,分为以下几个部分: 1 )建模工具的选择:比较当前流行的几种建模工具的优缺点,因为仿真效率上的优势,最终 选择a r m 公司的a r m u l a t o r 作为建模工具;并在其基础上建立a r m 指令级模拟器的a h b 总线功能模型。 2 1利用虚拟原型的软硬件协同验证方法设计s o c 系统模型:g a r f i e l d 系列芯片的软硬件协同 仿真中,a r m 核的设计仿真模型( d e s i g ns i m u l a t i o nm o d e l ) 占用了百分之三十到四十的 c p u 时间,我们可以使用a r m 核的指令级模拟器代替原有的d s m 模型,进行软件的编 译和调试;而硬件设计部分,使用s y s t e m c 的周期级模型的仿真来代替r t l 代码仿真,并 在模型中添加波形生成,总线信号监测及检查等功能。采用虚拟原型的软硬件协同验证的 方法,可极大地提高软硬件协同仿真的速度,同时也解决传统协同验证环境中硬件可调试 性、可观测性差的问题。 3 1a m b a 总线的高层功能模型设计与优化:采用虚拟原型的软硬件协同验证的方法,需要指 令级模拟器的总线功能模型,实现指令级到周期级的转换,把指令级模拟器给出的读写和 中断处理等信息转换成总线信号,与硬件部分相连接。 4 1 程序仿真:利用此软硬件协同验证方法,仿真多媒体音频播放、l c d 图像显示、d m a c 传输等软件程序,对硬件设计进行验证,得出仿真结果并作分析。 2 第一章绪论 1 3 论文的结构 本文分为五章:第一章为绪论;第二章为软硬件协同验证的介绍以及在本文的应用,主要介绍 了软硬件协同验证的定义以及一般方法,通过比较分析,选取基于i s s 和虚拟原型的方法进行软硬 件协同验证;第三章为基于i s s 的软硬件协同验证环境设计,主要介绍了a r m 指令级模拟器、总 线功能模型、硬件虚拟模型的设计:第四章在软硬件协同验证环境中,仿真多媒体音频播放、d m a c 数据传输等软件程序,对硬件设计进行验证,得出仿真数据并作分析;第五章为总结展望。 3 第二章软硬件协同验证 第二章软硬件协同验证 集成电路芯片工艺的发展己使得一个系统或一个子系统可以集成到一块芯片上,称为系统集成 芯片。随着芯片规模的日益增大,设计的复杂性和验证难度也日渐增加,s o c 设计的周期拉长,风 险也相应变大。s o c 不仅在规模上与传统的芯片有着很大的差别,而且在设计方法上也有着本质的 区别,在s o c 设计中,不仅包含大量的硬件电路设计,而且包含了相当部分的软件设计,也就是说, 在s o c 设计时要同时考虑硬件和软件的设计。同样,系统芯片s o c 在验证时不仅仅是硬件的验证, 还包括软件的验证,也就是说要进行软硬件协同验证。本章从传统的验证方法谈起,深入研究了当 前s o c 设计过程中广泛采用的软硬件协同验证方法。 2 1 验证概述 在集成电路的设计过程中,验证是最为关键的一个环节,它贯穿了整个i c 设计流程。全面而准 确的验证可以尽早地发现设计中可能存在的错误,从而缩短设计周期,减轻i c 设计的巨大风险,以 便产品尽快上市。 2 1 1 传统的验证技术 传统的验证技术主要有动态验证技术和静态验证技术,而静态验证技术又分为功能验证和时序 验证【3 】。在一个较大的设计中,一般要同时使用动态和静态验证技术,以尽可能保证设计的可靠性。 动态验证技术 动态验证过程主要采用逻辑仿真的办法。逻辑仿真主要采用电路的布尔逻辑进行建模,而不关 心电路的中间状态,这一简化大大降低了验证过程中所需的计算代价,使得验证速度得以大大提高。 因此逻辑仿真一般在寄存器传输级( r t l ) 进行,主要考察系统的功能完备性,而时序方面的工作则交 给给专r 1 的时序仿真程序完成。 当前,实现逻辑仿真主要有两种方式:事件驱动仿真( e v e n t d r i v es i m u l a t i o n ) 和周期驱动仿真 ( c y c l e - d r i v e ns i m u l a t i o n ) 。事件驱动仿真仅在电路某些节点的逻辑电平发生改变的情况下才对电路 中相应节点的逻辑值进行重新计算。也就是说只有当电路中某个事件发生以后,才对该事件产生的 影响进行重新计算,从而得到新的电路状态。而周期驱动仿真则只在有效的时钟边沿检测到输入信 号发生变化时才重新计算相关的输出结果。这样可以极大的加快仿真的处理速度,但周期驱动仿真 的应用局限于同步设计。目前,有些仿真器吸收了这两种技术的优点,在仿真开始时,对于同步设 计,采用周期驱动仿真,而在随后的验证中再采用事件驱动仿真,对电路进行全面的验证。 静态验证技术 由于动态验证需要驱动向量,随着集成电路规模的增大,生成完备的测试向量已经不太可能, 因此在动态验证的基础上,再借助静态验证技术以达到更全面、准确的验证。静态验证主要位于门 级,包括形式验证和静态时序分析。形式验证采用形式化技术来验证两个设计在功能上的等效性, 4 东南大学硕士论文 它可以用来验证电路不同层次之问功能的等效性,也可以验证同一层次不同设计之间功能的等效性。 当其中某一描述作一些微小变化后,就可以在修改前和修改后两个描述之间进行功能等效验证。 静态验证的另一个技术是静态时序分析。静态时序分析是分析、诊断和确认一个设计的时序特 性的彻底方法。它将电路分解成一组组路径,然后分剐计算电路中每条路径的延时,并对着时序约 束检查任何可能的时序违反情况。静态时序分析检查的重点是时序单元的建立和保持时间。静态时 序分析适用于同步电路,不需要输入向量,因此比传统的仿真技术要快好几个数量级,适用于较大 的设计,它可以识别出设计中所有的关键路径( c r i t i c a lp a t h ) 。 2 1 2s o c 系统的软硬件协同验证 s o c 的出现提高了对系统验证的要求。一方面,s o c 的高集成特性、高性能要求和其高额的设 计流片费用,要求设计者在布局、布线及流片前,必须保证系统功能正确无误。因此在设计实现之 前,设计者必须对系统功能进行验证,与普通芯片设计中的数字系统验证不同,用人工对芯片的硬 件设计加测试激励向量的传统a s i c 功能验证方法显然不能满足对s o c 系统的验证效率和验证覆盖 率的要求。另一方面,在系统级芯片上,软件和硬件是紧密结合在一起的。软件和硬件任何一部分 设计有缺陷,或者两者协调有问题,都将导致整个芯片设计的失败。而传统的嵌入式系统开发流程 中先等硬件制造完成后进行软件设计和测试的串行开发方式也将大大增加s o c 设计失败的风险并 在很大程度上延缓了产品的上市周期。因此,s o c 设计中必须采用软硬件协同验证技术对包括软硬 件在内的整个系统功能进行验证。 软硬件协同验证的主要目的是验证系统级芯片软硬件接口的功能和时序,验证系统级芯片软硬 件设计的正确性,以及在芯片流片回来前开发应用软件嗍。软硬件协同验证可以使软件工程师尽早 的接触到硬件设计,从而使软件的开发测试和硬件设计可以并发进行。与传统的先设计硬件后开发 软件的串行开发模式相比,软硬件协同验证可以大大缩短整个项目的开发周期。同时,软硬件协同 验证提供了在真实系统中出现的激励信号,和人工加入的测试信号相比,具有更高的真实性,从而 可以极大的改善硬件验证的准确性。软硬件协同验证可以完整的模拟最终产品的工作环境,具有从 硬件信号观测到源代码调试的全面的软硬件系统验证能力。 2 2 软硬件协同验证环境 在系统芯片系统设计周期中,将建立设计对象的抽象模型并对其进行仿真。然后将此抽象功能 映别到系统的细节架构上,并进行架构性能建模。架构映射将设计对象划分成软件部分和硬件部分, 并将规约分发给硬件和软件小组去实现。硬件小组以v e r i l o g 或v h d l 语言实现设计对象的硬件部 分,并使用硬件仿真器进行验证。软件小组以汇编语言、c 语言或a 斗语言编写软件模块的代码, 使用处理器模型或电路形式仿效器来测试软件。传统上,软件小组要等硬件原型出来之后才能做最 后的系统集成i ,j 。 系统集成过程中可能会出现很多问题。这些问题可能源自于对规约的错误理解、不正确的接口 定义以及后期的设计更改等。这些错误可以通过在软件上下功夫来解决,但这可能会影响系统的性 5 第二章软硬件协同验证 能;或者通过修改硬件来消除,但这可能会提高成本和花费时间,尤其是在要重新设计整个电路的 情况下。将系统集成环节提前到设计周期之中将有助于在早期检测出这些集成问题,而这能通过在 设计阶段的早期建立软件硬件协同验证环境来实现嘲。 图2 - 1 是软硬件协同验证环境的简单方框图,其步骤根据所采用的方法有所变化【刀。 环境里含有源代码级调试器,用户用它就能够下载固件和软件并和系统进行连接。调试器有助 于阅读代码、设置断点、处理器复位、停机操作以及控制其执行。依据环境的工作方式,可以将处 理器功能块替换成仿真模型,如指令集仿真器、总线功能模型( b f m ) 、寄存器传输级( r t l ) 代码或焊 点引出式处理器芯核。系统的其他部分( 如外围设备) 可以用c 语言模型、寄存器传输级代码、实际 芯片来表示,或以现场可编程门阵列( f p o a ) 来实现。系统接口提供了处理器和外围设备之间的接口。 图2 - t 软硬件协同验证环境 软硬件协同验证的方法多种多样,根据对软硬件建模的不同可以简单的分成以下三种类型 8 1 : 基于i s s 和虚拟原型的协同验证方法 基于r t l 描述的协同验证方法 基于f p g a 原型系统的协同验证方法 一般来说,验证方法的选择要根据特定的需求来决定;也就是说,不同的性能要求对应不同的 环境架构。s o c 软硬件协同验证方法的性能衡量指标主要有以下一些重要方面【9 】: 1 )精确度。环境中所使用的模型都应当是精确至周期或精确至引脚的,并被映射成系统芯片 的某项功能。 2 )性能。环境应当有足够快的速度,以便运行包括实时操作系统( r t o s ) 和应用程序在内的软 件。 3 ) 用法。软件小组和硬件小组都应当能够使用环境来进行功能验证和性能验证。 4 )已有性。为了满足上市时间目标,并让软硬件协同设计和协同验证成为可能,应当在设计 阶段的早期环境就已经有了。 5 ) 成本。这取决于所考虑的环境的工作方式,如精度,性能、用户数和配置要求。 以下将对上文提及的三类方法进行详细的研究,分析它们各自的优缺点,并选取合适的验证方 法作为本文的基础。 2 2 1 基于i s s 和虚拟原型的协同验证方法 指令集仿真器在不考虑时序的情况下模拟处理器指令的执行。软原型或虚拟原型是待验证设计 6 东南大学硕士论文 对象的软件设计表示形式。它允许对处理器内部寄存器、存储口和外围设备的行为举动进行检查。 如果运行软原型的宿主机速度足够快,它还能够运行实际的应用软件和固件。 图2 - 2 是虚拟原型环境的简单方框图。利用与源代码级调试器相连接的指令集仿真器( i s s ) 来对 处理器建模。外设都采用c c + + s y s t e m c 模型来表示。 图2 - 2 软原型环境 要构建基于虚拟原型的协同验证环境,需要以下的组件口0 】: 1 ) 处理器调试器 让用户能够控制目标系统调试会话状态的软件模块。它是调试内核和用户接口软件相 结合的一个部分。调试内核和用于调试的宿主机、编译器和链接器等工具集成在一起。调 试器可以通过电路形式仿效器( i c e ) 连接到目标硬件系统中的处理器上。同样,硬件可以通 过诸如指令集仿真器o s s ) 之类的软件仿真器来进行仿真。对于系统或仿真器中的处理器, 调试器能够被用来对寄存器或存储口进行读、写、控制、停机或重新启动。 2 ) 指令集仿真器( i s s ) 指令集仿真器在不考虑时序的情况下模拟处理器指令的执行。有些处理器厂商会提供 其处理器产品的指令集仿真器。譬如,a r m 公司提供了a r m u l a t o r ,用来模拟a r m 系列 处理器,它具备和外围设备的c 语言模型相连接的能力,有助于建立虚拟原型。 3 ) 总线功能模型 软硬件之间的交互通过总线功能模块( a f m ) 实现,b f m 模块是软硬件协同仿真中的重 要组成部分。b f m 的功能主要是模拟c p u 核的外部总线时序,实现内存读写、指令读取、 指令执行、中断应答等功能,因此它可以取代c p u 核而成为总线控制器。一般,这里的 b f m 也是由c c + + s y s t e m c 代码实现。 4 )外围设备的c c + + s ”t e m c 语言模型【l l 】 外围设备的寄存器、位定义和中断行为等所有细节部应当包括在其c c + + s y s t e m c 语 言模型中。这有助于在实际硅片上使用这些软件和固件时可不做任何修改或稍傲修改。 如图2 - 3 ,建立虚拟原型的流程如下 1 2 】: 7 第二章软硬件协同验证 最终软件 图2 - 3 建立软原型的流程 1 1 研习指令集仿真器的功能要素。对于设计所选用的处理器,研习其指令集仿真器的功能要 素。 2 1检查接口支持。检查所选用的处理器的指令集仿真器是否能够和所使用的外部虚拟模型相 连接。如果指令集仿真器不支持这种接口,那么就无法建立虚拟原型f ”j 。 3 1 建立虚拟模型。研习外围设备的接口、存储器寻址、寄存器、位定义和中断等行为细节, 并运用c c + + s y s t c m c 语言建立其模型。 4 )编写应用代码。编写打算使用软原型加以验证的应用程序代码。 5 1 编译。对指令集仿真器、外围设备的c 语言模型、应用软件进行编译,生成在宿主机上运 行的可执行程序。宿主机可以是个人计算机口c ) ,也可以是工作站。 6 )运行可执行程序。在调试器中运行编译得到的可执行程序,并开始调试。如果有错误,就 相应地加以修正。错误可能是因为外围设备不正确,或者是应用软件中的错误。 7 ) 对软件进行钡9 试。在协同验证、仿效或快速原型环境中运行软件,测试其性能。在硅片制 作出来之后,软件还可以用于软件和硬件的最终集成。 软原型具有以下局限性【1 4 】: 1 )能力有限。因为能力有限,所以只限于早期测试、接口调试和代码段调试方面。 8 东南大学硕士论文 2 )速度有限。在大多数情况下,仿真的运行速度将成为关键因素,因为仿真器永远无法运行 得和实际的处理器一样快。 3 ) 模型精确度。外围设备模型在功能上正确,但并没有精确至周期,也没有精确至引脚。 4 1同步性。往往很难解决外围设备数据依赖性对同步的要求。 2 2 2 基于r t l 描述的协同验证方法 在基于r t l 描述的协同验证方法中,硬件模块采用寄存器传输级语言建模,并具有统一的总线 接口;软件源代码经过编译、链接后变为目标代码。根据仿真过程中软硬件之间交互方式的不同, 又分为直接协同仿真和异构协同仿真【l ”。 直接协同验证 所谓直接协同仿真就是直接在模拟的硬件上运行软件。直接协同仿真环境的构架如图2 _ 4 所示。 软件源代码经过编译、链接后变为目标代码,这些目标代码可以是二进制格式、s 记录格式或其他 格式的文件,并最终都转化成仿真环境可识别的文件格式,在协同仿真开始后的仿真器初始化时刻, 在目标系统的程序存储器( 如f l a s h ) 的行为模型中将其载入相应的存储单元中。 环境中的处理器核是一种完整的处理器模型( d e t a i l e dp r o c e s s o rm o d e l ) 或者指令集结构模型 ( i n s t r u c t i o n s e t a r c h i t e c t u r em o d e l ) ,同时它包含了外部总线接口,能够以周期精确度( c y c l e a c c u r a t e ) 或指令精确度( i n s t r u c t i o n a c c u r a t e ) 模拟软件代码在处理器核中的执行过程。它从存储器中读出代码, 执行一定的运算,并通过驱动处理器核的总线接口信号把结果写回存储器或寄存器。因此,软件的 执行完全可以用硬件模拟器来仿真。如果仿真过程中截取较多的波形,速度则较慢,一般在实际应 用中采用硬件触发的办法来调试。仿真过程中,如果结果正确,就向某个寄存器写入特定数据,并 通过v e r i l o g 系统函数打印信息,否则写入另外个值,或者写另外一个寄存器,同时打印错误信息, 这样可以不用读取波形即可达到调试的目的。 图2 _ 4 直接协同验证环境 直接协同仿真几乎可以完整的模拟软硬件实际运行的过程,而且通过添加总线监控单元,可以 非常清楚地观测到系统内部的工作状态。因此直接协同仿真对于发现软硬件接口的时序问题、关键 代码调试等具有不可替代的作用。但是随着处理器核复杂度的增加以及设计规模的增大,直接协同 仿真的速度会急剧下降。 9 第二章软硬件协同验证 异构协同仿真 所谓异构协同仿真就是指软件和硬件采用不同的方式模拟,同时通过一个公共的接口模拟软硬 件的通信和交换仿真数据。当前,最常用的公共接口就是v e r i l o g 的编程语言接口p l i 。异构协同仿 真的环境架构如图2 - 5 所示。 软件环境包括图形用户界面( g u d 和软件开发工具( 如编译器、链接器和调试器) 。应用软件和设 备驱动软件将被加载到宿主机系统的存储器之中。协同验证环境不设定任何限制,也不要求使用某 一种特定的软件开发技术。利用协同验证技术开发和测试出来的软件可以不经任何改动就用来测试 最终的原型系统。 硬件环境包括图形用户界而、硬件仿真器和硬件描述诺言设计。软件和硬件通过处理器存储 器模型进行交互。处理器模型由指令集仿真器和总线功能模型0 3 f m ) 组成。指令级模拟器是一种仿 真c p u 行为的程序,它在主机上运行,可以仿真软件程序的可执行镜像。指令级模拟器可以包含处 理器核的内置高速缓冲存储器( c a c h e ) 、流水线结构和写入缓冲器( w r i t eb u f f e r ) 等组件,并且可 以提供软件执行的时钟周期精确模型。因此使用指令级模拟器,可以对软件部分做更真实的仿真, 如可以仿真s o c 系统复位的流程、c a c h e 和m m u ( 存储器管理单元) 的配置过程、异常处理等。 总线功能模型模拟的是仿真环境中处理器的外部行为。软件调用被转换成用来激励硬件仿真器的测 试向量。硬件仿真器将测试向量产生响应并把输出的结果返回给软件环境。可以使用嵌入在硬件仿 真器中的波形查看器观测输出。 图2 5 异构协同验证环境 选择协同验证环境时应当考虑以下因素。 1 )性能:仿真的性能对于设计是非常重要的,因为工具需要处理庞大的软件和硬件数据,而 这又取决于实际的应用。厂商所宣称的性能在2 0 0 5 0 0 1 p s ( 每秒指令数1 之内。 2 ) 处理器模型的已有性:应当支持即将结合到系统芯片设计之中的处理器。目前的协同验证 工具支持很多种流行的嵌入式核处理器,如a r m ,m i p s ,p o w e r p c ,d s p 等。 3 )处理器模型的功能:有些处理器模型个支持特定的核所能够提供的全套功能。例如,流水 线功能特性并非所有的模型都支持。需检查协同验证工具所支持的模型是否支持应用中所 1 0 东南大学硕士论文 需要的处理嚣功能。 4 )处理器模型的精确件利完备性:协同验证的性能取决于所使用的模式,通常有两种精确模 式,功能精确比周期精确性能更高。功能精确,涉及到在硬件模型上运行软件。此时不需 要解决时序问题,只要在源代码级调试和测试软件就足够了。周期精确,对软件进行交叉 编译,生成目标系统上的可执行程序,并在精确至周期的指令集仿真器上运行该软件,而 不是在硬件模型上运行。指令集仿真器可以追踪出对硬件事务进行仿真的时钟周期数日。 对于代码的关键部分,能够验证其时序。 现行的协同验证工具存在以下局限性: 1 功能确切的处理器模型的已有性。有些处理器模型个提供该处理器的全部功能,如处理器 中的流水线功能。 2 )性能。没有足够的性能在目标实时操作系统之上运行整个应用软件,这是处理能力和仿真 速度的限制造成的。这些工具都无法提供足够的性能来运行接口可信度测试、代码片断、 各个驱动程序和实用软件代码。 3 )对软件功能支持。有些工具不支持在应用软件代码中有可能用到的基于数组的函数。 目前,指令级模拟器和h d l 的r t l 描述相结合,在协同验证中获得了广泛的应用,这种结合 采用设计过程中创建的一部分部件,不需要另外创建和维护用于验证的仿真模型。使得硬件及软件 设计工程师可使用与各自设计过程相同的工具,从而可以利用现有的经验来完成协同验证。仿真速 度相对于直接协同仿真有显著的提高。但是软硬件之间的协同是异构框架中的难点。由于软件仿真 和硬件仿真使用独立的两个进程,一般可以使用进程间通信( 口c ,i n t e rp r o c e s sc o m m u n i c a t i o n ) 技术 来实现软硬件仿真器之间的信息交互。文献1 1 6 针对异构框架提出了一种基于共享内存的协同仿真方 法,较好地解决了仿真过程中软硬件之间的同步问题。 2 2 3 基于f p g a 原型系统的协同验证方法 基于f p g a 原型的验证是s o c 设计中一项非常重要的验证手段。f p g a 的逻辑运算速度通常比 软件模拟高出好几个数量级,基于f p g a 原型的验证使s o c 设计者可以在一种按系统实际运行速度 或接近实际运行速度的环境下验证s o c 设计的功能,并通过以f p g a 为核心的原型样机观察系统的 实际功能。 系统级s o c 芯片的验证,特别是系统级芯片的软硬件协同验证,需要一种高速高效的验证环境, 基于f p g a 原型的软硬件协同验证是一种很好的选择。而且基于f p g a 的原型样机在系统开发的早 期就可以设计出来,使得软件工程师可以尽早开始系统软件的设计和调试,极大地缩短了s o c 设计 的项目周期。 图2 - 6 是快速原型环境的简单方框图。用引出焊点式芯核来代表处理器,它通过电路形式仿效 嚣和源代码级调试器相连接,并通过处理器总线和外围设备相连接。外围设备被表示为实际的芯片, 或者以f p g a 来实现。 第二章软硬件协同验证 j t a gc o a n e c t k m e m u l a t i o n j t a gd e b u g g e r 耳r l s y 蜕e m c p u w i t h a n dp r o b e r eh a r d w a r e a e r i a lb i t s t r e a m d e s i g n 图2 - 6 快速原型系统 基于f p g a 原型的s o c 设计中的软硬件协同验证的基本流程如图2 - 7 所示。 图2 7 基于f p g a 原型的协同验证基本流程 该流程中首先根据根据s o c 设计的功能规范和设计要求,对s o c 系统的硬件进行面向a s i c 的可综合的r t l 级代码( v e r i l o g 或v h d l ) 描述。在此基础上作适当的代码修改,将面向a s i c 的可 综合r t l 代码移植到f p g a 上,完成面向f p g a 设计代码。这里要着重指出盼是:这两个版本的代 码除了r a m ,p u 。等因两者实现结构不同而产生的底层调用宏块等相关代码不同,其他代码要基本 保持一致,以使f p g a 厥型综合映射后的功能和a s i c 功能尽量保持一致。如果目标系统的硬件设 计无法在一块f p g a 实现,还需要在多块f p g a 芯片之间划分设计,使得每个子设计都能够在单块 f p g a 芯片上实现。f p g a 划分可以在f p g a 逻辑综合前r t l 描述时完成,也可以在完成逻辑综合 后对生成的f p g a 网表进行划分。f p g a 划分后,就能够对划分结果进行初步的仿真、f p g a 的逻 辑综合、布局布线,并生成f p g a 的硬件编程文件。同时,软件c 语言代码和汇编语言通过交叉编 1 2 东南大学硕士论文 译和链接生成目标代码。最后,把硬件编程文件和软件目标代码下载到f p g a 原型开发板中进行原 型调试,即s o c 设计的软硬件协同验证。 f p g a 验证的优点在于以下几点: 速度快,能快速仿真出设计的逻辑功能; 能集成软硬件,可以大量运行和调试软件; f p g a 验证的不足之处在于以下几点: 信号可见性差,必须通过逻辑分析系统才能采样到i o 上的信号; 不能达到a s i c 的性能,性能评估受限。一般说来f p a g 芯片时钟速度都没有a s i c 芯片 的时钟速度快,这样的验证方法限制了系统的性能评估,这在对实时性要求高的设计中尤 为突出; f p g a 实现的t i m i n g 和a s i c 实现的t m i n g 不一样,因为两者的物理实现方法完全不一样。 这给t i m i n g 验证带来了很大的困难,尤其是在验证高性能电路时: 只有设计比较稳定( h d l 代码基本稳定) 时才能有这种方法来验证,因为f p g a 的调适能 力和信号可见度很差; 2 2 4 软硬件协同验证方案的比较 以上的方案,各有箕优缺点和适用范围,下面从以下几个方面对其进行比较l 司: n 验证速度 从仿真速度上来说,基于f p g a 的原型系统采用硬件实现的方式,因此它最快;基于 i s s 的方案速度中等;基于r t l 描述的直接协同验证方案在t e s t b e n c h 中只取少量波形的 情况下,速度与软原型方案接近,而基于r t l 描述的异构协同验证方案则是最慢的。 2 ) 时间精度 从时间精度上说,基于f p g a 和基于r t l 描述的方案都可以达到时钟级精确,而i s s 方案在一般情况下精确度不是很高,大部分是指令精确的。 3 ) 调试性能 i s s 方案一般用来验证系统在算法级上的正确性,对硬件的调试能力有限。而基于r t l 描述的直接协同验证方案则相反,对软件的调试能力不是很强,只能通过硬件间接观察软 件的运行情况。基于r t l 描述的异构协同验证方案具有最强大的调试性能,支持软件的单 步执行,随时查看寄存器内存状态,还可以用硬件仿真器生成波形来调试硬件,因此无论 硬件软件,可调试性能都非常高。f p g a 的调试性能比较差,它一般是在经过一些仿真器 仿真后再做的原型验证,调试需要通过增加j t a g 、逻辑分析仪之类的工具才能看到内部 状态。 4 ) 准备工作 i s s 方案需要外设的模型,这需要工程师做大量的前期准备工作,一般通过前期积累 或者通过其他途径得到。基于r t l 描述的异构验证方案只需做好软件硬件配置就可以,相 对工作量最少。f p g a 需将硬件下载到f p g a 中,只有少量的准备工作。基于r t l 描述的 直接验证方案需要在t c s t l x n c h 中做一些信号触发达到方便调试,准备工作也较少。 1 3 第二章软硬件协同验证 5 1 价格成本 i s s 方案成本不高,需要和芯片配套的i s s 和一些外设的模型。基于r t l 描述的异构 验证方案需要购买协同验证软件,比软原型方案成本要高。成本最高的是f p g a ,购买这 些硬件需要很高的费用。成本最低的方案是基于r t l 描述的直接验证方案,只需要硬件仿 真器即可实现。 6 ) 适用范围 i s s 方案比较适合算法验证和一定程度的硬件系统调试。基于r t l 描述的异构验证方 案适合软硬件的联合调试,尤其在系统未经过充分验证,需要较好的调试性能的情况下。 f p g a 适合在经过了仿真器验证无误之后,再做的原型验证。基于r t l 描述的直接验证方 案较适合做回归测试,以及经过一定程度验证之后,对系统做少量修改后的回归测试。 各种方案的比较总结如表2 - 1 所示: 表2 i 各种软硬件协同验证方案的比较 方案验证速度时间精度调试性能准备工作价格成本适用范围 基于i s s 和虚拟原型中等指令级中等大量低早期 的协同验证方案 基于r t l 描述的 慢时钟级高少量中等中期 异构协同验证方案 基于r t l 描述的中等时钟级中等中等低中期 直接协同验证方案 基于f p g a 原型系统快时钟级低中等 高 后期 的协同验证方案 2 3 软硬件协同验证方案的选择 从以上对各种协同验证方案的分析比较可以看出,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论