在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 10471|回复: 36

[求助] 用Liberate对时序单元触发器特征化

[复制链接]
发表于 2019-3-19 09:41:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
用Liberate对时序单元特征化时,需要考虑到很多问题,但是具体应该怎么在template中设置呐?
我有看到liberate手册里有define_template -constrain这一个命令,是对它的时序进行限制的,文本这样说:
The constraint template type can be used for timing constraint (setup, hold, removal,recovery) characterization. It requires both index_1 and index_2 to be specified,
index_1 represents the range of input slews of the data signal
index_2 represents the range of input slews of the reference signal (clock, reset etc.)
请问各位,究竟应该如何考虑这个设置呐?研究很久了,对时序单元特征化就是会出现问题?

发表于 2019-3-20 10:17:52 | 显示全部楼层
和cell delay的tempelate一样,设成3x3的
 楼主| 发表于 2019-3-20 13:26:19 | 显示全部楼层


chedanzhuzhu 发表于 2019-3-20 10:17
和cell delay的tempelate一样,设成3x3的


你好,我设置的就是3X3的,而且取值就是那个delay和power中的input slew里,选取的首位和中间三个值。但是还是会报错。




  1. ERROR (LIB-52): The constraint search failed to find a solution within the search range for arc of cell:'DFM1RA_st', r_pin:'CK', r_pin dir:'r', pin:'D', pin dir:'r', type:'hold_rising rise_constraint', vector:'RRxx'. This cell will be marked as failed and the constraint data will be set to: 1.0 (see constraint_failed_value). To debug, review the saved simulation results for deck: hold_5. Possible causes include: 'constraint_delay_degrade' too large; 'constraint_delay_degrade_abstol' too large; 'constraint_check_final_state_threshold' too large; estimated search range too small (see constraint_search_bound). Modify the constraint parameters and rerun.


复制代码




  1. WARNING (LIB-70): One or more receiver cap values (-4.19986e-05) for cell: 'DFM1RA_st', pin: 'CK', r_pin: '', when: '', type: 'CCS', table: 'receiver_capacitance1_rise' are negative. Save and review the simulation output (see extsim_save_passed, extsim_save_failed, extsim_deck_dir). Make the required corrections to the Tcl and rerun.


复制代码
这是显示的错误和警告信息,对了我是考虑低电压下生成的,我在想是不是他的那三个值有什么限制要求,单元库的参数里有一项Minimum Pulse Width ,不知道是不是这个有影响的原因?

发表于 2019-3-20 16:15:30 | 显示全部楼层


亭ting 发表于 2019-3-20 13:26
你好,我设置的就是3X3的,而且取值就是那个delay和power中的input slew里,选取的首位和中间三个值。但 ...


可以考虑先仿真一下cell的逻辑功能不是不正确的,逻辑有问题也有可能出错。Possible causes include: 'constraint_delay_degrade' too large; 'constraint_delay_degrade_abstol' too large; 'constraint_check_final_state_threshold' too large; estimated search range too small (see constraint_search_bound). Modify the constraint parameters and rerun.
这边报了这个问题也有可能这些参数设置不合理,同一个constraint下选取不同hold或者setup的值cell delay是不同的,约束的太紧可能仿真器不能仿真到。
 楼主| 发表于 2019-3-20 22:50:33 | 显示全部楼层


chedanzhuzhu 发表于 2019-3-20 16:15
可以考虑先仿真一下cell的逻辑功能不是不正确的,逻辑有问题也有可能出错。Possible causes include: 'co ...


你好,我用Hspice对它进行了仿真,结果是没有问题的在低电压下,因为低电压下延时本身就是比较大,所有在template的delay,power中那个input slew的值我取的是比较大的,相应的时序上那个constrain取的值就会很大,不知道哪里出了问题。
请问还需要哪里设置什么吗?
我的template:




  1. define_template -type delay \
  2.          -index_1 {12 32 57 87 117 152 192 237 287 342 400 } \
  3.          -index_2 {0.001 0.002 0.0035 0.005 0.0065 0.008 0.0095 0.011 0.0125 0.014 0.016 } \
  4.          delay_template_11x11

  5. define_template -type constraint \
  6.          -index_1 {12 152 400 } \
  7.          -index_2 {2 52 100 }  \
  8.          constraint_template_3x3

  9. define_template -type power \
  10.          -index_1 {12 32 57 87 117 152 192 237 287 342 400 } \
  11.          -index_2 {0.001 0.002 0.0035 0.005 0.0065 0.008 0.0095 0.011 0.0125 0.014 0.016 } \
  12.          power_template_11x11



复制代码
Netlist:




  1. .subckt DFM1RA_st Q QB CK D VDD GND

  2. MP15 VDD net079 QB VDD P_12_LLRVT w=0.45u l=0.06u
  3. MP13 net079 net0124 VDD VDD P_12_LLRVT w=0.22u l=0.06u
  4. MP14 net0128 net11 net079 VDD P_12_LLRVT w=0.15u l=0.06u
  5. MP11 VDD net0124 Q VDD P_12_LLRVT w=0.45u l=0.06u
  6. MP10 VDD net0128 net0124 VDD P_12_LLRVT w=0.44u l=0.06u
  7. MP9 net0128 net050 net019 VDD P_12_LLRVT w=0.28u l=0.06u
  8. MP8 VDD net047 net019 VDD P_12_LLRVT w=0.45u l=0.06u
  9. MP7 net024 net050 net047 VDD P_12_LLRVT w=0.15u l=0.06u
  10. MP6 net024 net019 VDD VDD P_12_LLRVT w=0.15u l=0.06u
  11. MP3 VDD net050 net11 VDD P_12_LLRVT w=0.22u l=0.06u
  12. MP5 net027 D net047 VDD P_12_LLRVT w=0.41u l=0.06u
  13. MP4 VDD net11 net027 VDD P_12_LLRVT w=0.41u l=0.06u
  14. MP2 VDD CK net050 VDD P_12_LLRVT w=0.26u l=0.06u

  15. MN14 QB net079 GND GND N_12_LLRVT w=0.3u l=0.06u
  16. MN12 GND net0124 net079 GND N_12_LLRVT w=0.15u l=0.06u
  17. MN13 net079 net050 net0128 GND N_12_LLRVT w=0.15u l=0.06u
  18. MN10 Q net0124 GND GND N_12_LLRVT w=0.3u l=0.06u
  19. MN9 net0124 net0128 GND GND N_12_LLRVT w=0.29u l=0.06u
  20. MN8 net019 net11 net0128 GND N_12_LLRVT w=0.15u l=0.06u
  21. MN7 net019 net047 GND GND N_12_LLRVT w=0.29u l=0.06u
  22. MN6 GND net019 net039 GND N_12_LLRVT w=0.15u l=0.06u
  23. MN5 net047 net11 net039 GND N_12_LLRVT w=0.15u l=0.06u
  24. MN4 net044 net050 GND GND N_12_LLRVT w=0.27u l=0.06u
  25. MN2 net11 net050 GND GND N_12_LLRVT w=0.15u l=0.06u
  26. MN3 net047 D net044 GND N_12_LLRVT w=0.27u l=0.06u
  27. MN1 net050 CK GND GND N_12_LLRVT w=0.15u l=0.06u

  28. .ends DFM1RA_st


复制代码
工作情况是VDD=0.3v.
发表于 2019-3-21 08:50:36 | 显示全部楼层
看一下手册里面constraint_delay_degrade constraint_delay_degrade_abstol,constraint_check_final_state_threshold,constraint_search_bound里面有没有对低电压条件下的推荐设置值,或者改变一下extsim_option等的设置
发表于 2019-3-21 16:27:15 | 显示全部楼层
delay和power的index1设置太大了,65nm,怎么可能到几百个ns的input slew?你输入还没到50%,估计输出就已经翻转了,量出来也是个负delay。
建议缩小一千倍试试。
constraint里面index1和index2都要缩小。
 楼主| 发表于 2019-3-21 17:31:10 | 显示全部楼层


chedanzhuzhu 发表于 2019-3-21 08:50
看一下手册里面constraint_delay_degrade constraint_delay_degrade_abstol,constraint_check_final_state ...


前面几个我都是取的默认值,感觉根据手册说的,去默认值是可行的,对于exitsim_option, 我用的仿真器是spectre,所有设置为set_var extsim_option       "method=gear gmin=1e-15 gminfloatdefault=gmindc redefinedparams=ignore rabsshort=1m limit=delta save=nooutput"。问题还是没有解决调。


 楼主| 发表于 2019-3-21 21:04:57 | 显示全部楼层


lightpisces 发表于 2019-3-21 16:27
delay和power的index1设置太大了,65nm,怎么可能到几百个ns的input slew?你输入还没到50%,估计输出就已经 ...


因为我的操作情况是低电压下,所以延时应该就是比较大的,因此才考虑设置那个index1取值比较大。我刚刚试着把他们变成小的值,但是好像仍然报错,请问还有什么办法吗
发表于 2019-3-22 08:54:41 | 显示全部楼层
constraint_delay_degrade把这个设置的大一点把,默认是0.1,设成0.3试试看看能不能仿真跑过,仿真能过得话看一下仿真器在这种setup或者hold的实际delay是多少,有没有比输出lib里面的大很多,有的话就调整一下spectre的选项了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-6-3 06:13 , Processed in 0.027663 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表