什么是ETM?
上一篇讲了 abstract view,这次讲一下跟它相近的一种block model ETM,ETM (Extracted Timing Model ) 是一种包含block 时序信息的抽象模型,使用 extract_model 命令抽取。它会把每个port的timing信息都保留下来,block内部的各种信息不会保留,另外,还保留了clk to inport 的timing arc,如下图所示。
Owner做完block level后,去做top level时需要使用 block model,假如把一个block 看作一个 cell 的话,那么ETM 以及上面说的 abs view/ILM 就相当于这个cell 的lib 文件,里面能够看到这cell 边界的 timing/noise/power等信息。
例如出abstract view时时可以把power 信息整出来的,需要设置:
set_scenario_status -leakage_power true -dynamic_power true [get_scenarios -filter active]
set_app_options -name abstract.annotate_power -value true
怎么去生成ETM?
一般ETM 可以使用FC/ICC2/PT 产生,比较常用的工具时 PT,使用命令 extract_model ,可以使用-format 指定格式 .db/.lib,.db能过被大部分的S 家工具识别读取,但没法肉眼去看,如果你想肉眼去看或者使用第三方工具时可以存为 .lib
使用FC/ICC2 生成:
# Open the design, create a frame view, and set the PrimeTime options
open block.nlib:block.design
create_frame <options> ;# extract_model needs Frame for library
preparation
set_pt_options -pt_exec_path <> -work_dir ETM_work_dir \
-post_link_script <tcl script with extract_model*
variables> \
# To use StarRC for Parasitic extraction
set_app_options -name extract.starrc_mode -value true
set_starrc_options -config <starrc_config_file>
# Create the ETM and generate the ETM cell library
extract_model
一般情况下,写出来的 ETM library 保存在:
• [pwd]/ETM_Lib_work_dir/block_name/label_name/ for labelled blocks
• [pwd]/ETM_Lib_work_dir/block_name/ for non-labelled blocks
据我了解使用FC/ICC2 产生ETM 比较少见,正常都是使用PT 产生,网上有看到有人用ICC2 生成ETM 会有一些问题,ICC2产生的block的etm,clock pin的port_type属性是signal而不是clock,导致其CTS阶段没法正常长tree,另外报告report_delay_calculation -from block/output port -to receiver/IN,transition为0,在PT中使用模块的.v和.spef展开分析时序时 transition的违例非常多。所以这里推荐使用Library Manager的normal flow来替代etm moded flow。
使用PT 生成的准备工作与 流程比较多,留在下一篇来写......
这是第79篇总结,后续的文章中会涉及到 很多sta 相关的内容,包含Constraints介绍/各种Reports详解以及debug/Clock相关/CRPR/POCV等,欢迎持续关注,已关注的请点赞