在ASIC 和 SOC 设计中,验证是极为重要的一环,Cadence公司的NC-Verilog仿真器(以及较早产品 Verilog-XL)是用来仿真用 Verilog 语言写的数字逻辑电路。该仿真器在 ASIC和SOC 设计中有着比较广泛的应用。该仿真器是基于事件驱动的。
我们设计的 SOC 产品是通信用的芯片,样片测试已经通过,即将大规模应用于通信设备上。该芯片采用业界流行的ARM处理器作为该 SOC 芯片的CPU内核,另外还包括内嵌的 RAM,模拟锁相环,以及其它用户逻辑。该芯片采用 0.25 微米的 CMOS 工艺,能运行于 70MHz 频率。由流片厂家 EPSON 提供仿真模型。该模型是应用于 Verilog-XL 仿真环境下,也可以用于NC-verilog 仿真环境下。
SOC 设计与 ASIC 设计显著不同的地方在于需要协同验证(co-verification),因为 SOC具有嵌入式 CPU,要验证SOC 芯片就必须通过在 SOC 上运行程序来进行。
1.仿真环境的配置
在我们的设计中,在逻辑验证阶段(即所谓Pre-simulation)和后仿真阶段(Post-simulation)都采用Verilog-XL,与此同时,用Cadence的Signalscan来观察仿真波形,分析时序。在仿真之前,必须将ARM的仿真模型编译到Verilog-XL的仿真环境中。
EPSON 提供的有关 ARM的仿真信息包括一个C仿真模型,模拟ARM的行为,能仿真指令的执行,功能类似于 ISS(指令集仿真器),文件后缀为“*.so”,是由 C/C++语言编译器生成;还要有时序信息,是SDF格式,用来模拟CPU接口信号时序,这包括 best case,typical
和 worst case情况下的时序信息;另外还提供了verilog语言编写的 ARM模型的“外壳”,把ARM模型引入到我们的SOC 设计中,作为 SOC设计中的一个子模块。不论在RTL阶段和门级网表(gate level)阶段,都用这个verilog文件。
EPSON 还提供了管理该仿真模型的应用程序,名为 ModelGen,ARM 的 C 仿真模型就是通过它调入我们的仿真环境中。
在启动Verilog-XL之前,在仿真之前,必须将ARM的仿真模型编译到Verilog-XL的仿真环境中。方法是在verilog_xl_setup设置文件中配置ModelGen的启动路径以及ARM仿真模型的路径,启动Verilog-XL后,在仿真时所需的ARM的信息都编译到仿真环境下,包括ARM的 C 仿真模型,SDF文件也反标到(back-annotation)我们的设计中。
2.SOC设计流程
在SOC 设计过程中,仿真作为极为重要的环节来进行。在仿真时基于这样的一个考虑,就是能模拟我们的 SOC 芯片的实际运行情况。因此在确定仿真策略时,将需要在 ARM 中运行的测试程序作为数据放在SDRAM仿真模型中,就像芯片的实际运行一样,从SDRAM
中读取指令,在ARM中执行指令。芯片复位后就能自行下载程序,执行程序。因此该芯片的测试激励(verilog 语言编写)就很简单,仅需要个上电复位过程,当然还需要芯片的外围仿真模型以保证系统的完整性。
在 EPSON 的厂家流程中(见图 1),Verilog-XL作用不仅在于仿真验证设计的正确性,还将用来产生在芯片生产过程中所需的功能测试向量,这个测试向量是EPSON 自己定义的格式(*.apf文件),它来自用Verilog-XL仿真得到的波形(VCD 格式)。
在该设计的 verilog 描述综合得到门级网表后,将进行后仿真阶段(post-simulation)仍要进行两类仿真,一是“门级前仿真”,它是将网表加上自己用 EDA 工具生成的 SDF 文件进行仿真,保证综合前后的设计一致性,同时也用PrimeTim(静态时e 序分析工具)和Fomality
(形式验证工具)来验证时序和功能一致性,但仍以 Verilog-XL 仿真结果为主;在厂家做完layout后,用实际产生的SDF文件来做“门级后仿真”,做法与“门级前仿真”一样。
在后仿真阶段分析时序时,要充分利用 Signalscan 工具,并结合 PrimeTime,对 layout前后的网表的critical timing path以及时钟信号进行分析,比如可以用Singalscan来提取时序信息,这比在PrimeTime更具有灵活性。
实践证明,这种设计方法对于规模不大的SOC 设计是行之有效的设计方法。