首页 / 资讯中心 / 文章详情

静态时序分析:线负载模型的选择机制

静态时序分析:线负载模型的选择机制 ★ FEATURED ARTICLE
相关阅读静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html线负载模型及其选择线负载模型仅在Design Compiler线负载模式非拓扑模式下时使用它估算了导线长度和扇出对网线的电阻、电容和面积的影响Design Compiler使用这些物理值来计算导线延迟和电路速度。半导体供应商根据其工艺的统计信息开发线负载模型。这些模型包括单位长度的面积、电容和电阻系数并且还包含一个扇出与长度的表用于估算网线的长度扇出数量决定了一个标称长度。在没有反标导线延迟的情况下Design Compiler使用线负载模型来估算网线的长度和延迟。Design Compiler根据以下优先顺序来确定使用哪个线负载模型1、由用户显式指定的模型使用set_wire_load_model命令即可使用任意一个已加载到内存的逻辑库中的线负载模型这里需要注意正如链接(link)库的详细解析一文所说link_library变量或local_link_library属性两者统称为link_path指定的逻辑库会在链接时自动加载而很多命令都会自动执行隐式链接。2、基于设计面积自动选择的模型在auto_wire_load_selection变量没有被设置为false的前提下:在进行综合时如果在target_library的第一个逻辑库存在一个线负载模型选择组(wire_load_selection)Design Compiler根据该选择组中的“单元面积-线负载模型”关系自动选择线负载模型如果逻辑中存在不止一个线负载模型选择组则逻辑库中一定同时定义了库属性default_wire_load_selectionDesign Compiler根据该默认选择组中的“单元面积-线负载模型”关系自动选择线负载模型。使用set_wire_load_selection_group命令即可使用任意一个已加载到内存且在link_path中指定的逻辑库中线负载模型选择组。3、逻辑库中的默认指定的模型在进行综合时如果在target_library的第一个逻辑库中定义了库属性default_wire_loadDesign Compiler选择该默认线负载模型。如果以上三种情况都不满足Design Compiler将不使用线负载模型。在没有线负载模型的情况下Design Compiler无法获取目标工艺的完整信息无法计算互连延迟因此时序信息将显得过于乐观。举例说明假设逻辑库typical.lib同时作为主库中有以下定义wire_load(tsmc090_wl10) { resistance : 8.5e-8; capacitance : 1.5e-4; area : 0.7; slope : 66.667; fanout_length (1,66.667); } wire_load(tsmc090_wl20) { resistance : 8.5e-8; capacitance : 1.5e-4; area : 0.7; slope : 133.334; fanout_length (1,133.334); } wire_load(tsmc090_wl30) { resistance : 8.5e-8; capacitance : 1.5e-4; area : 0.7; slope : 200.001; fanout_length (1,200.001); } default_wire_load :tsmc090_wl30; wire_load_selection(pes) { wire_load_from_area(0,100,tsmc090_wl10); wire_load_from_area(101,200,tsmc090_wl20); wire_load_from_area(201,300,tsmc090_wl30); } wire_load_selection(opt) { wire_load_from_area(0,100,tsmc090_wl30); wire_load_from_area(101,200,tsmc090_wl20); wire_load_from_area(201,300,tsmc090_wl10); } default_wire_load_selection :opt;1、由用户显式指定的模型常用使用set_wire_load_model命令可以使用任意一个已加载到内存的逻辑库中的线负载模型图1是report_design命令的结果。set_wire_load_model -name tsmc090_wl10 -library typical图1 手动选择线负载模型需要注意的是如果不指定-library选项则Design Compiler会在link_path指定的逻辑库中从左至右搜索指定的线负载模型如果一个逻辑库被加载到内存但不在link_path中想使用其中的线负载模型时必须使用该选项如果在-library选项中指定了多个逻辑库则Design Compiler首先在这些指定的逻辑库中从左至右搜索指定的线负载模型如果没有搜索到则会在link_path指定的逻辑库中从左至右搜索指定的线负载模型。2、基于设计面积自动选择的模型假设auto_wire_load_selection变量没有被设置为false。某个设计的总单元面积为18则综合时Design Compiler根据默认选择组opt自动选择线负载模型tsmc090_wl30图2是report_design命令的结果。图2 基于面积自动选择线负载模型默认综合时Design Compiler将在target_library中的第一个逻辑库即主库中搜索默认选择组这是因为综合后设计的local_link_library属性将被设置为target_library变量;其他情况下Design Compiler将在link_path中的第一个逻辑库中搜索默认选择组。需要注意的是如果之前已经根据默认选择组自动选择了默认线负载模型随后重新进行了综合/link_path的设置如果新的逻辑库中不含默认选择组则Design Compiler保持之前的默认选择组否则Design Compiler变更为使用该默认选择组。也可以使用set_wire_load_selection_group命令使用任意一个已加载到内存且在target_library或link_library中指定的逻辑库中的线负载模型选择组图3是report_design的结果。set_wire_load_selection_group pes -library typical图3 基于面积自动选择线负载模型指定需要注意的是与set_wire_load_model命令不同的是如果一个逻辑库使用read_db或read_file -format db命令手动加载到内存中但并未在target_library或link_library中指定则无法指定其中的线负载模型选择组。如果不指定-library选项则Design Compiler在综合时会在target_library指定的逻辑库优先级更高因为综合后设计的local_link_library属性将被设置为target_library变量或link_library中指定的逻辑库中从左至右搜索指定的线负载模型选择组如果在-library选项中指定了多个逻辑库(需要在target_library或link_library中指定)则Design Compiler会在这些指定的逻辑库中从左至右搜索指定的线负载模型选择组。3、逻辑库中的默认指定的模型假设auto_wire_load_selection变量被设置为false。Design Compiler自动选择默认线负载模型tsmc090_wl30图4是report_design命令的结果。图4 线负载模型默认综合时Design Compiler将在target_library中的第一个逻辑库中搜索默认线负载模型这是因为综合后设计的local_link_library属性将被设置为target_library变量其他情况下Design Compiler将在link_path中的第一个逻辑库中搜索默认线负载模型。需要注意的是如果之前已经自动选择了默认线负载模型随后重新进行了综合/link_path的设置如果新的逻辑库中不含默认线负载模型则Design Compiler保持之前的线负载模型否则Design Compiler变更为使用该线负载模型。例如综合前link_path的第一个逻辑库含有默认线负载模型而target_library中的第一个逻辑库不含默认线负载模型则综合后link_path的第一个逻辑库即local_link_library属性的第一个逻辑库变成target_library中的第一个逻辑库但此时还是使用原本的默认线负载模型。最后谈一下report_wire_load命令可以报告已设置的线负载模型或者link_path指定逻辑库中的所有线负载模型remove_wire_load_model命令可以用于移除已设置的线负载模型set_wire_load_model除了设置当前设计的线负载模型外还可以设置其它模型、层次单元以及端口的线负载模型再次不详细说明。
阅读完成 · 觉得有帮助?
咨询建站