在一个虚拟软硬件协同验证的环境中,主要核心的问题就是去执行足够有意义的软件,在软件执行时,微处理器产生了数以万计的内存的存取动作,其中包含了指令的存取与内存的读写,而在一个纯硬件仿真的环境中,以每秒执行10个或20个时钟的速度,来执行数百万个内存存取动作,可能需要数天时间,例如光是启动一个Lynx的实时系统开机,以每秒执行二十个时钟的速率来计算,就需要产生一千六百八十万个内存存取动作..
Seamless维持了一个独特的内存储存机制称为”一致性内存服务器”,因此,处理器可以让设计者依实际状况选择,是透过硬件仿真器来产生读取信号,还是直接从内存服务器中读取数据,而不产生频率,因而比实际状况将近快了一万倍左右,例如在一开始的验证阶段,很重要的就是先确认整个内存系统的动作无误,以确保系统可以开机运行,一旦确立此种动作之后,就可以启动内存最佳化功能,来节省实际的仿真时间,此种最佳化也可随时打开或关闭,依照设计者对整个系统的掌握程度
因为内存内容是存放在同一个位置(一致性内存服务器内),因而无论是多少次存取方式的切换(从最佳化到非最佳化),可以保证资料的一致性,同时内存服务器也支持多个处理器存取多个不同的记忆地址,Seamless所使用的内存为Denali模型,其本身提供了将近四千多种内存模型可供选择,如无适当模型,设计者也可利用Seamless所支持的模型来修改,而本身的崁入式软件则不需作任何更动
用户1454308 2016-6-2 12:12
Good
wuyeqing_363494696 2014-1-28 00:12
用户1728258 2014-1-22 14:09
用户1602177 2013-12-23 17:55
用户1052207 2008-8-28 16:39
你说的有道理。
如果你的设计中这种Memory的存取很多,那Seamless的提速的作用就比较明显。
太Seamless的作用不尽如此,它可以提供很好的软硬件的协同仿真和debug。
如果单纯从提高仿真速度来说,有从硬件和软件两方面来做:从硬件来说,硬件加速仿真器(accerator or emulator)可以提高。当然FPGA Prototype也是可以的,只不过Debug和每次需要重新编译和布线耗时。受制于FPGA自身速度,不可能作到realtime。不过150M速度也可以满足部分要求。
软件来讲,那就是提高抽象层次,使整个仿真在TLM层或ESL。
这两个方向应该是未来的热点。
用户1060261 2008-8-17 10:41
模型的精确性和仿真速度是一个矛盾,这也是制约虚拟仿真的一个根本问题之一。在这点上seamless 并没有很根本的改善,其只是在内存的加速访问上做了一点有益的工作而已。