(微电子学与固体电子学专业论文)soc芯片级快速验证方法研究.pdf_第1页
(微电子学与固体电子学专业论文)soc芯片级快速验证方法研究.pdf_第2页
(微电子学与固体电子学专业论文)soc芯片级快速验证方法研究.pdf_第3页
(微电子学与固体电子学专业论文)soc芯片级快速验证方法研究.pdf_第4页
(微电子学与固体电子学专业论文)soc芯片级快速验证方法研究.pdf_第5页
已阅读5页,还剩63页未读 继续免费阅读

(微电子学与固体电子学专业论文)soc芯片级快速验证方法研究.pdf.pdf 免费下载

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

文档简介

摘要 随着系统芯片( s o c ) 设计规模越来越大,功能越来越复杂,芯片级( c h i p l e v e l ) 的仿真速度 变得越来越慢,如何加速芯片级功能仿真成为人们越来越关注的问题。本文从分析传统的芯片级功 能仿真效率低的原因入手,提出设计硬件高层仿真模型,并使用软硬件协同验证的方法,加速芯片 级功能仿真。 本文首先根据传统芯片级仿真时,给出的各个部分占用c p u 时间的报表,分析影响芯片级仿真 速度的原因,确定本文芯片级功能仿真加速的方案:硬件高层建模和软硬件协同验证。 然后,分析了软硬件协同验证的各种方法,选取c 仿真的软硬件协同验证的方法来设计本文的 芯片级验证平台。根据c 仿真方法的需要,介绍v e r i l o gr t l 代码转换成c c + + 代码的工具- - v 2 c : 由于a r m 公司的a r m u l a t o r 在仿真速度上的巨大优势,选择其作为a r m 指令级模拟器总线功能 模型( b f m ) 的建模工具。 接着,利用a r m u l a t o r 的扩展接口,设计a r m 指令级模拟器的总线功能模型。利用c c + + , 设计扩展存储器接口( e m i ) 和a m b a 总线的周期级仿真模型。系统芯片的其他硬件设计部分则使 用v 2 c ,把r t l 代码转换成周期级的c c + + 代码,挂在a m b a 总线模型上,建立芯片级验证平台。 最后,使用本文设计的验证平台,仿真多媒体音频播放、l c d 图像显示、m p 3 软件解码等程序。 从仿真数据可以看出,系统仿真速度比传统的方法提高2 0 倍左右,软件的可调试性大大提高,并且 可以提供大量数据,用于系统性能评估。 关键词 硬件高层建模扩展存储器接口模型a m b 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 fs o ci ss oh u g ea n dt h ef u n c t i o no fs o ci ss oc o m p l e xt h a tt h es p e e do f c h i p - l e v e lf u n c t i o n a ls i m u l a t i o ni sl o w e ra nl o w e r ,a n dm o r ea n dm o r ep e r s o n sc o n c e mw i t ht h e a c c e l e r a t i o no fs o cc h i p l e v e ls i m u l a t i o n i nt h i st h e s i s ,a f t e ra n a l y z i n gt h er e a s o no fi n e f f i c i e n c yo f t r a d i t i o n a lc h i p - l e v e ls i m u l a t i o n ,h a r d w a r e h i g h l e v e lm o d e l i n ga n dc o - v e r i f i c a t i o ni s a d v a n c e dt o a c c e l e r a t et h ec h i p - l e v e ls i m u l a t i o n f i r s t l y , i nt h i st h e s i s ,a f t e ra n a l y z i n gr e p o r tf o r m so fc p ut i m ep o s s e s s e db ye v e yp a r t m e n t so f t r a d i t i o n a l c h i p - l e v e ls i m u l a t i o n ,t h e r e a s o no fi n e f f i c i e n c yi sc o n c l u d e d ,a n dt h es c h e m eo f a c c e l e r a t i o n :h a r d w o a r es i m u l a t i o na n dh sc o v e r f i c a t i o ni sa d v a n c e d s e c o n d l y ,a f t e ri n t r o d u c i n gs e v e r a lm e t h o d so fc o v e r i f i c a t i o n ,t h ec s i m u l a t i o nm e t h o di sa d o p t e dt o d e s i g nt h ec h i p l e v e ls i m u l a t i o ne n v i r o n m e n t a c c o r d i n gt ot h ec s i m u l a t i o nm e t h o d ,v 2 cw h i c hi st h e t o o lt ot r a n s l a t et h er t lc o d et oc ,c + + c o d e si si n t r o d u c e d b e c a u s eo ft h e h i g hs p e e do f s i m u l a t i o n ,a r m u l a t o ri ss e l e c t e dt om o d e l i n gcb f mo fa r mi s s t h i r d l y ,t h ecb f mo fa r mi s si sd e s i g n e db ye x t e n d e di n t e r f a c eo fa r m u l a t o r u s i n gt h el a n g u a g e o fc c + + ,t h ec y c l e l e v e lm o d e lo fe m i ( e x t e n d e dm e m o r yi n t e r f a c e ) a n da m b ab u si sd e s i g n e d t h eo t h e r h a r d w a r ep a r t m e n t so fs o ca r et r a n s l a t e dt oc c + + c o d e su s i n gv 2 c ,a n dc o n n e c t e dt oa m b a m o d e l ,t h e n t h ec h i p l e v e ls i m u l a t i o ne n v i r o n m e n ti sf o u n d e d f i n a l l y , p l a y i n gm u l t i m e d i am u s i c ,d i s p l a yo fl c dp i c t u r ea n dd e c o d i n gm p 3w i t h s o f t w a r ei s s i m u l a t e di nt h ee n v i r o n m e n td e s i g n e di nt h i st h e s i s a c c o r d i n gt ot h er e s u l to fs i m u l a t i o n ,t h ee f f i c i e n c yo f s i m u l a t i o ni se n h a n c e da b o u t2 0t i m e s a n dt h ed e b u g g i n go fs o f t w a r ei se a s i e rt h a nt r a d i t i o n a l s i m u l a t i o n m o r e o v e r , am a s so fd a t aa r ec r e a t e dt od oa n a l y s i so fs y s t e mp e r f o r m a n c e k e yw o r d : h a r d w a r em o d e l i n g ,e m im o d e l ,a m b am o d e l ,cs i m u l a t i o n ,h s c o v e r i f i c a t i o n ,p e r f o r m a n c e e v a l u a t i o n i i 学位论文独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发 表或撰写过的研究成果,也不包含为获得东南大学或其他教育机构的学位或证书而使用 过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明 并表示了谢意。 研究生签名:羔之轧日期:逊堕蚪 关于学位论文使用授权的说明 东南大学、中国科学技术信息研究所、国家图书馆有权保留本人所送交的学位论文 的复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本人电子文档的 内容和纸质论文的内容相一致。除在保密期内的保密论文外,允许论文被查询和借阅, 可以公布( 包括刊登) 论文的全部或部分内容。论文的公布( 包括刊登) 授权东南大学 研究生院办理。 i i 东南大学硕士论文 1 1 课题背景 第一章绪论 s o c 是集成电路产业出现的重大技术突破,是当今超大规模集成电路的发展趋势,也是2 1 世 纪集成电路技术的主流,它为集成电路产业提供了前所未有的广阔市场和重要的发展机遇。随着s o c 规模越来越大,功能越来越复杂,使得s o c 设计日趋复杂化,而且验证工作也越来越繁重。据统计 验证过程占据了整个设计周期的4 0 到7 0 ,并且设计过程所需要的验证工程师的人数,一般是设 计工程师人数的2 倍【1 1 之多。 s o c 验证就是对s o c 系统进行功能验证、静态时序分析、功耗分析以及规则检查等,来保证正 确的系统功能和良好的产品性能。主要技术包括:动态仿真、静态时序分析、形式验证等。而本文 主要讨论的是基于动态仿真的功能验证。 图1 1s o c 设计的流程图 在s o c 硬件设计被综合前,首先要对基于r t l 的硬件描述进行功能验证。功能验证的目的是 为了通过提高验证的功能覆盖率,来确保模块或芯片的功能错误尽量少,确保验证过的模块或芯片 - 1 一 东南人学硕士论文 的功能正确性。根据s o c 系统的特点,一般采用自底向上的验证方法,即存模块集成到芯片以前 尽可能地对每一个子模块做功能验证,来确保其功能的正确性:然后再对整个芯片或系统进行验证, 因此验证可分为b l o c k - - l e v e l ( 模块级) 验证、子系统级验证和c h i p l e v e l 验证。 模块级验证就是对s o c 系统设计中某个子模块进行单独的验证。模块级验证的日标是要达到足 够高的功能覆盖率,使得模块在集成到整个系统中时,其本身的功能错误尽量少。这是因为,如果 模块本身还有一些功能错误,那么s o cc h i p l e v e l 验证将变得非常困难。 当各个子模块被充分验证后,就可以被集成到其从属的子系统中去验证。子系统级验证主要侧 重于模块间接口的验证以及模块间交互的验证。 c h i p l e v e l 验证就是对整个s o c 系统进行验证,通过模拟一个芯片运行的真实环境,来测试系 统运行的状况是否与设计规范中的要求相符合。在s o c 系统设计中,不仅包含大量的硬件电路设计, 而且包含了相当部分的软件设计。因此,s o cc h i p l e v e l 验证,不仅仅是对硬件的验证,还应该包 括对s o c 软件的验证,也就是说要进行软、硬件协同验证( h a r d w a r d s o f l w a r ec o v e r i f i c a t i o n ) 。 图1 ,1 是s o c 设计流程图从图中可以看山:验证贯穿了整个设计流程。它已经成为s o c 设 计过程中极为关键的环节。随着s o c 系统设计规模越来越大,功能越来越复杂,s o cc h i p l e v e l 的 仿真速度变得越来越慢,如何来缩短验证时间、提高验证效率和质量、从而缩短面市时间,是当今 s o c 设计领域中最为关注的问题之一。 目前已经有很多方法用于解决上述问题:高层建模、并行仿真、硬件加速( s i m u l a t i o n a c c e l e r a t i o n ) 、e m u l a t i o n 、硬件原形( h a r d w a r ep r o t o t y p i n g ) 以及软硬件协同验证等方法。 1 2 问题的提出以及分析 1 2 1g a r f i e l d 系列芯片的介绍 g a r f i e l d 系列芯片由东南大学国家专用集成电路系统工程技术研究中心设计的1 6 3 2 位r i s c 微控制器,面向低成本手持设备和其它通用嵌入式设备。它针对低成本个人移动终端的应用需求, 为用户提供了面向移动终端应用的丰富外设、低功耗管理和低成本的外存配置。为了适应手持信息 终端的多媒体处理需求,它还集成了用于多媒体力速的m m a ( m u l t i m e d i a a c c e l e r a t o r ) 模块和a c 9 7 控制器用于多媒体音频的解码和录音。 g a r f i e l d 系列芯片架构如图1 2 所示,其内嵌由英国a r m 公司提供的a r m 7 t d m i 处理器内核。 其系统总线为a m b a ( a d v a n c e dm i c r o c o n t r o l l e rb u sa r c h i t e c t u r e ) ,是由a r m 公司开发研制的总线 架构。它集成了支持黑白,灰度,彩色的l c d 控制器:多媒体加速模块,用于提供多媒体处理定 点矢量乘加的计算能力;支持低成本的n a n df l a s h 控制器并可从其直接启动;支持实时钟( r t c ) : 支持四通道的定时器和两通道的p w m ;支持用于连接触摸屏通讯的s p i 协议;支持两个u a r t 控 制器,其中一个支持红外传输;支持u s b i 1d e v i c e 控制器用于p c 与移动终端之间的高速信息传 输;支持m m c s d 卡控制器,用户可以扩展系统的存储能力和外设功能;支持兼容a c 9 7 协议的 控制器,用于音频文件的播放和录制。内嵌2 0 k b y t e 零等待的静态存储器( s r a m ) ,用于多媒体 2 东南大学硕士论文 处理时的核心代码与数据的存放,用户也可以将操作系统的核心代码或l c d 帧缓存存放在该处理 器中,用于提供更高的性能和更低的能量消耗;6 通道d m a 控制器,为用户提供了高速的数据传 输通道。支持系统直接从n a n df l a s h 启动。 p 、l e l 6 a r f l e l d i n t c a8 。a “c 陟j l ! c 一一 搴 i m m 虱a il c d 訇捌i , b , 圄圄 r k g t n l l :r p v m i n i o p w m s 雌 , t 搭b c m l c 图1 - 2g a r f i e l d 系列芯片的架构图 g a r f i e l d 系列芯片是个复杂的s o c 系统,因此其c h i p l e v e l 验证也是一项十分复杂的、充满挑 战的工作。 1 2 2 传统的c h i p l e v e l 验证环境构成 图1 - 3 传统的c h i p - l e v e l 验证环境 从图1 - 3 可以看出,传统的s o cc h i p l e v e l 验证环境2 1 由处理器模型( p r o c e s s o rm o d e l ) 、存储 器( m e m o r y ) 、s o c 硬件设计部分、以及逻辑仿真器( l o g i cs i m u l a t o r ) 组成。 g a r f i e l d 系列芯片的c h i p l e v e l 验证环境采用与图1 - 3 类似的传统验证方法,主要差别就是把 h d lp r o c e c c o rm o d e l 换成了一个a r md s m 模型。这个模型是用c 语言实现的通过p l i 与硬件 3 东南大学硕士论文 设计部分相连接。s o c 的软件部分通过编译之后,被载入r a m 或r o m :s o c 的硬件部分使用逻 辑仿真器仿真。 在传统的c h i p l e v e l 验证中,仅仅使用了逻辑仿真器,因此容易被硬件设计人员所接受,并且 建立这样验证环境的开销也比较小。 1 2 3 环境的缺点及其分析 g a r f i e l d 系列芯片的c h i p l e v e l 验证环境主要有以下三个缺点: 1 )用此环境仿真1 帧m p 3 数据的解码,大概需要7 、8 个小时! 而实时时钟控制器( r t c ) 仿真1 秒的时间约为一周左右。导致了c h i p - l e v e l 验证很不充分带来芯片功能出错的风险 并导致资源浪费: 2 )仿真效率低f ,导致难于做系统性能评估; 3 )软件被编译成二进制代码后,装载到存储器中,而处理器核在硬件的逻辑仿真器中仿真 因此不能使用相应的软件调试工具,导致s o c 软件部分的可调试性差。 表1 1 顸层各个部分所占用的c p u 时间的百分比 类型说明占用c p u 时间百分比 p l i p l i 调用一a i l m 核部分 3 6 4 5 v c d生成波形文件部分 l _ 9 3 k e r n e lv c s 执行核部分 4 2 7 d e s i g n 设计部分 5 73 5 图1 - 4 t o p l e v e l 仿真对比图 为了分析g a r f i e l d 系列芯片的c h i p - l e v e l 仿真效率低下的原因,现对其一个典型应用程序一多媒 体音频的播放,做动态仿真,得出c h i p - l e v e l 仿真环境中,各个部分的仿真占用c p u 时间的百分比, 从而分析m 哪些部分导致仿真速度低下。本文使用s y n o p s y s 公司的v c s 作为逻辑仿真器,在v c s d 东南大学硕士论文 仿真时加上+ d r o f 的参数,仿真结束后,就会自动生成报表文件v c s p r o f ,给出仿真环境的各个部分 所占用c p u 时间的百分比,从而可以得出所需的数据。 表1 1 是从v c s p r o f 报表得出的顶层( t o pl e v e l ) 箨个部分占用c p u 时间的百分比数据。可以看 出:硬件设计部分( d e s i g n ) 和p l i 占据了绝大部分的c p u 时间。由于g a r f i e l d 验证环境中,只有 a r m 核采用p l i 实现,所以p l i 占用的c p u 时间即为仿真a r m 核占用的c p u 时间,因此a r m 仿真核占用了相当多的c p u 时间。 硬件设计部分主要则包括r t l 代码和一些外设仿真模型,其各部分占用c p u 时间的百分比见表 1 2 所示: 表1 - 2d e s i g n 部分各个模块占用c p u 时间百分比 模块 说明占用c p u 时间百分比 m e m o r yo u t a c l i n k ( a c 9 7c o d e cm o d e l ) 1 1 9 7 t p z 8 7 3 n e z v t s m c 9 6 4 m t 4 8 1 c 4 m 1 6 a 2 一o r g s d r a mm o d e l8 9 2 m e m o r yi n a c l i n k ( a c 9 7c o d e cm o d e l ) 40 5 o t h e r s6 5 4 2 图1 5m o d u l el e v e l 仿真时间图 从图1 5 ,可以看m 在硬件设计部分( r t l 代码和外设仿真模型) 中,r t l 代码占用了大约6 0 的c p u 时问,而s d r a m 模型,慢速外设模型( 如a c 9 7c o d e c 模型) 占用了大约3 0 的c p u 时间。 从上面的数据可以分析出g a r f i e l d 系列芯片c h i p l e v e l 仿真效率低下的原因: 1 )g a r f i e l d 系列芯片采用a r m 公司的口核,并不需要验证处理器核本身,因此花费了过多 的仿真周期来仿真处理器核;而且a r md s m 模型是个精确度很高的模型,在c h i p l e v e l 验证中,只需要周期级的仿真模型就可以了。 5 东南大学硕士论文 2 1 在c h i p - l e v e l 仿真中,存储器访问占据了相当多的系统资源,消耗了较多的c p u 时间。 g a r f i e l d 系列芯片中的扩展存储器接口( e m i ) 已经经过充分的验证,因此可以使用一个高 层仿真模型来替代r t l 级的e m i 硬件实现提高存储器访问的仿真效率。 3 1g a r f i e l d 系列芯片中的外设仿真模型,比如a c 9 7c o d e e ,都是用h d l 建模,其抽象层次较 低,一般是事件触发级的,更多地体现了硬件在寄存器传输级( r t l ) 上的特性,其仿真 速度较慢。因此n j 以通过设计其高层仿真模型来解决这一问题。 对于g a r f i e l d 芯片的典型应用程序一多媒体音频的解码及其播放,重复仿真5 次,结果见表 表1 3 仿真所需c p u 时问( 采用传统的c h i p l e v e l 验证南法) l 仿真5 百万个时钟周划 7 1 2 67 2 2 57 1 9 37 0 8 97 1 5 2 l 所需c p u 时间( 秒) 1 3 论文的主要工作 本文的主要工作分为建模工具选择、e m i 和a m b a 总线高层仿真模型设计、s o c 系统模型的 建立等几个部分: 1 )建模工具的选择:比较当前流行的几种建模工具的优缺点,如s y s t e m c 和p l i 。因为仿 真效率上的优势,最终选择a r m 公司的a r m u l a t o r 作为建模工具。并在其基础上建立a r m 指令级模拟器的a h b 总线功能模型。 2 )e m i 和a m b a 总线的高层仿真模型设计:模型的精确度越高,其性能就越差。在g a r i e l d 系列芯片中,e m i 和a m b a 总线经过充分的验证,因此可以使用其高层( 周期级) 仿真模 型来代替原来的v e r i l o gr t l 设计,提高其抽象层次,从而加速c h i p l e v e l 仿真。 3 1 利用c 仿真的软硬件协同验证方法设计s o c 系统模型:g a r f i e l d 系列芯片的c h i p l e v e l 仿 真中,a r m 核的d s m 模型占用厂百分之3 0 到4 0 的c p u 时间,我们可以使用a r m 核 的指令级模拟器加上总线功能模型代替原有的d s m 模型,降低仿真精度;而硬什设计部分, 使用c c + 十的周期级模型的仿真来代替r t l 代码仿真。采用c 仿真的软硬件协唰验证的方 法就可以达到r 述目的,极大地提高c h i p l e v e l 仿真的速度,同时也解决传统验证环境中, s o c 软件可调试性若的问题。 4 ) 仿真分析:利用本文设计的c h i p l e v e l 验证平台,仿真多媒体音频播放、l c d 图像显示、 m p 3 软件解码,得出仿真数据并作分析。 本文的目标是做高效的c h i p l e v e l 验证,解决g a r f i e l d 系列芯片c h i p l e v e l 验证效率低下、软 件可调试性差的问题。并使用本文设计的验证平台,对系统性能进行评估。 1 4 论文的结构 本文分为五章:第一章为绪论;第二章为软硬件协同验证的介绍以及在本文的应用,土要介绍 东南人学硕士论文 了软硬件协同验证的定义以及一般方法,并选取c 仿真的方法来设计本文的c h i p l e v e l 验证平台; 第三章为基于a r m u l a t o r 的c h i p l e v e l 验证平台设计,主要介绍了a r m 指令级模拟器的总线功能 接口、a m b a 总线、e m i 模型的设计;第四章利用c h i p - l e v e l 验证平台,仿真多媒体音频播放、l c d 图像显示、m p 3 软件解码,得出仿真数据并作分析;第五章为总结展望。 7 东南大学硕士论文 第二章软硬件协同验证 从第一章的分析可以知道,传统的c h i p l e v e l 仿真环境一般适合于调试s o c 硬件,对于大型 s o c 软件的调试能力比较差;同时,虽然其仿真精度比较高,但是仿真效率低f 使得c h i p l e v e l 的仿真速度很慢,难以保证验证的充分性。而业界常用软硬件协同仿真的办法,来解决上述问题。 2 1 软硬件协同验证的介绍 硬件软件协同验证是一种在硬件流片封装之前,验证s o c 系统硬件和软件是甭能够正确工作 的技术”。协同验证又可以叫做虚拟原型技术,因为硬件部分的仿真虽然跟真实硬件的运行基本一 样,但是硬件仿真其实是通过在工作站上的一个软件程序的运行来实现的。协同验证的基本框架如 图2 - 1 所示。 图2 - 1 软硬件协同验证的基本架构 对比传统的c h i p l e v e l 验证方法,协同验证技术使得软件设计工程师能够在设计早期进行调试, 而采用传统的方法,软件设计t 程师直到硬件设计完成才能进行除错处理。虽然有些软件可以在没 有硬件支持的情况下完成任务,如不涉及到硬件的算法,但是与硬件有交互的编码,虽然可以在硬 件实现之前编写,但是只有在硬什上运行和仿真后,才能真正对编码进行调试。通过采用协同验证 技术,可在设计早期丌始这一设计调试过程。南于软件的开发通常在系统开发的后段完成,在设计 周期中较早的开始调试有可能将使这项目提早完成,软硬件协同验证技术可以降低首次将硬件和 软件连接在一起时出现意外,而致使项目延期完成所造成的风险。由于这种协同验证是在硬件尚未 流片时进行的,因此,如果问题发现硬件有问题,可通过改变硬件设计加以解决,而不是在软件中 解决有关硬件的问题,提高一次流片成功的可能性。对比图2 2 和图2 - 3 可以看m ,采用软硬件协 同验证,可以较早的进行软硬件的整合,缩短r 市时间( t i m e t o m a r k e t ) 。 软硬件协同验证,为硬件设计工程师提供了更多的测试激励。验证是一个永无止尽的过程,更 多高效的测试激励可以提高验证收敛的速度,而协同验证技术为硬件设计工程师提供了一整套非常 现实的激励集,有利用于提高验证的质量。 东南人学硕士论文 硬件设计工程师对软件的运行理解不完全,甚至有时是不准确的,而这种理解上的局限性会反 映在他们所设计的硬件之中,反映在硬件测试上就是这些测试将无法发现对系统不正确的假定所导 致的问题,只有当把真实软件与该硬件连接在一起运行时,才会发现上述问题。不只是硬件设计工 程师如此,软件设计工程师对硬件的功能也存在理解上的局限性,在编写测试代码时,测试时也同 样存在局限性。协同验证系统促进了硬件与软件团队之间的交流,使设计工程师能够根据所要实现 的系统功能来测试他们对系统运行过程的理解。 图2 2 传统验证方法的项目规划 图2 - 3 使用软硬什协同验证的项目规划 协同验证工具的某些配置可提供整个s o c 系统的精确定时模型,在这种情况下,可使用系统仿 真来验证性能。如果能测试软件关键部分的性能并确保这些性能符合系统要求,那么就能够检测到 在各种中断服务程序所花的时间长短,并验证系统的吞叶量及响应时间,这些数据可用于确定系统 的瓶颈所在。 采用协同验证技术使得设计小组有能力改进系统的整体设计。在硬什设计部分尚未流片之前, 改变硬件设计是有可能的,但这种设计变更有时比较困难,特别是在项目后期,改变设计可能因为 过于复杂而无法实现。与其如此,不如在可能的情况下,让设计小组提供更好的设计。获得系统的 精确定时模型就可丌发系统的性能并加以完善。 2 2 软硬件协同验证的一般方法 协同验证系统由一个硬件执行环境和一个软件执行环境组成,通过事件和命令,使用一些机制, 在这两个环境间进行控制。软件的执行环境用于产生总线周期的序列,只要是软件执行需要捕获的 事件,协同验证工具就会把这些事件传递到硬件环境中,在这一环境中,这些事件从总线周期转换 到许多信号事件或者命令集。协同验证工具需要驱动这些信号事件命令进入硬件执行环境然后为 东南大学硕士论文 总线周期响应进行硬件环境取样,这一响应又被传送同软件环境。同时,保持硬件及软件环境间的 同步以便硬件或软件环境都可发现由于错失响应而导致有误的情形。 软硬件协同验证中,软硬件部分都是通过建模的方式实现。其中硬件建模方式有如下几种:l 、 采用f p g a 原型或模拟系统;2 、采用h d l 及逻辑仿真器;3 、采用高级程序语言( 如c c + + 语言) 编写的行为模型。软件也町通过几种方式执行:l 、采用i s s ( 指令集仿真器) 在c p u 上运行;2 、通 过编译,并在运行仿真程序的主机上运行。 一般,软硬件协同验证方法有如r 几种【4 j : 2 2 1 使用逻辑仿真器的主机目标代码模式( h o s t c o d e m o d e w i t h l o g i c s i m u l a t o r ) 这种方法中,s o c 软件编译成的目标代码,是针对主机的,而不是针对s o c 硬件中的嵌入式核。 软件部分在主机上直接运行,并通过一套机制访问硬件部分的逻辑仿真器。软硬件部分通过进程问 通信( i n t e r - p r o c e s sc o m m u n i c a t i o n ,i p c ) 的方式与s o c 硬件设计部分交换信息,而i p c 一般采用 套接字( s o c k e t ) 方式实现。需要注意的是,在跟硬件设计部分的总线功能模型( b u sf u n c t i o n a lm o d e l , b f m ) 交换信息时,需要对软件代码做修改,以使软件在主机上仿真时,能够做相应的函数调用( 如 图2 4 所示) 。 p r o c e s s1 p r o c e s s2 图2 4 h o s t c o d em o d ew i t hl o g i cs i m u l a t o r 硬件部分则是利用h d l 语言编写r t l 代码( 可能还包括一些外围设备的仿真模型) ,并在逻辑 仿真器中运行。b f m 是硬件设计部分与软件部分的接l _ j ,工作在交易级( t r a n s a c t i o nl e v e l ) ,它是 软硬件进行协同仿真的交换界面。一一方面,它根据软件部分提供的读写或r r i 断等信息,以事件的形 式发送给硬件仿真器;另外方面它还要将硬件仿真器传送来的硬件部分的输入信号转换为中断请 求、数据输入等,请求软件部分进行处理。一般来说,在这种方法中,软件部分无法预测下个总 线周期的行为,因此,每次只要考虑一个总线交易( t m n s c a t i o n ) ,而没有流水总线的概念( 如a h b ) 。 2 2 2 指令级模拟器加逻辑仿真器的方式( i s sw i t hl o g i cs i m u l a t o r ) 这种方法把s o c 软件编译成针对s o c 硬件嵌入式核的目标代码,并在指令级模拟器( i s s ) 上 仿真。指令级模拟器是一种仿真c p u 行为的程序,它在土机上运行,可以仿真软件程序的可执行镜 像。指令级模拟器可以包含处理器核的内置高速缓冲存储器( c a c h e ) 、流水线结构和写入缓冲器 1 0 东南大学硕士论文 ( w r i t eb u f f e r ) 等组件并且可以提供软件执行的时钟周期精确模型。因此使用指令级模拟器,可 以对软件部分做更真实的仿真,如可以仿真s o c 系统复位的流程、c a c h e 和m m u ( 存储器管理单 元) 的配置过程、异常处理等。 硬件部分与1 的方法类似,主要不同在b f m 中。由于采用指令级模拟器,b f mn j 以根据其提 供的指令执行情况以及处理器状态确定相应的总线时序,并以事件的形式发送给硬件仿真器。在这 种方法中,指令级模拟器可以推断出下一个总线周期的行为,因此可以止确的模拟出总线流水的行 为,给出下一个总线周期的流水地址,从而可以进行突发传输( b u r s tt r a n s c a t i o n ) 。所以,方法2 的 b f m 也应该支持突发交易,而不是像方法1 中的b f m ,只支持单个传输。 s 。t t w a r e 。e b u a a e r 0竺竖翼篡羔 - g u u i i l o g i cs i m u l a t i o n i n s t r u c t i o n 8 f m w i t h s e t c h a r d w a r e a p i r e a d ,w r i t e a n d d e s i g n s i m u l a t o r i n t e r r u p t m e s s a g e s p r o c e s s1 图2 - 5i s sw i t hl o g i cs i m u l a t o r p r o c e s s2 s o f t w a r ed e b u g g e r :然罴 l l j i i h d l l o g i cs i m u l a t i o n i n s t r u c t i o n b u s w i t h s e t c s h e l l h a r d w a r e b f m b u s d e s i g n s i m u l a t o r s i g n a lv a l u e s p r o c e s s1 p r o c e s s2 图2 - 6 c y c l e - b a s e di s sw i t hl o g i cs i m u l a t o r 肯一些指令级模拟器会统计仿真的相关信息,如存储器的访问周期数等,有了相关的统计信息, 就可以做一些深层次的工作,如系统性能评估等。这类指令级模拟器读写存储器时,必须统计其访 问硬件部分所消耗的时钟周期数并且相应地更新其内部时间。而为了确保软、硬件之间的时间同 步,可以采用如图2 - 6 所示的方法,给指令级模拟器包上一个c 的总线模型,实现指令级到周期级 的转换,并实现总线接口功能,与硬什部分相连接。此时的软硬件的接f i 部分,由前面的交易级变 成了时钟周期级的。 目前,指令级模拟器和h d l 的r t l 描述相结合,在协同验证中获得了广泛的应用,这种结合 采用设计过程中创建的一部分部件,不需要另外创建和维护用于验证的仿真模型,使得硬件及软件 东南大学硕士论文 设计工程师可使用与各自设计过稃相同的工具,从而可以利用现有的经验来完成协同验证。 2 2 3c 仿真( cs i m u l a t i o n ) 的方法 2 3 软硬件协同验证在本文中的应用 从2 2 节的介绍可以看出,1 和2 两种方法的硬件部分仿真都是r t l 代码在逻辑仿真器上仿真, 因此仿真速度仍然慢,同时软硬件部分通过进程间通信来交换信息,降低了仿真速度。而在方法3 中,硬件部分使用v 2 c ,把r t l 级代码,转换成周期级的c c + + 代码,编译成动态链接库,s o c 软件部分需要硬件信息时,调用动态链接库即可,节省了进程间通信所消耗的c p u 时间,因此第3 种方法更能够提高仿真速度,本文采用第3 种方法一c 仿真的软硬件协同验证,来加速s o c 1 2 东南大学硕士论文 c h i p l e v e l 的仿真。 2 3 1 指令级模拟器以及建模工具的选择 在g a r f i e l d 系列芯片中,采用a r m 公司的i p 核,因此要选用a r m 的指令级模拟器。a r m u l a t o r ” 是一个在a r m 公司推出的集成开发环境a d s ( a r md e v e l o p e rs u i t e ) 中提供的指令集模拟器。 它与运行在通用计算机( 通常是x 8 6 体系结构) 一t - 的调试器相连接,模拟a r m 微处理器体系结构 和指令集,提供了开发和调试a r m 程序的软件仿真环境。 a r m u l a t o r 不仅可以仿真a r m 处理器的体系结构和指令集,还丌j 以仿真存储器和处理器外围 设备,例如中断控制器和定时器等。a r m u l a t o r 提供了一利,扩展机制,可以在a r m u l a t o r 的平台上, 用c 语言描述硬件模型,通过其接口函数建立与a r m u l a t o r 的联系,使得a r m u l a t o r 中的指令集仿 真器可以通过接口函数访问该模型,因此还可以使用a r m u l a t o r 来建立硬件模型。 表2 - 1a r m u l a t o r 模型仿真结果与r t l 级仿真结果 测试程序a r m u l a t o r 仿真结果g i v 仿真结果准确性 ( c y c l e 数)( c y c l e 数) a r m u l a t o r g i v 0 u n z i p1 4 6 0 8 3 3 61 5 3 6 6 8 8 6 9 5 0 6 c r c 3 21 3 5 8 2 1 2 21 4 4 3 4 0 5l9 4 0 9 j p e g3 8 3 0 0 9 6 03 9 9 3 7 9 9 09 5 9 0 图2 - 8a r m u l a t o r 模型仿真结果与r t l 级仿真结果关系 业界现在使用的s o c 建模t 具和语言很多,如s y s t e m c 7 和p l i 8 】等,这些都符合s o c 建模 的基本要求:高层次的抽象和描述。s y s t e m c 是以c _ - 为基础,加入硬件描述语言的特性,如并 行性和时钟等,并扩展定义了函数集,从而完备了对硬件结构的描述。p l i 是v e r i l o g 语言的标准 之一,提供了v e r i l o g 和c 语言之间的交互接口。通过p l i ,可咀在c 和v e r i l o g 之间传递数 据和信息,从而完成两者的联合仿真。 基于a r m u l a t o r 的建模与s y s t e m c 、p l i 建模相比较,抽象层次都比r t l 级描述语言 v e r i l o g 要高。但是在仿真速度上,a r m u l a t o r 具有巨大的优势。以测试程序g u n z i p 为例,在 - 1 3 东南大学硕士论文 s y s t e m c 、p l i 的仿真环境下,使用外部存储控制器的高层次抽象模型,运行完毕需要4 个小时,而 在a r m u l a t o r 的仿真环境中,运行完毕仅需要3 分钟。其原因在于,a r m u l a t o r 不具有并行性等硬件 描述语言的特性。而p l i 和s y s t e m c 的高层次模型都具有并行性。而并行性意味着在仿真时,某些 代码会被反复的运行,这必然带来仿真速度的下降。 将在a r m u l a t o r 中建立的外部存储控制器的高层次抽象模型,通过测试程序,与g a r f i e l d 芯 片中实现的外部存储控制器相比较,验证a r m u l a t o r 模型的准确性。 从表2 1 和图2 - 8 可以看出三个测试程序的仿真结果表明a r m u l a t o r 模型和r t l 级的实现之 间差距在5 左右,且都是a r m u l a t o r 模型比r t l 级实现的运行时间短。这是因为g a r f i e l d 芯片内 核a r m 7 t d m i 对外部存储控制器的的防问过程中,内核信号与a h b 总线信号不兼容需要通过一 个w r a p p e r 将内核信号转换为a h b 总线信号,然后通过总线完成对外部存储控制器的访问,在 内核信号转换成总线信号的过程中有性能上的损失。造成了a r _ m u a l t o r 的仿真结果偏快。 n t r a n s h s i z eh s i z e n m r e g h a d d r a h a d d r a r m h s d r a m c o r e m a s w r a p p e r h b u s r e c h b u s r e ( : c o n t r o l 一b n w a i t h r e a d yh r e a d y 图2 - 9内核对外部存储控制器访i q 沉程图 。l k 八八八几八一几 二j 匦巫二 亟亟二二二二 i nh a d d r e s s 二二 巫亟 汇二亘巫 二 二亘匦 1 n _ h t r a n s 二二二 叵二x 二二巫 二至垂亘二 o u t h r e a d y 厂 厂 图2 1 0 内核对外部存储控制

温馨提示

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

评论

0/150

提交评论