系统级芯片的开发工作包括硬件和软件两部分,软件开发常常要等到硬件设计完成拿到样片之后才能进行。本文介绍如何利用仿真技术进行硬软件协同验证,使软件开发人员不用等到真正的样片出来即可在仿真模型上开始设计,从而缩短开发周期。
Luna 340是Chrysalis-ITS网络安全处理器系列产品中的第一个型号,它用多个嵌入式RISC内核建立一个完整的SoC,可以提供对称/非对称密码处理及相关网络安全协议处理。Luna 341是一个伴随处理器(companion processor),其高速模块化求幂结构、加密与散乱算法加速硬件均设计成可与Luna 340实现无缝连接,并通过一个32位66MHz PCI接口提供与SSL相关的高速密码运算(RC4、MD5、SHA-1)(图1)。
Luna 340的设计相当于一个500万门ASIC,是我们与Mosaid Technologies合作共同完成的。它采用0.25微米工艺,内含2,200万个晶体管。Luna 340包含5个ARC RISC内核及相应存储器、两个66MHz PCI接口以及一个复杂的(256位)乘法器。最先做出具有一定功能的硅片后,发现性能没有达到预期的效果,有两个地方需要改进。
首先就是要为软硬件协同设计准备一个更好的环境,这一点Axis Systems仿真系统能够做到。其次,由于安全协议市场更加规范,可以用专门硬件模块代替基于微处理器的解决方案。Luna 341是Chrysalis-ITS第一个使用这种硬件模块的芯片,它采用一种以平台为基础的SoC设计方法产生一个分层可扩展模块化设计,相当于一个几百万门ASIC。模块化求幂加密引擎(RC4、MD5、及SHA-1)都是由Chrysalis-ITS的IC设计人员设计,由于采用多个时钟域,开发小组可以使每个加密引擎都发挥出最大性能。Luna 341的原型完全是在多个FPGA上实现的,现在已经改为ASIC。
Luna 340是建立在处理器基础上的,因此有大量软件需要设计和验证,包括驱动程序、应用代码及多达128kB的嵌入式底层操作系统。Luna 340控制处理器从主机接受命令,然后将任务分配给它自己的对称处理器或Luna 341的密码加速器,这些命令灵活而有序地控制高级密码操作。
我们的验证工具包括VHDL和Verilog模拟程序及ARC、Axis Systems、Cadence、Mentor Graphics的软件开发工具,逻辑模拟程序没有我们所需要的系统级验证性能,因此我们在可重复配置计算(RCC)技术基础上增加了Axis的硬件系统,这样一来其性能比标准逻辑模拟要快好几个数量级,可作为我们验证工作的基础。现在我们整个设计小组都在使用RCC系统。
RCC技术采用可编程器件使模拟加速,系统仿真及硬软件协同验证都在一个平台上,它只要一个设计数据库。可以建立RCC系统加快逻辑模拟,也可以利用仿真能力让它看起来像一个器件以便用实际目标系统对其进行驱动。
对硬件工程师来说,RCC就像他们熟悉的逻辑模拟器一样(图2),由于它可以很快从基于软件的逻辑模拟转换成模拟加速和系统仿真,因此工程师们能够在很高的速度下进行仿真,然后在调试时转换成逻辑模拟模式。
对于软件工程师来说,感觉就像真正从晶圆厂拿到了硬件。这种系统让他们在所喜欢的主机环境下工作,他们可以用标准开发工具,包括指令集模拟器和源代码调试器,而不需要面对从逻辑仿真器得到的波形和大量记录文件。软件工程师甚至可以单步运行代码,观察每一行代码执行之后寄存器会有什么变化。
RCC技术利用可编程协处理器加快逻辑模拟的速度,每个处理器设计成执行一项任务,在对设计进行汇编过程中,处理器的数量和类型选择取决于设计的种类;然后数以万计的处理器映射到FPGA中,采用高效通讯算法使用事件驱动并行计算结构运行。
在我们进行Luna 340网络安全芯片开发时还没有RCC仿真器,Luna 340使用Verilog和VHDL混合方式设计。在Luna 340B设计快结束的时候我们才加入Axis RCC,那时已经将设计综合成门,可以很容易在RCC系统上运行经过综合的门级代码。在设备交付的一个星期里,我们就能对340B建立模型。我们使用RCC系统来验证新设计,并提供模型运行Luna 341,Luna 340B出带完全成功。
Luna 341采用Verilog设计,这样可以在Axis上用RTL代码来运行并调试设计,RCC系统支持行为、RTL和门级描述。
验证带来的挑战
我们为自己的器件提供了大量专用软件,它也是整个系统的一个重要部分。有了这么多软件,一个能提供器件周期精确描述和支持软件升级的验证环境就非常重要。我们选择ARC内核用于这套芯片组,因为它具有定制功能。由于内核具有扩展性,而客户通常会做很大的修改,所以对供应商来说要提供周期精确模型并不容易。所以如果没有一个好的方法来仿真,我们就不得不在增加额外功能以提高性能和具备良好硬软件协同设计环境之间作一个适当的选择。
有了RCC系统后,我们就有一种简单的方法利用门级设计为软件工程师提供周期精确模型。所以除了验证功能外,我们现在还能够发现如冲突和等待状态之类的问题。
由于资源冲突,软件编写应在5,000个时钟周期完成的功能结果可能要花8,000个时钟周期。假如IC不是周期精确的就很难发现等待状态,也难于预测后面的性能,RCC系统能很好解决这种情况。我们这里5个ARC内核都是可以综合的,而且还有网表,因此只需在RCC系统上简单地运行所作的设计即可,不再需要供应商提供的模型。在仿真模式下运行系统时,它就是我们所希望的周期精确模型,也即可以在上面运行实际的软件。Axis既是一个模拟加速器,也是一个仿真器,它绝不仅仅只是周期精确模型,它为硬件和软件工程师们提供了一种很有帮助的完整模拟与调试环境。
我们面临的另一个主要问题是缺乏原始模拟性能,只有逻辑模拟我们还不能得到足够的数据来测试系统,但是RCC系统能使系统性能明显提高。
对于某个特定的测试,硬件工程师需要花两天时间进行逻辑模拟,并把结果提供给RCC系统。如果在模拟加速模式下,同样的测试只需花40秒时间。这一原始功能可以让开发小组比以前增加更多的测试验证更复杂的性能,在处理多芯片系统时这一点尤其重要。
协同验证
我们的设计过程已经逐渐开始需要硬软件协同验证。因为我们可以运行硬件周期精确模型,所以能大大增加对整个硬件和软件设计的信心,Luna 340最初设计过程中没有采用硬软件协同验证,验证只能覆盖三层软件代码。设计人员先把驱动程序(如PCI驱动程序)和底层操作系统装入器件中,再在上面增加应用代码。把系统整合在一起时系统勉强还能工作,但没有我们想象的那么快,如同前面提到的那样。
当设计人员通过RCC仿真器运行实际的客户软件时,我们发现软件工具改变对许多不同任务都可以减少多个时钟周期;我们还能发现硬件的瓶颈所在,这样有助于把精力集中在设计上。这在设计辅助芯片时很明显,复杂的指令在最初设计的时候要经过350个周期,现在只要200个周期就能完成。
有了ARC的周期精确模式,设计人员可以发现无操作状态,即内核想在同一个时间里做两件事情,由于资源冲突,内核需要先完成一件事然后再做另一件,当我们发现为什么会经常访问一个器件后,就可以通过改变软件来避免这种情况,我们可再运行一次软件以确认冲突确实已不存在。
RCC系统成了我们芯片的绝对精确模型。将系统用一根电缆连接到板上,这样就得到了整个系统的模型。我们在它上面简单地运行一下软件,有些软件可能是在RCC系统上运行,有些可能是在板上的处理器上运行,或者两者兼而有之。由于这时硬件还是RTL描述,所以在结果上可以对硬件直接进行修改。这样能进行真正的折衷分析,修改硬件或软件使系统性能达到最佳。
采用硬软件协同验证方法最大的好处就是可以使用熟悉的硬件开发软件,当我们开始设计Luna 341时,用RCC系统来仿真Luna 340B并运行软件,此时Luna 340B还正在制造过程中。这样Luna 341的软件开发就可以提前4个月的时间,而不需要等到4个月后有了真正的芯片后再开始开发软件。
硬软件协同验证增加了我们的自信心,芯片返工率也从90%降到了30%,这也意味着大幅降低了成本。对于0.15μm工艺,少一次返工相当于省下100万美元,更不用说4个月制造芯片的时间成本了。
用RCC系统进行硬软件协同验证的另外一个好处就是能够强迫并释放软件环境中的节点,我们可以用它来模拟时序如加电序列。安全类器件中由于要确保敏感信息不会在无意中流失,因此上电序列非常多。我们也可以按检查器和监护器的形式增加性能代码,这样能显示出执行时的信息,例如一个特定的事件序列触发检查器时在Unix命令行中就会显示“芯片已清空”等信息。这些特性使得系统操作的透明度有了很大改进。
RCC为真正的硬软件协同验证提供了必需的性能,这样在原型样片出来前即可对嵌入的软件进行早期测试。它增强了硬件工程师所做的验证,减少项目开发时间,并增加了整个设计过程的信心。
在仿真器上进行调试
很多仿真器缺乏先进的硬件调试能力,如断点调试,在仿真的时候不能回到任何断点再继续进行交互调试。另外它们还综合成门级表述,造成不明确而在调试过程中难以克服。
用RCC做仿真就没有这些限制。它在程序编制完成的协处理器上直接执行RTL,这样硬件验证工程师可以调试他们所写的代码,而不是经过综合后的表述。以软件为基础的逻辑模拟器与RCC结合得很密切,工程师可迅速地在仿真和逻辑仿真间转换,从而得到非常强大的调试能力,设计人员也可以回到模拟的任何地方继续观察和调试他们的设计。
硬件验证工程师发现这种方法比传统的仿真方法要好很多,他们每天晚上运行软件,早上就可以检查结果。由于逻辑模拟与仿真器没有联系,在设计人员检查头一天晚上的结果时我们还可以继续运行实际测试。
另外设置非常简单,用不了一天时间内就可把Luna 341装上并在RCC系统上运行。汇编的时间相对来说也较短,只要1小时就可以将整个系统描述汇编好。与其它仿真器不一样,RCC系统不需要使用逻辑分析仪,这也进一步简化了安装要求。以前设计人员在特定事件发生时设定探测点来触发,现在工程师只需要规定他们想要看到结果的时间长短即可。
运行性能的增加使工程师可以完成附加测试,设计小组可不希望在花了很多时间进行调试后性能一点也没有提高。
本文总结
Luna 340是一个相当于500万门的ASIC设计,它在Axis Xtreme系统上进行完全仿真后可使系统得到验证,并加快软件开发和系统调试的速度。在仿真基础上的硬软件协同验证使我们不仅能改进系统性能,还缩短了设计周期。它可以让软件设计人员在仿真结果上开始设计,这比真正拿到芯片提前了4个月的时间。现在我们采用的是0.15μm工艺,芯片返工一次要多花4个月的时间及100万美元。从上可以看出,仿真已不再是一个可有可无的东西,还有很多地方可以用到它。
作者:
Terry Thomas博士
副总裁
Chrysalis-ITS
京公网安备 11011202001138号
