使用ncx生成标准单元lib的问题
在启动ncx的时候,我设置的主要控制语句如下,
##template options
set input_template_dir config
set template_suffix .opt
set precision 5
set farm_type noFarm
##timing model options
set timing true
set ccs_timing false
set compact_timing false
set nldm true
##power model
setccs_powerfalse (不想让他生成ccs模型)
setcompact_powerfalse
setpowertrue
setnlpmtrue
setvariation_leakagetrue
我不想让他生成ccs power的东西,可是我即使这样设置了,工具竟然还是认为我用了ccs power,log文件有以下信息:
Timing model acquisition options:
ccs_timing: false (user)
compact_timing: false
nldm: true (user)
capacitance: true
delay: true
constraint: true
shpr_constraint: false
design_rules: false
max_capacitance: true
max_transition: true
variation: false
mismatch: false
Power model acquisition options:
ccs_power: true (user)( 我设置的明明是false,工具竟然认为是我设置了true)
compact_power: false (user)
nlpm: true (user)
variation_leakage: true (user)
为什么工具会把false认为是true呢,我很不解啊,这样导致我做出来的lib是下面的样子:
cell ("INVX1_R") {
cell_footprint : "inv";
area : 3.394800;
cell_leakage_power : 6.275513e+01;
leakage_power () {
when : "A";
value : "48.82281";
}
leakage_power () {
when : "!A";
value : "62.75513";
}
pin (A) {
direction : "input";
fall_capacitance : 0.002320;
capacitance : 0.002400;
rise_capacitance : 0.002490;
related_power_pin : "VDD";
related_ground_pin : "VSS";
}
pin (Y) {
direction : "output";
function : "(!A)";
related_power_pin : "VDD";
related_ground_pin : "VSS";
internal_power () {
related_pin : "A";
rise_power ("energy_template_7x7") {
index_1("0.028, 0.044, 0.076, 0.138, 0.264, 0.516, 1.02");
index_2("0.00079, 0.002054, 0.00474, 0.010112, 0.020856, 0.042186, 0.08532");
values("0.00335, 0.00341, 0.00348, 0.00355, 0.00355, 0.00341, 0.00330", \
"0.00333, 0.00338, 0.00343, 0.00346, 0.00350, 0.00341, 0.00341", \
"0.00336, 0.00337, 0.00337, 0.00343, 0.00338, 0.00340, 0.00313", \
"0.00351, 0.00350, 0.00347, 0.00341, 0.00337, 0.00322, 0.00318", \
"0.00393, 0.00383, 0.00378, 0.00368, 0.00345, 0.00332, 0.00318", \
"0.00486, 0.00468, 0.00443, 0.00429, 0.00398, 0.00348, 0.00312", \
"0.00701, 0.00679, 0.00643, 0.00589, 0.00544, 0.00484, 0.00381");
}
fall_power ("energy_template_7x7") {
index_1("0.028, 0.044, 0.076, 0.138, 0.264, 0.516, 1.02");
index_2("0.00079, 0.002054, 0.00474, 0.010112, 0.020856, 0.042186, 0.08532");
values("-0.00039, -0.00034, -0.00026, -0.00020, -0.00017, -0.00015, -0.00013", \
"-0.00045, -0.00037, -0.00031, -0.00023, -0.00018, -0.00016, -0.00014", \
"-0.00046, -0.00041, -0.00034, -0.00027, -0.00021, -0.00016, -0.00014", \
"-0.00035, -0.00034, -0.00034, -0.00026, -0.00022, -0.00018, -0.00015", \
"-1.79630e-05, -4.14918e-05, -8.39442e-05, -0.00015, -0.00017, -0.00015, -0.00012", \
"0.00094, 0.00081, 0.00060, 0.00038, 0.00018, 8.24213e-05, 3.78136e-06", \
"0.00304, 0.00277, 0.00236, 0.00192, 0.00135, 0.00090, 0.00057");
}
}
timing () {
related_pin : "A";
timing_type : "combinational";
timing_sense : "negative_unate";
cell_rise ("delay_template_7x7") {
index_1("0.028, 0.044, 0.076, 0.138, 0.264, 0.516, 1.02");
index_2("0.00079, 0.002054, 0.00474, 0.010112, 0.020856, 0.042186, 0.08532");
values("0.02584, 0.03272, 0.04699, 0.07512, 0.13114, 0.24071, 0.46218", \
"0.03055, 0.03786, 0.05210, 0.08003, 0.13552, 0.24625, 0.46814", \
"0.03740, 0.04692, 0.06271, 0.09080, 0.14611, 0.25556, 0.47869", \
"0.04710, 0.05934, 0.07981, 0.11129, 0.16732, 0.27650, 0.49795", \
"0.06257, 0.07747, 0.10461, 0.14671, 0.21015, 0.31948, 0.53952", \
"0.08662, 0.10584, 0.13994, 0.19462, 0.27915, 0.40705, 0.62741", \
"0.12452, 0.15011, 0.19279, 0.26424, 0.37598, 0.54689, 0.80341");
}
rise_transition ("delay_template_7x7") {
index_1("0.028, 0.044, 0.076, 0.138, 0.264, 0.516, 1.02");
index_2("0.00079, 0.002054, 0.00474, 0.010112, 0.020856, 0.042186, 0.08532");
values("0.02265, 0.03409, 0.05974, 0.11070, 0.21495, 0.41772, 0.82348", \
"0.02702, 0.03575, 0.05954, 0.11078, 0.21235, 0.41863, 0.82585", \
"0.03492, 0.04500, 0.06319, 0.11043, 0.21281, 0.41443, 0.82946", \
"0.04622, 0.05927, 0.08083, 0.11752, 0.21217, 0.41543, 0.82398", \
"0.06279, 0.07869, 0.10851, 0.15240, 0.22625, 0.41342, 0.82523", \
"0.08633, 0.10748, 0.14505, 0.20607, 0.29696, 0.44302, 0.82255", \
"0.12497, 0.15137, 0.20014, 0.27750, 0.39976, 0.58539, 0.88072");
}
cell_fall ("delay_template_7x7") {
index_1("0.028, 0.044, 0.076, 0.138, 0.264, 0.516, 1.02");
index_2("0.00079, 0.002054, 0.00474, 0.010112, 0.020856, 0.042186, 0.08532");
values("0.01949, 0.02396, 0.03244, 0.04911, 0.08285, 0.14837, 0.28144", \
"0.02246, 0.02802, 0.03744, 0.05411, 0.08721, 0.15234, 0.28632", \
"0.02624, 0.03350, 0.04573, 0.06425, 0.09729, 0.16249, 0.29356", \
"0.03046, 0.03984, 0.05574, 0.08051, 0.11706, 0.18223, 0.31414", \
"0.03515, 0.04753, 0.06878, 0.10134, 0.15114, 0.22277, 0.35449", \
"0.03714, 0.05365, 0.08196, 0.12656, 0.19227, 0.29014, 0.43629", \
"0.03284, 0.05464, 0.09252, 0.15113, 0.24021, 0.37330, 0.57102");
}
fall_transition ("delay_template_7x7") {
index_1("0.028, 0.044, 0.076, 0.138, 0.264, 0.516, 1.02");
index_2("0.00079, 0.002054, 0.00474, 0.010112, 0.020856, 0.042186, 0.08532");
values("0.01512, 0.02028, 0.03327, 0.06206, 0.12032, 0.23328, 0.46434", \
"0.01865, 0.02438, 0.03478, 0.06159, 0.11961, 0.23212, 0.46242", \
"0.02460, 0.03139, 0.04393, 0.06414, 0.11821, 0.23212, 0.46131", \
"0.03367, 0.04246, 0.05804, 0.08172, 0.12296, 0.23061, 0.46180", \
"0.04936, 0.05991, 0.07972, 0.11020, 0.15833, 0.23970, 0.45796", \
"0.07321, 0.08795, 0.11355, 0.15430, 0.21547, 0.31015, 0.47443", \
"0.11058, 0.13279, 0.16830, 0.21995, 0.29923, 0.42272, 0.61351");
}
output_current_rise () {
vector ("CCS_DRV_TEMPLATE_0") {
reference_time : 3.026798;
index_1("0.02800");
index_2("0.00079");
index_3("3.0357854, 3.0374452, 3.0443794, 3.0469711, 3.0484373, 3.0487599, 3.0526144, 3.0565505, 3.0588574, 3.0645048, 3.0696982, 3.0765186, 3.0887193, 3.1183014");
values("1.68924e-02, 1.68924e-02, 2.99000e-02, 3.17748e-02, 3.50523e-02, 3.76162e-02, 3.61315e-02, 2.98632e-02, 2.50459e-02, 1.35519e-02, 8.50912e-03, 4.74744e-03, 1.62783e-03, 4.86787e-04");
}
vector ("CCS_DRV_TEMPLATE_0") {
reference_time : 3.026798;
index_1("0.02800");
index_2("0.00205");
index_3("3.0368860, 3.0484919, 3.0497922, 3.0519920, 3.0524021, 3.0586573, 3.0626448, 3.0673659, 3.0707563, 3.0777611, 3.0839166, 3.0947489, 3.1080516, 3.1324579");
values("2.83487e-02, 6.15760e-02, 6.59870e-02, 6.58823e-02, 6.69756e-02, 6.17118e-02, 5.63202e-02, 4.71480e-02, 3.96622e-02, 2.49392e-02, 1.77338e-02, 8.99646e-03, 3.85957e-03, 1.93035e-03");
}
vector ("CCS_DRV_TEMPLATE_0") {
reference_time : 3.026798;
index_1("0.02800");
index_2("0.00474");
index_3("3.0383826, 3.0485049, 3.0505167, 3.0527946, 3.0601954, 3.0677680, 3.0733082, 3.0788485, 3.0929243, 3.1130111, 3.1357985, 3.1657605, 3.2069642");
values("4.55633e-02, 8.13139e-02, 8.94632e-02, 9.22421e-02, 8.89058e-02, 8.46290e-02, 8.02808e-02, 7.49023e-02, 5.44505e-02, 2.62192e-02, 1.12204e-02, 3.23514e-03, 1.65962e-04");
}
vector ("CCS_DRV_TEMPLATE_0") {
reference_time : 3.026798;
。后面还有很长一大串CCS的东西,前面的算正常的,我怎么设置才能不让他弄出这些CCS的东西呢,东西出来呢?高手帮忙解决下我这个困惑吧
关注!
小编请问,这ncx工具在哪下载的,或者能不能上传一下?
坛子里就有啊
求关注啊!看来还是去看下signalstrom怎么用,这个搞不好
有个问题请教:
ncx是不是从spice仿真数据中提取lib库数据?
如果是,我缩扣出来的数据跟FAB给的工艺文件差距有多大?抠出来的数据是否能保证我综合&pr的准确性,
期待回复
ncx是从spice仿真数据中提取lib库数据的,是和hspice配合使用,其实就是抽取hspice的结果,精确不精确,就是hspice的精确度吧,不过我做出来的差了不少(漏功耗的值),用的calibre抽取的带寄生参数的spice网表,也可能是因为提取的不够精确啊,反正fab厂给的数据一一般比较悲观,可能他们考虑的更多吧
请问小编,config和.opt包含了什么内容,可以注释下吗?最近也在研究.lib的提取,但是一直不成功。谢谢了哈!
原因是,你没有把 compact false掉,加上这个就好了
问题已解决
把variation_leakage: true 改成 false。就干净了
magma公司的siliconSmart就是提取lib 的。
使用相对比较简单。
呵呵,知道这个工具,也一直在找,这不是找不到吗,只能用ncx了
坛子里有个siliconSmart下载 但是可能没有license
是呀,2010的,我下载过了,没lic,用不了哎,你可不可以共享一下哦
請問有ncx user guide可以分享嗎
我怎么没找打siliconsmart下载资源啊?求告知,不胜感激!
小编好:
我也在用ncx做lib。我是想把一个新做的触发器放到原来的库中,但是用ncx跑完后,发现所测量到的功耗power有负值。如下:
internal_power () {
rise_power ("power_inputs_1") {
index_1("0.018000, 0.032000, 0.060000, 0.108000, 0.198000, 0.362000, 0.660000");
values("-0.000392, -0.000395, -0.000398, -0.000399, -0.000400, -0.000400, -0.000399");
pin (Q) {
direction : "output";
function : "IQ";
max_capacitance : 0.099487;
related_power_pin : "VDD";
related_ground_pin : "VSS";
internal_power () {
related_pin : "CK";
rise_power ("power_outputs_1") {
index_1("0.018, 0.032, 0.06, 0.108, 0.198, 0.362, 0.66");
index_2("0.000582, 0.001372, 0.003232, 0.007613, 0.017931, 0.042237, 0.099487");
values("0.003911, 0.003673, 0.003003, 0.001269, -0.002917, -0.012673, -0.036331", \
"0.003686, 0.003439, 0.002750, 0.000994, -0.003160, -0.013116, -0.036176", \
"0.003256, 0.003008, 0.002315, 0.000564, -0.003602, -0.013529, -0.036884", \
"0.002681, 0.002419, 0.001705, -3.300000e-05, -0.004177, -0.013990, -0.037518", \
"0.001774, 0.001501, 0.000802, -0.000951, -0.005157, -0.015067, -0.038780", \
"-0.001366, -0.001370, -0.001380, -0.002450, -0.006665, -0.016513, -0.040509", \
"-0.007770, -0.007777, -0.007774, -0.007785, -0.008961, -0.018986, -0.042469");
}
最让我崩溃的是有的表格中,功耗一会儿正,一会负。不知道小编在做这个工作的时候遇没遇到这种问题。小弟不胜感谢!
我也在用,但是功耗出现了负值。
我是用想用ncx把一个新的触发器添加到原来的库中。但是程序跑完后发现测量的功耗值有负数,如下:
internal_power () {
rise_power ("power_inputs_1") {
index_1("0.018000, 0.032000, 0.060000, 0.108000, 0.198000, 0.362000, 0.660000");
values("-0.001698, -0.002434, -0.003210, -0.003840, -0.004411, -0.004881, -0.005166");
}
fall_power ("power_inputs_1") {
index_1("0.018000, 0.032000, 0.060000, 0.108000, 0.198000, 0.362000, 0.660000");
values("0.001042, 7.102657e-05, -0.000917, -0.001789, -0.002591, -0.003268, -0.003720");
让我崩溃的是,有的测量表格既有正数也有负数。不知小编有没有类似的情况。不胜感谢!
NCX 可以 提取 RAM/ROM 的 Liberty Model 吗?
大牛您好 ncx怎么生成.lib?我现在有.sp、.pex,.pxi,简单的写了一些配置文件,是生成了.lib,但是完全不对
配置文件见下:
set output_library ncx.lib
set preanalysis_opt auto
set prechar true
set simulator_type hspice
set farm_type nofarm
set output_template_dir
生成的.lib是:
library(ncx){
define(def_sim_opt,library,string);
technology("cmos")
...
input....rise:50
...
slew....rise:20;
俺是新手菜鸟,请指教,是啥问题?谢谢
结果呢?答案呢?迫切知道,高手们,指点下啊?
你这个配置文件是不是少了点什么?
仿真器的路径?seed ? net list 呢?
估计你还有把timing设置为true ,power true ,nlmp true?
学习啦……
小编,我用的是坛子里面下载的ncx200906的,在做的时候报错:--- begin flow...
retrieving LSF queue info...
Error: LSF initialization failed
Error:Unable to open file lsf.conf
万分蛋疼,不知道你的ncx怎么运行的,可以参考下不?我的license可以运行dc pt icc,hspice都没有问题,莫非是license的问题么
学习啦……
小编想请教一个问题,我也一直在跑ncx 但是跑不过,总是报错,仿真器没有运行,ncx 都需要哪些文件呢“。除了网标 模型还需要cell的测试激励文件吗,但是手册上没有谈到这个,很是郁闷
你参照demo里面的文件可以摸索出来。除了netlist, model.typ ,还需要Template File(.opt文件) 和seed library (demo 里面的test2cell.lib)
你好,我最近用NCX做特征化的时候也出现了这个问题:漏功耗出现了负值(主要是电源电压做的比较低)。想问一下,你后来问题解决了没有呢?