Design Compiler:目标(target)库、链接(link)库、符号(symbol)库、综合(synthetic)库和物理(physical)库的详细解析

相关阅读

Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm=1001.2014.3001.5482


哪些库是需要的?

        在线负载模式(wire load mode)下,Design Compiler使用逻辑库(包括目标库和链接库)、符号库和综合库(又称DesignWare库)。

        在拓扑模式(topographical mode)下,Design Compiler除上述库外,还使用物理库。

逻辑库

        逻辑库由半导体供应商维护和分发,包含每个单元的特性和功能信息,例如单元名称、引脚名称、面积、时序弧和引脚负载。它们还定义了设计规则约束(如线网的最大转换时间)等条件。此外,逻辑库还指定特定工艺技术的工作条件和线负载模型(只用于线负载模式)。

        Design Compiler支持使用非线性延迟模型(NLDM)和复合电流源模型(CCS),或同时使用两者。Design Compiler会根据逻辑库的内容自动选择使用的时序模型。如果库同时包含NLDM和CCS模型,Design Compiler会使用CCS模型。在逻辑综合和预布线优化期间,工具可能不会使用所有的CCS数据以节省运行时间。

        Design Compiler需要逻辑库是.db格式。通常情况下,半导体供应商会提供.db格式的逻辑库。如果只有逻辑库的源代码(例如.lib格式),则需要首先使用Library Compiler(以前集成在Design Compiler中,后脱离变成单独的工具)将其编译为.db格式。

        Design Compiler使用逻辑库的主要目的包括:

  • 实现设计功能:Design Compiler在优化过程中映射到的逻辑库称为目标库,这些库包含用于生成网表的标准单元,目标库是用于综合设计的链接库的子集。
  • 解析单元引用:Design Compiler使用链接库解析单元引用,链接库可以包含标准单元和设计文件。
  • 计算时序值和路径延迟:链接库定义用于计算时序值和路径延迟的延迟模型。 
  • 计算功耗:提供了有关功耗计算的信息。

        Design Compiler使用在link_library变量中找到的第一个逻辑库作为主库,用于在缺少显式规范时获取默认值和设置。这些设置包括工作条件、线负载模型选择组、线负载模式和线网延迟计算。如果其他库的度量单位与主库的单位不同,Design Compiler会将所有单位转换为主库中指定的单位。Design Compiler从主库中获取以下默认值和设置:

  • 单位定义
  • 工作条件
  • K因子
  • 线负载模型选择
  • 输入和输出电压
  • 时序范围
  • RC转换点
  • 线网转换时间衰减表

目标库

        Design Compiler在映射过程中从目标库中选择功能正确的门电路来构建电路。它还使用供应商提供的这些门电路的时序数据来计算电路的时序。

        要指定目标库,可以使用target_library变量。你应当只指定Design Compiler用于映射设计中标准单元(如组合逻辑和寄存器)的标准单元库。不应指定任何DesignWare库或宏库,例如pads或memory。

链接库

        为了完成设计,设计中的所有单元必须与库中的标准单元和被引用的设计进行链接。这个过程称为链接设计或解析引用。为了解决引用问题,Design Compiler使用以下变量和属性设置的链接库:

  • link_library变量:列出Design Compiler用于解析引用的库文件和设计文件(.ddc格式或.db格式(不推荐))。Design Compiler将从左到右搜索link_library变量中所列文件的内容,并在找到引用时停止搜索。如果在link_library变量中指定了星号(*),则表示Design Compiler会在内存中搜索引用。例如,如果将link_library变量设置为{"*" typical.db},Design Compiler会首先在内存中搜索引用,然后在typical库中搜索。

  • local_link_library属性:可以使用set_local_link_library命令给当前设计指定local_link_library属性,在解析当前设计的引用时,Design Compiler会首先搜索local_link_library属性中的库文件和设计文件。

        可以将这两者统称为link_path,当Design Compiler在link_path指定的文件搜索后,但还是没有成功解析引用时,会在search_path变量指定的目录路径下,查找名字是引用名.ddc或引用名.db的文件,并查找其内容中是否有需要的引用。

search_path变量简介

        指定工具在查找库文件和设计文件时使用的目录路径列表。

符号库

        符号库包含在设计原理图中表示库单元的图形符号定义。这些符号库由半导体供应商维护和分发。Design Compiler使用符号库来生成原理图视图。要查看原理图,必须使用Design Vision工具。当你生成原理图时,Design Compiler会将网表中的单元与符号库中的单元进行一对一的映射。

        每个Design Compiler的安装包中都包含一个默认的符号库文件generic.sdb,该文件位于Design Compiler安装目录/libraries/syn中。这个文件包含通用符号以及所有Verilog标准逻辑门符号。

        为了加载原理图符号,Design Vision首先会检查你通过symbol_library变量指定的符号库文件。例如,symbol_library变量的值为tech.sdb时,工具会在名为tech.sdb的文件中搜索符号。

        如果指定的库中不包含所需符号,工具会搜索Design Compiler安装目录/libraries/syn目录中的generic.sdb文件。如果还是没有找到匹配项,工具会将单元实例显示为矩形,这是默认的表示形式。

        与逻辑库相同,如果只有符号库的源代码(例如.slib格式),则需要首先使用Library Compiler将其编译为.sdb格式。

综合库

        DesignWare库是一个可重用电路设计构建模块(组件)的集合,与Synopsys的综合环境紧密集成。在综合过程中,Design Compiler会从DesignWare库中选择速度和面积优化最优的组件。Synopsys提供了实现许多实现内置HDL操作符的DesignWare组件,这些操作符包括取绝对值、加法、减法、比较、移位、乘法、除法等。除此之外,你可以使用DesignWare Developer在本地开发个性化的DesignWare库,或者从Synopsys或第三方获得DesignWare库的许可。要使用许可的DesignWare库,你需要获取这些库的许可证密钥。

        如果在synthetic_library变量中设置的任何DesignWare库需要DesignWare许可证,Design Compiler会检查该许可证。无需指定内置HDL操作符的标准综合库standard.sldb(或者称为Basic DW),因为Design Compiler会自动使用此库。如果进阶综合库dw_foundation.sldb(或者称为Licensed DW)不在synthetic_library中,但已成功检查出DesignWare许可证,dw_foundation.sldb库会自动添加到synthetic_library中。这种行为仅适用于compile_ultra命令(提示:Warning: DesignWare synthetic library dw_foundation.sldb is added to the synthetic library in the current command. (UsN-4)),用户指定的synthetic_library和link_library不会受到影响。

        一般来说,compile命令默认使用标准综合库(除非将进阶综合库添加到synthetic_library中),compile_ultra命令可以使用标准综合库和进阶综合库(自动添加)。

        默认情况下,所有DesignWare层次结构在使用compile_ultra命令综合的过程中会被无条件解组。你可以通过将compile_ultra_ungroup_dw变量设置为false来防止这种解组行为(默认值为true)。在Synthetic modules较小,比如三位乘法器时,无论是compile命令还是compiler_ultra命令都会对Synthetic modules进行解组,此时无论compile_ultra_ungroup_dw变量为何值。

物理库

        Synopsys曾经推出过一个用于物理综合的工具——Physical Compiler,它将逻辑综合和物理设计整合在一个工具中。这意味着在综合阶段就可以引入物理信息,如单元的物理布局、线长、拥塞情况等,而不用等到布局布线阶段才发现物理设计。进行物理综合时,需要物理库,它可以是.pdb格式(Library Compiler编译.plib文件或者.lef文件(Library Exchange Format)生成),也可以是Milkyway设计库(Milkyway参考库和技术文件生成)。

        后来推出的DC Ultra有topographical模式,这时不再使用线负载模型作为互联延迟的估算方式,而是根据单元的布局情况计算延迟,这种模式下也需要物理库,最初支持.pdb格式和Milkyway设计库,但是Design Compiler 2009版本中,.pdb格式的物理库已经不受支持了。

详细说明

        在默认的情况下,Design Compiler默认的库变量的设置情况如例1所示,这因为Design Compiler安装目录/admin/setup下的.synopsys_dc.setup初始化文件有相关初始化设置命令,该文件会在每次Design Compiler启动时自动执行。

# 例1
dc_shell> printvar target_library      # 或者使用echo命令和puts命令
target_library       = "your_library.db"
dc_shell> printvar link_library        
link_library         = "* your_library.db"
dc_shell> printvar symbol_library      
symbol_library       = "your_library.sdb"
dc_shell> printvar synthetic_library   
synthetic_library    = ""

        在Design Vision也能观察到这些变量默认的值,如图1所示。

图1 变量设置窗口

        为了更好地说明,首先在Design Compiler的启动目录中新建一个.synopsys_dc.setup文件,加入例2所示的命令,Design Compiler会优先执行启动目录下的初始化文件。

# 例2
set_app_var target_library ""     # 或者使用set命令
set_app_var link_library ""       
set_app_var symbol_library ""     
set_app_var synthetic_library ""  

目标库的使用 

        此时我们使用read_verilog命令或read_file命令读取一个未映射的Verilog文件时,此时输出如例3所示。

# 例3
dc_shell> read_verilog test2.v
Loading db file '/opt/Synopsys/syn2018/syn/O-2018.06-SP1/libraries/syn/gtech.db'
Loading db file '/opt/Synopsys/syn2018/syn/O-2018.06-SP1/libraries/syn/standard.sldb'
  Loading link library 'gtech'
Loading verilog file '/home/zhangchen/Desktop/folder/folder1/folder2/test2.v'

        可以看出在读取Verilog文件前,Design Compiler首先自动读取了两个库文件,即使它们并未显式设置,gtech.db库被设置为了链接库,这是为了解析从Verilog格式转化后的GTECH格式,而standard.sldb库用于DesignWare组件。

        此时无法直接综合,如例4所示。

# 例4
dc_shell> compile -exact_map
Warning: No target library specified. (UIO-15)

        即使使用read_db或者read_file命令读取了一个库文件也是徒劳的,如例5所示。

# 例5
dc_shell> read_db typical.db
Loading db file '/opt/Synopsys/syn2018/syn/O-2018.06-SP1/libraries/syn/typical.db'
Loaded 0 designs.
dc_shell> list_lib
Logical Libraries:
-------------------------------------------------------------------------
Library         File                    Path
-------         ----                    ----
  gtech         gtech.db                /opt/Synopsys/syn2018/syn/O-2018.06-SP1/libraries/syn
  standard.sldb standard.sldb           /opt/Synopsys/syn2018/syn/O-2018.06-SP1/libraries/syn
  typical       typical.db              /opt/Synopsys/syn2018/syn/O-2018.06-SP1/libraries/syn
1
dc_shell> compile -exact_map
Warning: No target library specified. (UIO-15)
0

        这是因为target_library变量为空,所以即使库文件已经被读取,Design Compiler也不知道要使用其进行综合。

        例6设置了target_library变量的值为typical.db,并成功进行了综合。

# 例6
dc_shell> set_app_var target_library typical.db  # 或者使用set命令
typical.db
dc_shell> compile -exact_map
Information: Evaluating DesignWare library utilization. (UISN-27)

============================================================================
| DesignWare Building Block Library  |         Version         | Available |
============================================================================
| Basic DW Building Blocks           | O-2018.06-DWBB_201806.1 |     *     |
| Licensed DW Building Blocks        |                         |           |
============================================================================



  Beginning Pass 1 Mapping
  ------------------------
  Processing 'grandchild_module'

  Updating timing information
Information: Updating design information... (UID-85)
Information: Design 'grandchild_module' has no optimization constraints set. (OPT-108)

  Beginning Mapping Optimizations  (Medium effort)
  -------------------------------
  Structuring 'grandchild_module'
  Mapping 'grandchild_module'

                                  TOTAL                                      
   ELAPSED            WORST NEG   SETUP    DESIGN                            
    TIME      AREA      SLACK     COST    RULE COST         ENDPOINT         
  --------- --------- --------- --------- --------- -------------------------
    0:00:01     194.0      0.00       0.0       0.0                          
    0:00:01     194.0      0.00       0.0       0.0                          
    0:00:01     194.0      0.00       0.0       0.0                          
    0:00:01     194.0      0.00       0.0       0.0                          
    0:00:01     194.0      0.00       0.0       0.0                          
    0:00:01     126.3      0.00       0.0       0.0                          
    0:00:01     126.3      0.00       0.0       0.0                          
    0:00:01     126.3      0.00       0.0       0.0                          
    0:00:01     126.3      0.00       0.0       0.0                          
    0:00:01     126.3      0.00       0.0       0.0                          
    0:00:01     126.3      0.00       0.0       0.0                          
    0:00:01     126.3      0.00       0.0       0.0                          
    0:00:01     126.3      0.00       0.0       0.0                          



  Beginning Delay Optimization Phase
  ----------------------------------

                                  TOTAL                                      
   ELAPSED            WORST NEG   SETUP    DESIGN                            
    TIME      AREA      SLACK     COST    RULE COST         ENDPOINT         
  --------- --------- --------- --------- --------- -------------------------
    0:00:01     126.3      0.00       0.0       0.0                          
    0:00:01     126.3      0.00       0.0       0.0                          
    0:00:01     126.3      0.00       0.0       0.0                          


  Beginning Area-Recovery Phase  (cleanup)
  -----------------------------

                                  TOTAL                                      
   ELAPSED            WORST NEG   SETUP    DESIGN                            
    TIME      AREA      SLACK     COST    RULE COST         ENDPOINT         
  --------- --------- --------- --------- --------- -------------------------
    0:00:01     126.3      0.00       0.0       0.0                          
    0:00:01     126.3      0.00       0.0       0.0                          
    0:00:01     126.3      0.00       0.0       0.0                          
    0:00:01     126.3      0.00       0.0       0.0                          
    0:00:01     126.3      0.00       0.0       0.0                          
    0:00:01     126.3      0.00       0.0       0.0                          
    0:00:01     126.3      0.00       0.0       0.0                          
    0:00:01     126.3      0.00       0.0       0.0                          
    0:00:01     126.3      0.00       0.0       0.0                          
    0:00:01     126.3      0.00       0.0       0.0                          
    0:00:01     126.3      0.00       0.0       0.0                          
Loading db file '/opt/Synopsys/syn2018/syn/O-2018.06-SP1/libraries/syn/typical.db'


Note: Symbol # after min delay cost means estimated hold TNS across all active scenarios 


  Optimization Complete
  ---------------------
1

        其实在这里例5所示的手动读取库文件是不必要的,只要设置了target_library变量,其所指定的库会在使用综合命令后自动进行读取(如有必要,例6没有读取是因为库文件已被读取)。

链接库的使用 

        随后我们需要保存综合结果,可以将其保存为一个已映射的Verilog文件(.v格式),或者是一个已映射的设计文件(.ddc格式或.db格式(不推荐)),它们两个的区别在于,如果保存为已映射的Verilog文件,则只会保留网表信息,而如果保存为已映射的设计文件,则会保存所有信息(包括设计的约束)。

已映射的Verilog文件

        例7使用write_file命令将综合结果保存为已映射的Verilog文件。

# 例7
dc_shell> write_file -format verilog -output test2_map.v
Writing verilog file '/home/zhangchen/Desktop/folder/folder1/folder2/test1_map.v'.
1

        例8首先是移除所有设计,随后读取已映射的Verilog文件。

# 例8
dc_shell> remove_design -designs
Removing design 'grandchild_module'
dc_shell> read_verilog test2_map.v
*****

        此时如果使用link命令,则会出错,如例9所示。 

# 例9
dc_shell> link
  Linking design 'grandchild_module'
  Using the following designs and libraries:
  --------------------------------------------------------------------------

Information: Building the design 'DFFRQX2'. (HDL-193)
Warning: Cannot find the design 'DFFRQX2' in the library 'WORK'. (LBR-1)
Information: Building the design 'CLKINVX1'. (HDL-193)
Warning: Cannot find the design 'CLKINVX1' in the library 'WORK'. (LBR-1)
Warning: Unable to resolve reference 'DFFRQX2' in 'grandchild_module'. (LINK-5)
Warning: Unable to resolve reference 'CLKINVX1' in 'grandchild_module'. (LINK-5)
0

        上面的提示说明Design Compiler无法解析引用,这是意料之中的,因为此时即使target_library变量的值为typical.db,而link_library变量为空(即使库文件已经被读取),Design Compiler此时只能使用gtech.db库作为链接库,如果不是碰巧有同名单元,这是不会成功的。

        例10设置了link_library变量的值为typical.db,并成功进行了引用解析。

# 例10
dc_shell> set_app_var link_library typical.db # 或者使用set命令
typical.db
dc_shell> link
  Linking design 'grandchild_module'
  Using the following designs and libraries:
  --------------------------------------------------------------------------
  typical (library)           /opt/Synopsys/syn2018/syn/O-2018.06-SP1/libraries/syn/typical.db

1

        顺带一提的是,就像target_library变量所指定的库文件会在使用综合命令后自动进行读取一样,link_path所指定的库文件和设计文件会在必要时自动读取。

已映射的设计文件

        例11使用write_file命令将综合结果保存为已映射的设计文件。

# 例11
dc_shell> write_file -format ddc -output test2_map.ddc
Writing ddc file 'test2_map.ddc'.
1

        例12首先是移除所有设计,随后读取已映射的设计文件。 

# 例12
dc_shell> remove_design -designs
Removing design 'grandchild_module'
dc_shell> read_file -format ddc test2_map.ddc
*****

        此时如果使用link命令不会出错,即使link_library变量为空,如例13所示。

# 例13
dc_shell> link
  Linking design 'grandchild_module'
  Using the following designs and libraries:
  --------------------------------------------------------------------------
  typical (library)           /opt/Synopsys/syn2018/syn/O-2018.06-SP1/libraries/syn/typical.db

1

        这是因为在综合后,设计的local_link_library属性会被设置为target_library变量的值,将设计保存为.ddc格式会保留这些属性(当读取一个设计文件时,如其有local_link_library属性指定的库,也会像link_library变量一样自动读取),解析引用时local_link_library属性指定的库文件也会被搜索。需要注意的是,local_link_library属性只对当前设计生效,如果一个模块是当前设计的一个子模块,则该模块的local_link_library属性不会被使用,只有link_library变量和当前设计的local_link_library属性会被使用。

link_library变量中的*

        link_library变量的默认值包含符号*,这表示Design Compiler会在内存中查找引用,例如父模块child_module中引用了grandchild_module模块且它们都已被读取,则可以正常解析引用并构建层次关系。

link_library变量中的设计文件

        link_library变量除了可以包含符号*,库文件之外,还可以包含设计文件(.ddc格式或.db格式)。假设这样一个场景,grandchild_module模块已被综合且被保存为已映射的设计文件,将link_library变量设置为相应的库后,将grandchild_module模块所属的设计文件也添加进link_library变量后,此时只读取父模块child_module就会自动读取link_library变量中的库文件和设计文件,这就可以找到grandchild_module模块的引用而无需将两个模块都用命令读取。

符号库的使用

        符号库会在查看原理图后自动读取,如图2所示。

图2 符号库的加载

综合库的使用

运算符推断

        以例14的RTL代码为例进行说明,其中包括一个加法运算符和一个乘法运算符。

// 例14
module top_module (
    input wire clk,
    input wire rst_n,
    input wire [3:0] in_a,
    input wire [3:0] in_b,
    output wire [4:0] sum,
    output wire [7:0] product
);
    wire [3:0] intermediate_sum;

    // 实例化加法子模块
    adder u_adder (
        .a(in_a),
        .b(in_b),
        .sum(intermediate_sum)
    );

    // 实例化乘法子模块
    multiplier u_multiplier (
        .a(in_a),
        .b(in_b),
        .product(product)
    );

    // 将加法结果扩展为5位输出
    assign sum = {1'b0, intermediate_sum}; // 高位补0

endmodule

// 子模块1:加法器
module adder (
    input wire [3:0] a,
    input wire [3:0] b,
    output wire [3:0] sum
);
    assign sum = a + b;
endmodule

// 子模块2:乘法器
module multiplier (
    input wire [3:0] a,
    input wire [3:0] b,
    output wire [7:0] product
);
    assign product = a * b;
endmodule

        当把例14读取进Design Compiler时,在DesignVision中打开原理图可以看到一个加号和乘号模块,分别名为ADD_UNS_OP_6_6_7(即无符号,输入为6位,输出为7位的加法运算),如图3所示,和MULT_UNS_OP_6_6_12(即无符号,输入为6位,输出为12位的乘法运算),如图4所示。它们实际上是GTECH形式的模块,由Design Compiler中的HDL Compiler进行转换得来,如图5所示。

 图3 加法运算符

图4 乘法运算符

图5 运算符映射 

        综合完成后,加法运算符和乘法运算符被映射到了DesignWare组件(或者说图5中的Synthetic modules),如图6和图7所示。

图6 映射后的加法器

 图7 映射后的乘法器

显式例化

        显式例化Synthetic modules也是可行的,但需要提供相关参数,如在例15中显式例化了一个乘法器DW02_mult,提供了输入位宽参数。

// 例15
module top(input [9:0]A, B, output [19:0]PRODUCT);
    DW02_mult #(.A_width(10), .B_width(10))
	           (.A(A), .B(B), .PRODUCT(PRODUCT));
endmodule

        有些Synthetic modules只能显式例化而无法推断,比如RAM,如下所示。

DW_ram_r_w_s_lat #(WIDTH,DEPTH) memory(.clk(push_clk), 
			                           .cs_n(1'b0), 
			                           .wr_n(~push), 
			                           .rd_addr(rd_address),
		                               .wr_addr(wr_address), 
		                           	   .data_in(data_in), 
			                           .data_out(dataout));

        顺带一提,如果想强制一个运算符的实现方式,可以显式例化Synthetic modules并在Design Compiler中使用set_implementation命令(这只针对compile命令,如果使用compile_ultra命令,Design Compiler可能拒绝用户设置的实现方式并选择有更好QoR的实现)。

最佳实践

        一般情况下,会将target_library设置为需要映射到的工艺库,而link_library设置为[list * $target_library $synthetic_library 其他宏单元]。

<think>好的,我现在需要帮助用户了解数字IC设计中的标准单元相关信息。首先,我应该回顾用户提供的引用内容,看看是否有相关的信息。用户引用了四个来源,其中引用3提到了后端实现流程中的文件,比如网表、时序物理,这可能与标准单元有关。引用2提到了一些书籍,可能包含相关内容。 接下来,我需要确定标准单元的基本概念、组成作用。标准单元通常包括逻辑门、触发器、锁存器等基本单元,每个单元都有对应的物理布局、时序模型功耗信息。这些信息在后端设计流程中用于综合、布局布线时序分析。 用户可能想知道如何获取标准单元的资料教程。根据引用3,文件是后端设计的关键部分,通常由代工厂或EDA厂商提供,比如Cadence、Synopsys的工具支持。因此,获取标准单元可能需要通过合作代工厂或购买EDA工具。此外,引用2提到的书籍如《专用集成电路设计实用教程》数字设计计算机体系结构》可能包含相关内容,用户可以参考。 另外,引用4提到学习使用Modelsim进行仿真,可能涉及到标准单元的仿真模型,这也是标准单元的一部分。用户可能需要了解如何将这些集成到设计流程中,进行验证综合。 用户可能还有疑问,比如标准单元的具体内容、如何选择适合的单元、如何生成自定义单元等。需要确保回答覆盖这些方面,并提供相关资源学习路径。 最后,生成相关问题时要围绕标准单元的应用、获取途径、组成要素、设计工具等,确保问题能引导用户进一步深入学习。</think>### 数字IC设计中的标准单元详解 #### 1. 标准单元的定义与作用 标准单元(Standard Cell Library)是数字IC后端设计的核心基础,包含逻辑门(如AND、OR、NOT)、触发器(Flip-Flop)、锁存器(Latch)等基本电路单元的**物理布局**、**时序模型**(时序**功耗参数**。这些单元以固定高度、可变宽度的形式预定义,便于自动化布局布线工具(如Cadence Innovus、Synopsys ICC)实现逻辑网表到物理版图的转换[^3]。 #### 2. 标准单元的核心组成 - **物理Physical Library)**:定义单元版图的GDSII文件、LEF(布局交换格式)文件,包含金属层、接触孔等物理信息。 - **时序(Timing Library)**:以.lib格式存储,描述单元的延迟、建立/保持时间、驱动能力等时序特性。 - **功能模型**:Verilog/VHDL行为级模型,用于前端仿真验证[^4]。 - **功耗模型**:包含静态功耗(漏电)动态功耗(开关活动)数据。 #### 3. 标准单元的获取途径 - **代工厂提供**:如TSMC、SMIC等厂商会针对不同工艺节点(28nm、14nm等)提供配套单元,需签署NDA协议获取。 - **EDA厂商工具包**:Synopsys 的 DesignWare、Cadence 的 Genus 解决方案包含通用。 - **开源资源**: - **Nangate 45nm FreePDK**:基于开放工艺的设计套件(需学术用途申请) - **OpenCell Library**:SkyWater 130nm工艺的开源单元(GitHub可下载) #### 4. 学习资源推荐 - **书籍** - 《专用集成电路设计实用教程》第6章“标准单元设计流程”详解单元的生成与验证[^2] - 《数字IC设计:方法、技巧与实践》第4章“后端物理实现”分析文件与工具链的交互 - **实践工具链** - **Synopsys 32/28nm Educational Kit**:面向高校的免费教学套件(含标准) - **Cadence Genus/Innovus**:通过大学计划获取教育版,配合教程实验 #### 5. 关键设计流程中的应用 ```tcl # 示例:综合脚本中加载标准单元(Synopsys Design Compiler) set target_library "stdcells.db" # 时序 set link_library "* $target_library" set symbol_library "stdcells.sdb" # 符号 set synthetic_library "dw_foundation.sldb" # DesignWare ``` 此脚本展示了如何将标准单元绑定到综合工具,确保逻辑映射时序约束的正确性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日晨难再

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值