objectives
列举顶层实现的必要步骤;
描述 什么是摘要 还有 摘要中包含什么
描述怎样将block 集合到top level中去;
顶层的实现
对于规模比较的大的设计:
在实现顶层设计时, blocks 可以是 design views (abstract view 摘要视图 boundary上的elements都是全的 但是内部是看不到的, 也就是说路径中 只保留了 in-reg reg-out in-out 而reg-reg 全部被隐藏起来)
或者 ETM view : 正能看到一些 time 信息和function 信息; 是foundry 提供的一些结构保密的宏单元之类的; 能够减小run time;
在设计的任何阶段 都能使用 blocks
使用完整实现的block
并行实现 block & top
ETM 模型(extracted timing mode 时序提取模型)
时序模型是从block design的数据中导出来的;
使用extract_model指令 生成; 会调用Prime-time 以及 Library Manager;
prime time 在后台完成时序模型的提取;
Library Manager 将primetime 的ETM.db 与 frame view 组合起来;
能够用来建立IP block的模型 能够将内部的细节隐藏起来;
Abstract View (摘要视图)
从设计视图中导出的部分网表视图;
比设计视图 要小很多,因此在实现顶层设计时 能够更好的执行;
能够包含以下附加的信息:
clock exceptions
crosstalk data
Power information
signal EM data
生成 Abstract view
create_abstract -read_only
#使用-read_only top 只能看不能改
# 识别 保留 所有有效的mode 下的接口逻辑
# 保留那些在接口逻辑中 有时序约束的pins
# 保留所有的Corner 的 RC 参数;
# 保存和接口逻辑相关的 UPF 的信息
FRAME view
FRAME view 是布线需要的包括virtual router需要的物理抽象视图(物理摘要视图)
你需要为每一个 子模块 创建一个frame view;
create_frame
# 默认
在摘要中保存所有必要信息
在顶层: 指定block的Reference Library;
在所有的block的 abstract view 和 frame view 都生成之后,将sub-blcok的设计库 包含进 顶层的 参考库列表中:
create_lib TOP.dlib -tech mytech.tf \
-ref_libs "stdcell.ndm macros.ndm ... MYBLOCKS/A.dlib ..."
级联的参考库列表
默认 link_block 使用TOP-block的库去link 所有 top 和block 的cells; 但是可能 TOP 的reference lib 和 Block的reference lib 是不一样的
最好是使用 原始的 block 的reference lib list;
create_lib TOP.dlib -tech mytech.tf \
-ref_libs "stdcell.ndm macros.ndm ... MYBLOCKS/A.dlib ..."
foreach DESIGN {A B C} {
set_attribute [get_libs ${DESIGN}.dlib] use_hier_ref_libs true
}
在层次设计中的 reference library
对于那些有很多层次的设计, 你需要为他们设置级联的reference library;
如图所示: MID.dlib 包含独立的 stdcell 库 宏单元库 以及级联的BOT.dlib;
linking the sub-blcoks
在层次设计流程中, 可能需要加载不同实现阶段的设计,不同的设计团队 有不同的命名标准.
在保存block时 使用lables 标记block所属的实现阶段.
save_block -as myBlock/placed
#OR
save_blcok -lable placed
默认 ICC II只会link那些和TOP有着相同lable的blocks;
使用set_lable_switch_list 去修改默认link的选项.
set_lable_switch_list [-references {list_of_name }] {list_of_lable}
# 当然上述的list_of_name ,list_of_lable 是有优先级的
# example:
set_lable_switch_list \
{route_opt clock_opt palce_opt}
set_lable_switch_list -references {gpu} {eco}
# 当link GPU block时 仅会搜索 gpu /eco
# 然后才会回到默认的流程 gpu / <top lable name >
在顶层 reporting
#验证你拥有正确的 摘要视图
report_abstract
# 将block 级的(更低层次的)balance point的信息 传递到顶层
promote_clock_data -balance_points
# 如果你应用在top层的clock exception是包含block 的balance points 的信息
很多属性存在是为了queries in a hierarchical design
在linking之后 选择Abstract /design and lables
在link 之后 你可以改变 独立的 实例或参考到design view或者 abstract view,并为他们指定lable
#将指定的cell 改成design view
change_abstract -view design -cells I_ADD_0
# switch to the abstract with lable cts for a reference
change_abstract -view abstract -lable cts -reference ADD
check design
在顶层做PR之前 也需要check ;
check_hier_design -stage pre_placement