上一篇说了如何在FC/ICC2 产生ETM,本文说一下如何在PrimeTime 产生。说之前先之前漏说的几点:
1,PT 抽取时会把每个port的timing信息都保留下来,block内部的各种信息不会保留;
2,input port 到reg 这种path, 这段input port 与 reg CK pin 之间的 setup/hold timing arc 是会被保留的。以setup 为例,这个arc 中包含两种setup 信息,一种是input to D 的delay信息(setup arc保留最慢的delay,hold arc 保留最快的delay),一种是这个reg 的lib setup timing。。reg lib setup time是 通过data input transition(index1)和 clock input transition(index2)查表而来,所以本质上存储的还是 transition 信息;
3,input to output这种 path,会存两个delay arc,一个是两个pin 之间的最短delay arc,一个是最长 delay arc,这种arc 是input trans与output load 查出来的;
4,reg to output path 也是一样的,包含reg ck pin 到 output 的delay arc。一般情况下,对于unconstrained paths 不会抽取(比如设置了set_false_path),但是如果有以下情况也会被抽取:
• No set_output_delay -clock clock defined for the port
• set_clock_group -asynchronous relationship between the register clock and the set_output_delay -clock clock
5,此外,ETM model里还会保存很多内容,比如
Design rule(max fanout, max_transition, max_cap)与Clocks(包括create_clock和generate clock),以及Path Exceptions, case constant等信息
block 产生ETM流程:
set link_path ...
set search_path ...
read_verilog ...
read_parasitics ...
load_upf ...
read_sdc block.sdc
update_timing
set hier_modeling_version 2.0
extract_model ... -validate timing
-validate timing 会把timing 的信息打印出来,方便检查与验证
top level 读入 flow:
set link_path ...
lappend link_path mod_lib.db
set search_path ...
read_verilog top
read_db $::pt_model_dir/ETM/modname/mod_lib.db
current_design top
read_parasitics top.spef
read_sdc top.sdc
source mod_inst.pt.gz
update_timing
上面的mod_inst.pt 里面包含timing derating, timing exception on specific pins, and case analysis
生成ETM 时需要注意的几点:
1,读取Parasitics 和Constraints时,检查反标与error/warning,以免影响精度与质量;
2,注意timing 情况(report_constraint),top 是看不到block 内部timing 情况的。
如何产生NDM
对每个scn 创建 ETM 之后,需要读取物理信息frame view,生成ndm:
# Create a library work space
create_workspace -flow etm_moded AMS_BLK
# Read the physical data (frame view)
read_ndm -views frame AMS_BLK.ndm
# Read the ETMs for every scenario
read_db -mode_label m1 AMS_BLK_m1_c1.db
read_db -mode_label m1 AMS_BLK_m1_c2.db
read_db -mode_label m1 AMS_BLK_m1_c3.db
read_db -mode_label m2 AMS_BLK_m2_c1.db
read_db -mode_label m2 AMS_BLK_m2_c2.db
read_db -mode_label m2 AMS_BLK_m2_c3.db
# Check the compatibility of the libraries you read in
check_workspace
# Generate cell library
commit_workspace -output AMS_BLK_ETM.ndm