微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > 懂ELC建库的大神们,再次求教!

懂ELC建库的大神们,再次求教!

时间:10-02 整理:3721RD 点击:
本来打算自己用表征以下标准单元,验证以下里流程,现在出现如下问题,无法进行下去。
elc> source step1.tcl
Database : foo is now opened
set_var EC_SPICE_SIMPLIFY = 1
set_var EC_HALF_WIDTH_HOLD_FLAG = 1
set_var EC_SIM_NAME = spectre
set_var EC_SIM_TYPE = spectre
set_var EC_SPICE_SUPPLY1_NAMES = VDD
set_var EC_SPICE_SUPPLY0_NAMES = VSS
==== Simplify Mode ====
MODEL FILE: model.m ( #size = 233187 )
Reading MODEL: NCH
Reading MODEL: PCH
Reading MODEL: NCHMISin SUBCKT: NCH_MIS
Reading MODEL: PCHMISin SUBCKT: PCH_MIS
SUBCKT FILE: model.m ( #size = 233187 )
Reading SUBCKT:NCH_MIS
Reading SUBCKTCH_MIS
SUBCKT FILE: NANDX1.scs ( #size = 631 )
Reading SUBCKT:NAND2X1
Expanding SUBCKT:NAND2X1
Writing : foo.ipdb/NAND2X1.design
Writing : foo.ipdb/NAND2X1.design/body/path
Writing : foo.ipdb/NAND2X1.design/body/instance
Writing : foo.ipdb/NAND2X1.design/body/net
Writing : foo.ipdb/NAND2X1.design/boundary/port
Writing : foo.ipdb/NCH.device
Writing : foo.ipdb/NCH.device/boundary/port
Writing : foo.ipdb/PCH.device
Writing : foo.ipdb/PCH.device/boundary/port
Reading : foo.ipdb/NAND2X1.design
==============================
DESIGN : NAND2X1
==============================
----------------------------------
AB:Y
----------------------------------
D0000:R1:F: DELAY(A)
D0001:R0:1: POWER(A)
D0002:F1:R: DELAY(A)
D0003:F0:1: POWER(A)
D0004:1R:F: DELAY(B)
D0005:0R:1: POWER(B)
D0006:1F:R: DELAY(B)
D0007:0F:1: POWER(B)
----------------------------------
=> 8 vectors generated
Writing : foo.ipdb/NAND2X1.design/simulate/spec
Writing : foo.ipdb/NAND2X1.design/simulate/subckt
Writing : foo.ipdb/NAND2X1.design/boundary/port
Writing : foo.ipdb/NAND2X1.design/body/type
================================
stimulus generationsummary
================================
Name#MOS#DVEC#RVEC
----------------------------------------
NAND2X1480
----------------------------------------
80
Reading setup file : setup.ss
elc> db_gate
==============================
DESIGN : NAND2X1
==============================
DESIGN ( NAND2X1 );
//=================
//PORT DEFINITION
//=================
INPUT A ( A );
INPUT B ( B );
OUTPUT Y ( Y );
SUPPLY0 VSS ( VSS );
SUPPLY1 VDD ( VDD );
//===========
//INSTANCES
//===========
NAND ( Y, A, B );
END_OF_DESIGN;

elc> db_close
Database : foo is closed
elc> source step2.tcl
Database : foo is now opened
set_var EC_SIM_USE_LSF = 1
set_var EC_SIM_LSF_CMD =
set_var EC_SIM_NAME = spectre
set_var EC_SIM_TYPE = spectre
set_var EC_SPICE_SUPPLY1_NAMES = VDD
set_var EC_SPICE_SUPPLY0_NAMES = VSS
set_var EC_HALF_WIDTH_HOLD_FLAG = 1
DESIGNPROCESS#IDSTATUSIPDB
-------------+-------------+----------+--------------+-----------
[WARNING(db_spice)]No spice simulation to do, please check the cell/process list for any error
Database : foo is closed
Memory : 3.00M
Time: 0.54 (user), 0.02 (sys), 0.56 (cpu), 1772.71 (real)
貌似意思是没有仿真可以可以做,可是确实已经生成了vector,这是foo.ipdb中的spec文件
DESIGN(NAND2X1) + REFERENCE(NCH,PCH);
PORT(A) + DIRECTION(INPUT) + NET_NUMBER(0);
PORT(B) + DIRECTION(INPUT) + NET_NUMBER(1);
PORT(Y) + DIRECTION(OUTPUT) + LOGIC(~(A&B)) + FALL(-NAN,-NAN) + NET_NUMBER(2);
PORT(VDD) + DIRECTION(INPUT) + SUPPLY1 + BULK + NET_NUMBER(3);
PORT(VSS) + DIRECTION(INPUT) + SUPPLY0 + BULK + NET_NUMBER(4);
ARC(A:Y) + NEGATIVE_UNATE + ONE_STAGE
+ TRAN(10:01)
+ TRAN(01:10)
+ USE(D0000,D0002);
ARC(B:Y) + NEGATIVE_UNATE + ONE_STAGE
+ TRAN(10:01)
+ TRAN(01:10)
+ USE(D0004,D0006);
VECTOR(R1D10) + ID(D0000) + MID(MD0000) + DELAY(A) + TARGET(Y);
VECTOR(R0H10) + ID(D0001) + MID(MP0001) + POWER(A);
VECTOR(F1U10) + ID(D0002) + MID(MD0000) + DELAY(A) + TARGET(Y);
VECTOR(F0H10) + ID(D0003) + MID(MP0001) + POWER(A);
VECTOR(1RD10) + ID(D0004) + MID(MD0004) + DELAY(B) + TARGET(Y);
VECTOR(0RH10) + ID(D0005) + MID(MP0005) + POWER(B);
VECTOR(1FU10) + ID(D0006) + MID(MD0004) + DELAY(B) + TARGET(Y);
VECTOR(0FH10) + ID(D0007) + MID(MP0005) + POWER(B);
END_OF_DESIGN;
是软件破解失败的问题,还是我做错了哪一步?求教了

ETS版本10.1 eetop上下载的。

db_spice没有运行吧

运行过啦

请问楼问题解决没有,我也是遇到和你相同的问题,可否将你的elc config 发给我看看,可以的话发到我的邮箱msr2573@163.com ,想进一步讨论一下

你的步骤不是很标准,所有的环境向量放到elccfg文件里,命令里面只执行操作,ELC会自动到elccfg里面找那些环境向量。
另外麻烦检查下你的model文件是否齐全。

检查你的LD_LABRARY_PATH指向的路径包含libsh.so,还是libeh.so样的文件

之前问题解决了,忙着后面的事情,没有分享以下。把elccfg里面的PROCESS="typical"去掉就可以了,虽然不知道是为什么,但也不管了,现在除了不能并行仿真,以及不能给以后的库添加新的cell以外,基本什么大碍了。
下面是elccfg文件内容
SETUP="setup.ss";
#PROCESS=”typical”;
SUBCKT="sample.scs";
DESIGNS="DRIVER DFFRXL";
MODEL="model.m";
不过现在验证功耗时发现时序元件的功耗表很不精确,不知道有人分析过没的,一起讨论。

另外,elc建库的流程在《数字VLSI芯片设计- erik brunvand 著》这本书中写的很详细了,我也主要是参考他的脚本。

elc建时序元件功耗表的问题:
最近严重怀疑elc的对非线性功耗表建模的精准程度,主要问题出现在时序元件。由于cdnshelp中没有给出elc详细的功耗计算方式,所以只能查看 synopsys的liraray compiler 和 power compiler的帮助文档。liberty格式中对触发器定义的功耗类型虽然elc能产生对应的表,但其数值表示怀疑。比如说ck端的internal power 在library compiler中定义的是输出Q不变的情况下,由时钟产生的cell内部功耗,在ic5141中跑瞬态仿真时,就是VDD电流在输出Q不变时断内的电流波峰取积分乘电压得到。这个值与表中的值差别甚大。

问一下,跑elc时需要的analog extracted这一项是如何得来的?用calibre可以提吗

elccfg是这样的
# Setup stuff
SETUP = "/home/xiaole/xiaole_elc/setup.ss"
#PROCESS = "typical"
SUBCKT = "/home/xiaole/xiaole_elc/test.scs"
MODEL = "/home/xiaole/xiaole_elc/xh035/mos/allscs.scs"
然后在step1的时候出现下面的错误
"ERROR(db_prepare)]can not open setup file : ""/home/xiaole/xiaole_elc/setup.ss"
不知道是怎么回事,求大神帮忙

强顶

jiawoQQ ,zan tao lunyixia ba,254530108

小弟最近在学习elc,有个地方卡住了,想请教一下。
就是spectre的库文件*.scs里面有section,我如何在elc里面设置选择哪个section?
如果不设置section的话,在step2的时候,spectre仿真会报错,不知道小编有没有遇到这个问题?

LD_LABRARY_PATH 在哪里设置啊?

同问,不知道解决了没有啊:)

也遇到了一样的问题,请问最后是怎么解决的,setup.ss这个文件该怎么写

请问大家 可以提供一份setup.scs模板吗?

挖个坟。你的setup文件读的是setup.ss,里面定义的process应该是slow吧,然而后面的process却是typical,不匹配肯定不能仿啊。另外环境变量写到脚本里没问题,

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top