利用XA和VCS进行存储器的功能验证


李 智Steven_li@smics.com

陈晓光Catherine_cxg@smics.com

中芯国际集成电路制造(上海)有限公司

摘要

对于存储器的功能验证一般是只做SPICE仿真,观察输出向量和波形的正确性,但这种方式耗时耗力。同时,对于嵌入式存储器,通常需要提供Verilog 模型供SOC设计者使用。如何保证Verilog 模型的功能描述和实际电路的行为完全一致也是一个重要的验证项目。本文主要介绍了我们在存储器编译器的验证流程中,如何通过XA和VCS的结合使用,有效快速的解决了上述问题。
关键词: XA、VCS、存储器、编译器、电路网表

Abstract

We usually perform SPICE simulation to observe the output vectors and waveforms to verify the memory’s functionality. But, this is both time-consuming and resource intensive. We also need to provide Verilog behavior model of the embedded memory for the SOC designers. It is very important to ensure that the Verilog model functional descriptions fully match that of the actual circuit.
This paper provides an example on resolving afore mentioned issues using XA and VCS in our memory verification flow.
Keywords: XA, VCS, memory, compiler, circuit netlist

1. XA验证简介

XA是Synopsys公司的一款精确高效、应用简单的晶体管级仿真工具。XA可以直接读取SPICE网表并支持HSPICE、ELDO、SPECTRE的格式,模型和命令。XA支持前仿网表和后防网表在全芯片,嵌入式存储器以及比较器,数模转换器,PLL等电路中的仿真应用。

2. XA和VCS在存储器编译器的功能验证流程

2.1存储器的传统功能验证方式

在存储器编译器的开发和更新的过程中,对存储器的功能验证是要频繁进行的。

图1 _传统功能验证方法和流程

传统的功能验证是对存储器的实际电路进行网表的提取,然后用HSPICE或者HSIM进行仿真,再由工程师去检查仿真的波形文件,看逻辑和功能是否正确。仿真一个大的存储器,HSPICE不能处理,HSIM也要耗时几个小时。而存储器编译器的功能验证需要去验证不同的子单元相互组合组成的存储器,一套编译器至少需要验证几十个实际电路。在没有任何问题的情况下,对40个电路的验证,HSIM工具的运行就至少需要四天的时间。HSIM没有与其他文件形式相比对的功能,靠肉眼去检查则容易有遗漏,甚至有错误可能会看不出来。这样的验证方法既耗时,又很难完全保证验证的准确性。

2.2 XA和VCS结合的验证方式的产生和验证过程

以65纳米存储器编译器为例,我们开发了六种编译器。 同时,这六种存储器编译器又会按照地址和字宽的不同从而可以产生64到512K位单元的存储电路。对如此多的实际电路,如果是由工程师人工检查,那将是非常耗时和枯燥的,而且极易产生错误。
为了解决这一问题,我们采用了XA和VCS结合使用的方案进行功能仿真。用此方案以及一些脚本的使用,使XA的运行实现自动化。经实践,在验证一套编译器时,运行四十个电路网表和Verilog 模型的仿真,只需要一天左右的时间,和HSIM相比,大概节约了50%到70%的时间。

2.2.1 XA仿真工具的优势和特色

图2_ XA的特色

XA具有一系列的优势和特色,例如:简单的命令行设置,拓扑结构识别,层次识别,器件识别,RC 优化,阵列的优化,仿真的优化,多等级技术 , Verilog-A解决方案,多线程解决方案,SPICE模式等。

2.2.2 XA功能验证过程

由编译器产生的电路网表和Verilog模型通过脚本的处理,自动生成对应的XA仿真激励文件和Verilog测试文件,然后运行VCS ,运行VCS的结果可以检查Verilog 模型描述的功能是否正确。然后XA运行激励文件生成仿真的结果和VCS运行向量文件结果进行对比,如果输出一致,则说明验证的电路功能 和Verilog 模型功能描述是一致的。同时XA运行可生成*. fsdb0文件,将提供XA仿真的输入输出波形。
功能验证过程示意图:

图3 _XA和VCS功能验证过程示意图

首先由script file1读入编译器生成的Verilog模型和电路网表文件,根据电路网表文件和Verilog 模型中对信号及功能的描述产生仿真激励文件*.sp,testbench测试文件 t_*.v,向量名称文件vec_title_*.txt。

图4 _生成XA激励文件部分脚本

这一部分脚本中可以看到,生成的XA激励文件和HSPICE激励文件结构相似,首先激励文件要包含运行的SPICE模型库:图示中(1)部分;其次包含电路网表文件:图示中(2)部分; 还要包含XA和VCS结合验证所需的向量文件:图中(3)部分;另外图中(4)部分就是应用XA需要设置的一些参数和格式。
.opt XA_CMD=”set_sim_level -level 3″
.opt XA_CMD=”set_ccap_level -level 3″
.opt XA_CMD=”set_waveform -format fsdb”
.opt XA_CMD=”load_vec_file –file ${cell_line_mem}.vec”
下面简单介绍一下这些设置的意义和类别。
(1)set_sim_level -level 3:设置仿真的速度和仿真的类别,设置是从3到7的任意整数。
其中:
3:应用于数字电路,存储器,低灵敏模拟,混合信号,全芯片电路的功能和时序的仿真。
4:应用于对整个电路功能,时序,功耗的仿真 , 尤其是小电流和低电压情况时使用。
5:用于精确的时序,功耗的仿真或者是模块的特性分析。
6:应用于SPICE的精确度级别的仿真 ,主要用于对整个电路的时序,功耗的仿真或者是单个单元的特性分析。
7:用于比较小的设计(一般小于1000个元器件)或者一个大的设计中的某一块,或者是对单个器件的模型进行仿真。
(2)set_ccap_level -level 3:是设置耦合电容的影响,设置从1到7。其中1是最快的,7是最精确的。set_ccap_levelde默认设置一般是和set_sim_level一致。如果没有set_sim_level的设置,则默认为3。
(3)set_waveform -format fsdb:设置输出的文件格式,fsdb是指输出文件格式为*.fsdb。另外还有其他的格式如:out , wdb , wdf , tr0 , psf。fsdb也是默认输出格式。另外也可以在运行命令时加:set_waveform -format wdf 则输出文件为wdf格式。
(4)load_vec_file –file ${cell_line_mem}.vec:运行XA时需要load进来的向量文件,也是VCS产生的输出文件。
脚本1还产生了运行VCS 的testbench以及自动运行 VCS的文件*.txt,例如*.txt内容为:
Verilog mem_vtb/tS65NLLHS1PH_X256Y2D128_BW.v
Verilog mem_vtb/tS65NLLHS1PH_X256Y4D64_BW.v
则说明,脚本1产生了两个testbench放在mem_vtb文件中:tS65NLLHS1PH_X256Y2D128_BW.v,tS65NLLHS1PH_X256Y4D64_BW.v。
在命令行执行:
source /home/sge/source/ncVerilog.setup
source *.txt
程序自动运行VCS,输出为向量文件经过脚本2处理后成为完整的向量文件*.vec,也就是在XA激励文件中被调用的“load_vec_file –file ${cell_line_mem}.vec ”中的${cell_line_mem}.vec。
这一部分脚本的运行,既保证了生成的各个文件的正确性,也节省了时间。

2.2.3 运行XA

在脚本1中产生出一个名字为run的文件,内容例如是:
xa S65NLLHS1PH_X256Y2D128_BW.sp -o S65NLLHS1PH_X256Y2D128_BW
xa S65NLLHS1PH_X256Y4D64_BW.sp -o S65NLLHS1PH_X256Y4D64_BW
这是运行XA的基本的运行命令:-o 后面接的是输出文件的名字。在文件名字前也可以加文件的存储路径:-o 输出路径/输出文件。多个命令可以自动顺序的运行,此处节约了大量的时间人力。
还有一些其它的命令语句可以选择,例如:

XA运行的输出结果 包含在两个文件*.err0和*.fsdb中其中,有错误的输出报告内容如下:

图5 _ 有错误的输出报告

如图所示输出q是F(fail),则说明XA和VCS验证结果是有错误。如图中所示,期望的结果是0(low),但仿真的结果是H(high),这说明电路网表有误。
*.err0期望的报告结果内容如下:

图6 _ 期望的输出报告

所有的输出q都是p(pass),且没有错误(no error),说明XA和VCS验证结果是一致的。也说明了电路网表和Verilog 模型的一致性。
*.fsdb的波形如下:

图7 _输出报告波形文件*.fsdb

3. 结论及展望

采用XA与VCS相结合的仿真方案,能够自动对网表进行整合并生成仿真所需的配置文件,实现了仿真的简单化,保证了功能验证的正确性,并极大提升了仿真的效率,节约了大量的时间以及人力。XA与VCS相结合的仿真方案不仅适用于存储器编译器的电路功能与Verilog模型的功能描述一致性的验证,同样适用于其它模拟IP的功能验证。

4. 感谢

感谢领导的支持,帮助以及提出宝贵意见,感谢同事的大力合作和共同努力。在工具的使用过程中,得到了Synopsys技术支持团队的大力支持,借此机会深表感谢。

5. 参考文献

【1】 xa_user.pdf
【2】 xa_cmd_ref.pdf
【3】 vcs_user.pdf