跳至主要內容

使用指南

iEDA大约 25 分钟

iEDA概述

iEDA系统部署图

工具准备

环境

  • 服务器配置
  • 操作系统 Ubuntu 20.04.5 LTS
  • 工艺环境 SkyWater PDK

编译构建

# 下载iEDA仓库
git clone https://gitee.com/oscc-project/iEDA.git iEDA && cd iEDA
# 通过apt安装编译依赖,需要root权限
sudo bash build.sh -i apt
# 编译 iEDA
bash build.sh -j 16
# 若能够正常输出 "Hello iEDA!" 则编译成功
./bin/iEDA -script scripts/hello.tcl

拷贝 ./bin/iEDA 到目录 ./scripts/design/sky130_gcd

# 拷贝 iEDA 到sky130 目录 
cp ./bin/iEDA scripts/design/sky130_gcd/.

工艺文件准备

下载SkyWater PDK
拷贝TechLEF 文件 和 LEF文件到目录 ./scripts/foundry/sky130/lef

# 拷贝 TechLEF 文件到目录 ./scripts/foundry/sky130/lef
cp <skywater130pdk_tlef_path>/*.tlef scripts/foundry/sky130/lef/.
# 拷贝 LEF 文件到目录 ./scripts/foundry/sky130/lef
cp <skywater130pdk_lef_path>/*.lef scripts/foundry/sky130/lef/.

拷贝Lib文件到 ./scripts/foundry/sky130/lib

# 拷贝 Lib 文件到目录 ./scripts/foundry/sky130/lib
cp <skywater130pdk_lib_path>/*.lib scripts/foundry/sky130/lib/.

拷贝sdc文件到 ./scripts/foundry/sky130/sdc

# 拷贝 sdc 文件到目录 ./scripts/foundry/sky130/sdc
cp <skywater130pdk_sdc_path>/*.sdc scripts/foundry/sky130/sdc/.

设计文件准备

拷贝.v Netlist文件到目录 scripts/design/sky130_gcd/result/verilog

# 拷贝 .v 文件到目录 ./scripts/design/sky130_gcd/result/verilog
cp <skywater130pdk_verilog_path>/gcd.v scripts/design/sky130_gcd/result/verilog/.

工具流程

本文档以跑通skywater PDK 130nm工艺物理后端设计流程作为示例,说明iEDA各个点工具如何配置参数、运行和分析结果。

模块划分

scripts
├── design                   #iEDA flows for different designs
│   ├── ispd18               #tbd
│   └── sky130_gcd           #flow of gcd in sky130
│       ├── iEDA           
│       ├── iEDA_config      # iEDA parameters configuration files
│       ├── README.md
│       ├── result           # iEDA result output files
│       ├── run_iEDA_gui.py  # Python3 script for running all iEDA flow with GUI layout
│       ├── run_iEDA.py      # Python3 script for running all iEDA flow
│       ├── run_iEDA.sh      # POSIX shell script for running all iEDA flow
│       └── script           # TCL script files
├── foundry
│   ├── README.md
│   └── sky130               # SkyWater Open Source PDK
│       ├── lef              # lef files
│       ├── lib              # lib files
│       ├── sdc              # sdc files
│       └── spef             # folder for spef files if needed
└── hello.tcl                # Test running iEDA

script 模块说明

script目录包含物理后端设计需要的所有流程脚本和结果分析评估脚本,并且按流程、功能划分好模块;流程脚本可支持顶层自动化运行脚本run_iEDA.py的调用,也可以支持独立运行。

scripts/design/sky130_gcd/script
├── DB_script                           # Data process flow scripts
│   ├── db_init_lef.tcl                 # initialize lef
│   ├── db_init_lib_drv.tcl             # initialize lib only for flow of drv 
│   ├── db_init_lib_fixfanout.tcl       # initialize lib only for flow of fix fanout
│   ├── db_init_lib_hold.tcl            # initialize lib only for flow of optimize hold
│   ├── db_init_lib_setup.tcl           # initialize lib only for flow of optimize setup
│   ├── db_init_lib.tcl                 # initialize lib for common flow
│   ├── db_init_sdc.tcl                 # initialize sdc 
│   ├── db_init_spef.tcl                # initialize spef
│   ├── db_path_setting.tcl             # set paths for all processing technology files, including TechLEF,LEF, Lib, sdc and spef
│   ├── run_db_checknet.tcl             # check net connectivity based on data built by DEF (.def) and LEF (.lef & .tlef)
│   ├── run_db_report_evl.tcl           # report wire length and congestion based on data built by DEF (.def) and LEF (.lef & .tlef)
│   ├── run_db.tcl                      # test building data by DEF (.def) and LEF (.lef & .tlef)
│   ├── run_def_to_gds_text.tcl         # transform data from DEF (.def) to GDSII (.gdsii)
│   ├── run_def_to_verilog.tcl          # transform data from DEF (.def) to netlist (.v)
│   ├── run_netlist_to_def.tcl          # transform data from netlist (.v) to DEF (.def)
│   └── run_read_verilog.tcl            # test read verilog file (.v)
├── iCTS_script                         # CTS flow scripts
│   ├── run_iCTS_eval.tcl               # report wire legnth for CTS result
│   ├── run_iCTS_STA.tcl                # report CTS STA
│   └── run_iCTS.tcl                    # run CTS
├── iDRC_script                         # DRC(Design Rule Check) flow scipts
│   ├── run_iDRC_gui.tcl                # show GUI for DRC result
│   └── run_iDRC.tcl                    # run DRC
├── iFP_script                          # Floorplan flow scripts
│   ├── module                          # submodule for Floorplan scripts
│   │   ├── create_tracks.tcl           # create tracks for routing layers
│   │   ├── pdn.tcl                     # create pdn networks 
│   │   └── set_clocknet.tcl            # set clock net
│   └── run_iFP.tcl                     # run Floorplan
├── iGUI_script                         # GUI flow scipts
│   └── run_iGUI.tcl                    # run GUI
├── iNO_script                          # NO(Netlist Optimization) flow scipts
│   └── run_iNO_fix_fanout.tcl          # run Fix Fanout
├── iPL_script                          # Placement flow scripts
│   ├── run_iPL_eval.tcl                # report congestion statistics and wire legnth for Placement result
│   ├── run_iPL_filler.tcl              # run standard cell filler
│   ├── run_iPL_gui.tcl                 # run gui flow that shows Global Placement Processing result
│   ├── run_iPL_legalization_eval.tcl   # report congestion statistics and wire legnth for Legalization result
│   ├── run_iPL_legalization.tcl        # run Cell Legalization
│   └── run_iPL.tcl                     # run Placement
├── iRT_script                          # Routing flow scripts
│   ├── run_iRT_DRC.tcl                 # run DRC for Routing result
│   ├── run_iRT_eval.tcl                # report wire legnth for Routing result
│   ├── run_iRT_STA.tcl                 # run STA for Routing result
│   └── run_iRT.tcl                     # run Routing
├── iSTA_script                         # STA flow scripts
│   ├── init_iSTA.tcl                   # STA initialization
│   ├── report_iSTA.tcl                 # report STA result
│   └── run_iSTA.tcl                    # run STA
└── iTO_script                          # TO(Timing Optimization) flow script
    ├── run_iTO_drv_STA.tcl             # run STA for DRV result
    ├── run_iTO_drv.tcl                 # run DRV
    ├── run_iTO_hold_STA.tcl            # run STA for Fix Hold Violation result
    ├── run_iTO_hold.tcl                # run Fix Hold Violation
    ├── run_iTO_setup_STA.tcl           # run STA for Fix Setup Violation result
    └── run_iTO_setup.tcl               # run Fix Setup Violation

运行Flow

准备好iEDA和工艺文件后,您可以选择自动运行sky130流程脚本,也可以分步骤运行各个点工具脚本,所有的结果都默认保存在script/sky130/result文件夹

Flow基础流程

不管是自动运行顶层 run_iEDA.py 脚本还是单独运行点工具脚本,基于 iEDA 平台设计的脚本都有着相似的步骤,具体流程如下 <br>
step 1 路径设置<br>
首先必须先配置工艺环境路径,为方便查找和配置路径参数,脚本将TechLEF、LEF、Lib、sdc、spef的路径统一在文件 ./script/DB_script/db_path_setting.tcl配置,如下表所示

功能配置命令参考 TCL 样例
设置 TechLef 路径set TECH_LEF_PATH xxxset TECH_LEF_PATH "./lef/sky130_fd_sc_hs.tlef"
设置 Lef 路径set LEF_PATH xxxset LEF_PATH ./lef/sky130_ef_io__com_bus_slice_10um.lef
设置 Lib 路径set LIB_PATH xxxset LIB_PATH ./lib/sky130_dummy_io.lib
设置 Fix Fanout Lib 路径set LIB_PATH_FIXFANOUT xxxset LIB_PATH_FIXFANOUT ./lib/sky130_dummy_io.lib
设置 Fix DRV Violation Lib 路径set LIB_PATH_DRV xxxset LIB_PATH_DRV ./lib/sky130_dummy_io.lib
设置 Fix Hold Violation Lib 路径set LIB_PATH_HOLD xxxset LIB_PATH_HOLD ./lib/sky130_dummy_io.lib
设置 Fix Setup Violation Lib 路径set LIB_PATH_SETUP xxxset LIB_PATH_SETUP ./lib/sky130_dummy_io.lib
设置 SDC 路径set SDC_PATH xxxset SDC_PATH "./sdc/gcd.sdc"
设置 SPEF 路径set SPEF_PATH xxxset SPEF_PATH "./spef/xxx.spef"

step 2 配置点工具Config<br>
所有点工具的参数设置Config都在路径 ./iEDA_config 中,可查看后面章节的 输入输出一览表 修改对应的点工具Config文件

step 3 读 .def 设计文件<br>
以 CTS 为例,执行 def_init 命令,读取布局后的结果

#===========================================================
##   read def
#===========================================================
def_init -path ./result/iPL_result.def

步骤 1 - 3 后,Tech LEF、LEF、DEF 文件数据将被加载,这是点工具启动的前提条件

step 4 启动点工具<br>
以 CTS 为例,执行 run_cts 命令,将启动 CTS 流程

#===========================================================
##   run CTS
#===========================================================
run_cts -config ./iEDA_config/cts_default_config.json

step 5 保存点工具运行结果<br>
以 CTS 为例,执行完点工具流程后,将点工具运行结果保存在路径 ./result/ 中

#===========================================================
##   Save def
#===========================================================
def_save -path ./result/iCTS_result.def

#===========================================================
##   Save netlist 
#===========================================================
netlist_save -path ./result/iCTS_result.v -exclude_cell_names {}

step 6 输出报告<br>
以 CTS 为例,数据存储后,将输出设计结果相关的总体报告,报告路径存储在 ./result/report/ 中

#===========================================================
##   report 
#===========================================================
report_db -path "./result/report/cts_db.rpt"

step 7 退出<br>

#===========================================================
##   Exit 
#===========================================================
flow_exit

以上步骤为执行单个点工具的一般流程,其中步骤 1 - 3 初始化配置和数据库,为必须的步骤,步骤 4 之后,可以按照需求灵活接入各个点工具或模块命令<br>

报告分析

点工具运行完成后,分析报告将存储在路径 ./result/report 中,模块划分如下表所示<br>

报告类型路径说明
Tech LEF、LEF、DEF数据报告./result/report分析、统计 Design 文件的数据,并对PR过程单元、线网数据进行详细报告
线长、拥塞评估报告./result/report/eval分析、统计点工具输出结果的线长、单元密度、布线拥塞等数据
DRC报告./result/report/drc主要检测布线后的DRC违例情况,已支持GUI可视化分析
基础信息

以 CTS 后的结果报告为例<br>
查看 CTS 的数据报告,路径在 ./result/report/cts_db.rpt<br>

+-----------------+-----------------------------+
| iEDA            | V23.03-OS-01                |
+-----------------+-----------------------------+
| Stage           | iCTS - Clock Tree Synthesis |
| Runtime         | 2.863340 s                  |
| Memmory         | 5745.216000 MB              |
|                 |                             |
| Design Name     | gcd                         |
| DEF&LEF Version | 5.8                         |
| DBU             | 1000                        |
+-----------------+-----------------------------+

各标签含义如下表<br>

标签样例值说明
iEDAV23.03-OS-01iEDA 当前版本号
StageiCTS - Clock Tree Synthesis当前结果的流程阶段,iCTS表示当前结果由 CTS 输出
Runtime2.863340 s当前点工具读入数据到保存结果所需运行时间
Memmory5745.216000 MB当前点工具读入数据到保存结果所需最大峰值内存
Design Namegcd设计名称
DEF&LEF Version5.8当前设计的工艺文件版本号
DBU10001 微米含单位长度个数,用于转换 DEF 和 Tech LEF 参数值(DATABASE MICRONS LEFconvertFactor)
Design 数据报告

以 CTS 后的 Design 数据报告为例,以下对报告的各个参数、标签进行说明<br>
查看 CTS 的数据报告,路径在 ./result/report/cts_db.rpt<br>
Summary<br>
Summary 报告基于 Tech LEF 和 DEF 数据,统计了各个数据类型的基本信息<br>
以 CTS 结果的 Summary 为例<br>

###################################################################
Summary
+------------------------+----------------------------------------+
| Module                 | Value                                  |
+------------------------+----------------------------------------+
| DIE Area ( um^2 )      | 22513.194880 = 149.960000 * 150.128000 |
| DIE Usage              | 0.297306                               |
| CORE Area ( um^2 )     | 16893.489600 = 130.080000 * 129.870000 |
| CORE Usage             | 0.396206                               |
|                        |                                        |
| Number - Site          | 2                                      |
| Number - Row           | 39                                     |
| Number - Track         | 12                                     |
| Number - Layer         | 13                                     |
| Number - Routing Layer | 6                                      |
| Number - Cut Layer     | 5                                      |
| Number - GCell Grid    | 0                                      |
| Number - Cell Master   | 856                                    |
| Number - Via Rule      | 54                                     |
|                        |                                        |
| Number - IO Pin        | 56                                     |
| Number - Instance      | 941                                    |
| Number - Blockage      | 0                                      |
| Number - Filler        | 0                                      |
| Number - Net           | 683                                    |
| Number - Special Net   | 2                                      |
+------------------------+----------------------------------------+

报告的参数说明如下表所示

参数名Tech LEF/LEF 关键字段DEF 关键字段说明
DIE Area ( um^2 )DIEAREA版图 DIE 面积,单位 平方微米
DIE Usage版图 DIE 的利用率,即 Design中所有 Instance 面积 / DIE 面积
CORE Area ( um^2 )版图 CORE 面积, 单位 平方微米, CORE 的面积为所有标准单元ROW的面积之和
CORE Usag版图 CORE 的利用率, 即 Design中所有 Instance 面积 / CORE 面积
Number - SiteSITETech LEF 中定义的 SITE 的个数
Number - RowROW版图生成的 标准单元ROW 的个数
Number - TrackTRACKS版图生成的 TRACK 的个数
Number - LayerLAYERTech LEF 中定义的 总层数
Number - Routing LayerTYPE ROUTING ;Tech LEF 中定义的 布线层 层数
Number - Cut LayerTYPE CUT ;Tech LEF 中定义的 通孔层 层数
Number - GCell GridGCELLGRID版图生成的 GCell Grid 的个数
Number - Cell MasterMACROLEF 中定义的所有 Cell Master 个数,包括宏单元、标准单元、填充单元等
Number - Via RuleVIA<br> VIARULEVIASLEF 中定义的 Via 个数
Number - IO PinPINSDEF 中生成的 IO Pin 的个数
Number - InstanceCOMPONENTSDEF 中生成的所有 Instance 个数
Number - BlockageBLOCKAGESDEF 中生成的所有 Blockage 个数
Number - FillerFILLSDEF 中生成的所有 Filler 个数
Number - NetNETSDEF 中生成的所有 Net 个数
Number - Special NetSPECIALNETSDEF 中生成的所有 Special Net 个数

Summary - Instance<br>
按不同的分类规则,统计所有 Instance 的信息<br>
以 CTS 的结果为例<br>

Summary - Instance
+---------------+--------+--------------+------------+------------+
| Type          | Number | Number Ratio | Area       | Area Ratio |
+---------------+--------+--------------+------------+------------+
| All Instances | 941    | 1            | 7161635200 | 1          |
|               |        |              |            |            |
| Netlist       | 648    | 0.688629     | 6693304000 | 0.934606   |
| Physical      | 293    | 0.311371     | 468331200  | 0.0653945  |
| Timing        | 0      | 0            | 0          | 0          |
|               |        |              |            |            |
| Core          | 940    | 0.998937     | 7157635200 | 0.999441   |
| Core - logic  | 647    | 0.687566     | 6689304000 | 0.934047   |
| Pad           | 0      | 0            | 0          | 0          |
| Block         | 0      | 0            | 0          | 0          |
| Endcap        | 0      | 0            | 0          | 0          |
| Cover         | 0      | 0            | 0          | 0          |
| Ring          | 0      | 0            | 0          | 0          |
+---------------+--------+--------------+------------+------------+

报告的参数说明如下表所示<br>

参数名说明
TypeInstance 的类型
Number统计的 Instance 的个数
Number Ratio统计的 Instance 个数占比,即 统计的 Instance 个数 / 所有 Instance 个数
Area统计的 Instance 的总面积
Area Ratio统计的 Instance 的面积占比, 即 统计的 Instance 总面积 / 所有 Instance 总面积

其中类型 Type 的分类说明如下<br>

  • All Instances : 所有 Instance
  • Netlist : 所有 线网 类型的 Instance,对应关键字为 DEF 里的 COMPONENTS 的 SOURCE 属性为 NETLIST
  • Physical : 所有 物理单元 类型的 Instance,对应关键字为 DEF 里的 COMPONENTS 的 SOURCE 属性为 DIST
  • Timing : 所有 用于改变线网时序 的 Instance,比如 Buffer,对应关键字为 DEF 里的 COMPONENTS 的 SOURCE 属性为 TIMING
  • Core : 所有Core区域内的 标准单元 个数,对应关键字为 LEF 里的 MACRO 的 CLASS 属性为 CORE
  • Core - logic : 所有Core区域内的 非填充单元的标准单元 个数
  • Pad : 所有 I/O Pad Instance,对应关键字为 LEF 里的 MACRO 的 CLASS 属性为 PAD
  • Block : 所有 Block Instance,对应关键字为 LEF 里的 MACRO 的 CLASS 属性为 BLOCK
  • Endcap : 所有 Endcap Instance,对应关键字为 LEF 里的 MACRO 的 CLASS 属性为 ENDCAP
  • Cover : 所有 Cover Instance,对应关键字为 LEF 里的 MACRO 的 CLASS 属性为 COVER
  • Ring : 所有 Ring Instance,对应关键字为 LEF 里的 MACRO 的 CLASS 属性为 RING

Summary - Net<br>
按不同的分类规则,统计所有 Net 的信息<br>
以 CTS 的结果为例<br>

Summary - Net
+----------------+--------+--------------+--------+--------------+
| Net Type       | Number | Number Ratio | Length | Length Ratio |
+----------------+--------+--------------+--------+--------------+
| All Nets       | 683    | 1            | 0      | 0            |
| Signal         | 674    | 0.986823     | 0      | 0            |
| Clock          | 9      | 0.0131772    | 0      | 0            |
| Power & Ground | 0      | 0            | 0      | 0            |
+----------------+--------+--------------+--------+--------------+

报告的参数说明如下表所示<br>

参数名说明
Net TypeNet 类型
Number统计的 Net 的个数
Number Ratio统计的 Net 个数占比,即 统计的 Net 个数 / 所有 Net 个数
Length统计的 Net 的总面积
Length Ratio统计的 Net 的线网长度占比, 即 统计的 Net 总长度 / 所有 Net 总长度

其中类型 Net Type 的分类说明如下<br>

  • All Nets : 所有 Net
  • Signal : 所有信号 Net,对应关键字为 DEF 里的 NETS 的 USE 属性为 SIGNAL
  • Clock : 所有时钟 Net,对应关键字为 DEF 里的 NETS 的 USE 属性为 CLOCK
  • Power & Ground : 所有电源 Net,对应关键字为 DEF 里的 NETS 的 USE 属性为 GROUND 或者 POWER

Summary - Layer<br>
统计所有层的数据信息<br>
以 CTS 的结果为例<br>

Summary - Layer
+-------+-------------------+-------------------+------------------+--------------------+---------------------------+---------------------------+--------------------------+
| Layer | Net - Wire Length | Net - Wire Number | Net - Via Number | Net - Patch Number | Special Net - Wire Length | Special Net - Wire Number | Special Net - Via Number |
+-------+-------------------+-------------------+------------------+--------------------+---------------------------+---------------------------+--------------------------+
| nwell | 0                 | 0                 | 0                | 0                  | 0                         | 0                         | 0                        |
| pwell | 0                 | 0                 | 0                | 0                  | 0                         | 0                         | 0                        |
| li1   | 0                 | 0                 | 0                | 0                  | 0                         | 0                         | 0                        |
| mcon  | 0                 | 0                 | 0                | 0                  | 0                         | 0                         | 0                        |
| met1  | 0                 | 0                 | 0                | 0                  | 5203200                   | 40                        | 0                        |
| via   | 0                 | 0                 | 0                | 0                  | 0                         | 0                         | 180                      |
| met2  | 0                 | 0                 | 0                | 0                  | 0                         | 0                         | 0                        |
| via2  | 0                 | 0                 | 0                | 0                  | 0                         | 0                         | 180                      |
| met3  | 0                 | 0                 | 0                | 0                  | 0                         | 0                         | 0                        |
| via3  | 0                 | 0                 | 0                | 0                  | 0                         | 0                         | 180                      |
| met4  | 0                 | 0                 | 0                | 0                  | 1173150                   | 9                         | 0                        |
| via4  | 0                 | 0                 | 0                | 0                  | 0                         | 0                         | 41                       |
| met5  | 0                 | 0                 | 0                | 0                  | 1170720                   | 9                         | 0                        |
+-------+-------------------+-------------------+------------------+--------------------+---------------------------+---------------------------+--------------------------+

报告的参数说明如下表所示<br>

参数名说明
Layer第n层信息,按从下到上的层顺序递增
Net - Wire Length统计当前层所有 Net 的总线长
Net - Wire Number统计当前层所有 Net 的 Wire 类型的Segment数据的总个数
Net - Via Number统计当前层所有 Net 的 Via 类型的Segment数据的总个数
Net - Patch Number统计当前层所有 Net 的 Patch 类型的Segment数据的总个数
Special Net - Wire Length统计当前层所有 Special Net 的总线长
Special Net - Wire Number统计当前层所有 Special Net 的 Wire 类型的Segment数据的总个数
Special Net - Via Number统计当前层所有 Special Net 的 Via 类型的Segment数据的总个数

Summary - Pin Distribution<br>
按Pin的个数统计所有的 Net 和 Instance 的分布情况<br>
以 CTS 的结果为例<br>

Summary - Pin Distribution
+------------+------------+-----------+-----------------+----------------+
| Pin Number | Net Number | Net Ratio | Instance Number | Instance Ratio |
+------------+------------+-----------+-----------------+----------------+
| 0          | 0          | 0.000000  | 1               | 0.001063       |
| 1          | 0          | 0.000000  | 0               | 0.000000       |
| 2          | 490        | 0.717423  | 0               | 0.000000       |
| 3          | 116        | 0.169839  | 0               | 0.000000       |
| 4          | 20         | 0.029283  | 293             | 0.311371       |
| 5          | 25         | 0.036603  | 0               | 0.000000       |
| 6          | 16         | 0.023426  | 370             | 0.393199       |
| 7          | 0          | 0.000000  | 133             | 0.141339       |
| 8          | 7          | 0.010249  | 117             | 0.124336       |
| 9          | 1          | 0.001464  | 27              | 0.028693       |
| 10         | 0          | 0.000000  | 0               | 0.000000       |
| 11         | 6          | 0.008785  | 0               | 0.000000       |
| 12         | 0          | 0.000000  | 0               | 0.000000       |
| 13         | 1          | 0.001464  | 0               | 0.000000       |
| 14         | 0          | 0.000000  | 0               | 0.000000       |
| 15         | 0          | 0.000000  | 0               | 0.000000       |
| 16         | 0          | 0.000000  | 0               | 0.000000       |
| 17         | 0          | 0.000000  | 0               | 0.000000       |
| 18         | 0          | 0.000000  | 0               | 0.000000       |
| 19         | 0          | 0.000000  | 0               | 0.000000       |
| 20         | 0          | 0.000000  | 0               | 0.000000       |
| 21         | 0          | 0.000000  | 0               | 0.000000       |
| 22         | 0          | 0.000000  | 0               | 0.000000       |
| 23         | 1          | 0.001464  | 0               | 0.000000       |
| 24         | 0          | 0.000000  | 0               | 0.000000       |
| 25         | 0          | 0.000000  | 0               | 0.000000       |
| 26         | 0          | 0.000000  | 0               | 0.000000       |
| 27         | 0          | 0.000000  | 0               | 0.000000       |
| 28         | 0          | 0.000000  | 0               | 0.000000       |
| 29         | 0          | 0.000000  | 0               | 0.000000       |
| 30         | 0          | 0.000000  | 0               | 0.000000       |
| 31         | 0          | 0.000000  | 0               | 0.000000       |
| 32         | 0          | 0.000000  | 0               | 0.000000       |
| >= 32      | 0          | 0.000000  | 0               | 0.000000       |
+------------+------------+-----------+-----------------+----------------+

报告的参数说明如下表所示<br>

参数名说明
Pin Number当前统计的 Pin 个数
Net Number统计 Pin 个数相同的的 Net 数量
Net Ratio统计 Pin 个数相同的的 Net 数量与总 Net 数量的占比 ,即 统计的 Net 个数 / 所有 Net 个数
Instance Number统计非PDN PIN 的 Pin 个数相同的的 Instance 数量
Instance Ratio统计的 Instance 数量与总 Instance 数量的占比 ,即 统计的 Instance 个数 / 所有 Instance 个数
线长、拥塞评估报告

以 Placement 结果的 Design 线长评估和拥塞评估报告为例,以下对评估报告的各个参数、标签进行说明<br>

Congestion Report<br>
查看 Placement 结果的拥塞评估报告,路径在 ./result/report/eval/iPL_result_congestion.rpt<br>

###################################################################
Congestion Report
+------------------------+---------------+-------------+
| Grid Bin Size          | Bin Partition | Total Count |
+------------------------+---------------+-------------+
| 509 * 508              | 256 by 256    | 65536       |
+------------------------+---------------+-------------+
| Instance Density Range | Bins Count    | Percentage  |
+------------------------+---------------+-------------+
| 0.95 ~ 1.00            | 24738         | 37.75       |
| 0.90 ~ 0.95            | 450           | 0.69        |
| 0.85 ~ 0.90            | 205           | 0.31        |
| 0.80 ~ 0.85            | 352           | 0.54        |
| 0.75 ~ 0.80            | 0             | 0.00        |
+------------------------+---------------+-------------+
| Pin Count Range        | Bins Count    | Percentage  |
+------------------------+---------------+-------------+
| 7 ~ 8                  | 17            | 0.03        |
| 6 ~ 7                  | 50            | 0.08        |
| 6 ~ 6                  | 0             | 0.00        |
| 5 ~ 6                  | 0             | 0.00        |
| 4 ~ 5                  | 388           | 0.59        |
+------------------------+---------------+-------------+

报告的参数说明如下表所示<br>

参数名说明
Grid Bin Size版图(core)区域所划分网格的:长度 * 宽度
Bin Partition版图(core)区域所划分网格数:水平数 by 竖直数
Total Count版图(core)区域所有网格数
Instance Density Range与网格重叠的单元面积总和除以单个网格面积,用于表征较高密度的网格
Bins Count对应单元密度的网格数
Percentage对应单元密度的网格数与所有网格数的比值
Pin Count Range单个网格内的引脚个数,用于表征较高引脚密度的网格
Bins Count对应引脚密度的网格数
Percentage对应引脚密度的网格数与所有网格数的比值

Wire Length Report<br>
查看 Placement 结果的线长评估报告,路径在 ./result/report/eval/iPL_result_wirelength.rpt<br>

###################################################################
Wire Length Report
+-------------------+--------------+----------------+------------------+----------------+
| Wire-length Model | Total Length | Average Length | Longest Net Name | Longest Length |
+-------------------+--------------+----------------+------------------+----------------+
| HPWL              | 9944165      | 14732          | clk              | 214845         |
| Bound2Bound       | 10618154     | 15730          | clk              | 315427         |
| Flute             | 10672566     | 15811          | clk              | 441165         |
+-------------------+--------------+----------------+------------------+----------------+

报告的参数说明如下表所示<br>

参数名说明
Wire-length Model计算线长的方法,目前支持三种线长计算方法,包括 HPWL、Bound2Bound、Flute
Total Length统计所有 Net 的总线长
Average Length所有线网的平均线长,即 统计所有 Net 的总线长 / 所有 Net 个数
Longest Net Name线长最大的 Net 名称
Longest Length线长最大的 Net 线长
DRC违例报告

以 Routing 结果的 Design DRC报告为例,以下对报告的各个参数、标签进行说明<br>
查看 Routing 结果的DRC检测报告,路径在 ./result/report/drc/iRT_drc.rpt<br>

Drc Summary<br>
DRC 违例分布统计如下表所示

###################################################################
Drc Summary
+-----------------------------------+------------+
| DRC Type                          | Number     |
+-----------------------------------+------------+
| Cut Different Layer Spacing       | 0          |
| Cut EOL Spacing                   | 0          |
| Cut Enclosure                     | 537550672  |
| Cut EnclosureEdge                 | 1159733280 |
| Cut Spacing                       | 0          |
| Metal Corner Filling Spacing      | 892941358  |
| Metal EOL Spacing                 | 0          |
| Metal JogToJog Spacing            | 540357424  |
| Metal Notch Spacing               | 775040288  |
| Metal Parallel Run Length Spacing | 1663       |
| Metal Short                       | 747        |
| MinHole                           | 173298255  |
| MinStep                           | 1344282656 |
| Minimal Area                      | 808595560  |
+-----------------------------------+------------+

报告的参数说明如下表所示<br>

参数名说明
DRC TypeDRC 检测规则类型
NumberDRC 违例数量

其中类型 DRC Type 的分类说明如下<br>

  • Cut Different Layer Spacing :
  • Cut EOL Spacing :
  • Cut Enclosure :
  • Cut EnclosureEdge :
  • Cut Spacing :
  • Metal Corner Filling Spacing :
  • Metal EOL Spacing :
  • Metal JogToJog Spacing :
  • Metal Notch Spacing :
  • Metal Parallel Run Length Spacing :
  • Metal Short :
  • MinHole :
  • MinStep :
  • Minimal Area :

Connectivity Summary<br>
检测所有 Net 的连通性

Connectivity Summary
+------------------------------------+----------+
| Connectivity Check                 | Number   |
+------------------------------------+----------+
| Disconneted nets [pin number >= 2] | 38 / 683 |
| Disconneted nets [pin number < 2]  | 0 / 683  |
+------------------------------------+----------+

报告的参数说明如下表所示<br>

参数名说明
Connectivity Check未连通的 Net 类别,按 Net 中包含的 Pin 个数进行分别统计
Number未连通的 Net 数量和总 Net 数量 比值

DRC - Disconnected Net<br>
记录未连通的所有 Net 名称

DRC - Disconnected Net
+------------------+
| Disconnected Net |
+------------------+
| req_rdy          |
| resp_val         |
| req_val          |
| resp_rdy         |
| reset            |
| clk              |
| req_msg[16]      |
| req_msg[17]      |
| req_msg[18]      |
| req_msg[19]      |
| req_msg[20]      |
| req_msg[21]      |
| req_msg[22]      |
| req_msg[23]      |
| req_msg[24]      |
| req_msg[25]      |
| req_msg[26]      |
| req_msg[27]      |
| req_msg[28]      |
| req_msg[29]      |
| req_msg[30]      |
| req_msg[31]      |
| req_msg[0]       |
| req_msg[1]       |
| req_msg[2]       |
| req_msg[3]       |
| req_msg[4]       |
| req_msg[5]       |
| req_msg[6]       |
| req_msg[7]       |
| req_msg[8]       |
| req_msg[10]      |
| req_msg[9]       |
| req_msg[11]      |
| req_msg[12]      |
| req_msg[14]      |
| req_msg[13]      |
| req_msg[15]      |
|                  |
+------------------+

物理后端设计全流程运行

运行sky130目录的run_iEDA.py,将自动运行从读取.v Netlist文件到最后生成 .gdsii GDSII文件的全流程,全流程使用默认参数,所有运行结果将保存在scripts/design/sky130_gcd/result目录下,详细的功能描述、参数配置、输入、输出和报告等可查看点工具运行。

运行脚本
# 切换目录到sky130
cd <sky130 path>
# 运行自动化流程脚本
./run_iEDA.py
输入输出一览表

全流程自动运行,前后流程的输入、输出已在脚本中配置好且存在先后依赖关系,如下表所示

FlowScriptConfigDesign InputDesign OutputReport
布图规划 (Floorpan)./iEDA -script ./script/iFP_script/run_iFP.tcl./result/verilog/gcd.v./result/iFP_result.def<br> ./result/iFP_result.v./result/report/fp_db.rpt
网表优化(Fix Fanout)./iEDA -script ./script/iNO_script/run_iNO_fix_fanout.tcl./iEDA_config/cts_default_config.json./result/iFP_result.def./result/iTO_fix_fanout_result.def<br> ./result/iTO_fix_fanout_result.v./result/report/fixfanout_db.rpt
布局 (Placement)./iEDA -script ./script/iPL_script/run_iPL.tcl./iEDA_config/pl_default_config.json./result/iTO_fix_fanout_result.def./result/iPL_result.def<br> ./result/iPL_result.v./result/report/pl_db.rpt
布局结果评估 (评估线长和拥塞)./iEDA -script ./script/iPL_script/run_iPL_eval.tcl./result/iPL_result.def./result/report/eval/iPL_result_wirelength.rpt<br> ./result/report/eval/iPL_result_congestion.rpt
时钟树综合 (CTS)./iEDA -script ./script/iCTS_script/run_iCTS.tcl./iEDA_config/cts_default_config.json./result/iPL_result.def./result/iCTS_result.def<br> ./result/iCTS_result.v./result/report/cts_db.rpt
时钟树综合结果评估 (评估线长)./iEDA -script ./script/iCTS_script/run_iCTS_eval.tcl./result/iCTS_result.def./result/report/eval/iCTS_result_wirelength.rpt
时钟树综合时序评估 (评估时序)./iEDA -script ./script/iCTS_script/run_iCTS_STA.tcl./result/iCTS_result.def./result/cts/sta/
修复DRV违例 (Fix DRV Violation)./iEDA -script ./script/iTO_script/run_iTO_drv.tcl./iEDA_config/to_default_config_drv.json./result/iCTS_result.def./result/iTO_drv_result.def<br> ./result/iTO_drv_result.v./result/report/drv_db.rpt
Fix DRV结果评估 (评估时序)./iEDA -script ./script/iTO_script/run_iTO_drv_STA.tcl./result/iTO_drv_result.def./result/to/drv/sta/
修复Hold违例(Fix Hold Violation)./iEDA -script ./script/iTO_script/run_iTO_hold.tcl./iEDA_config/to_default_config_hold.json./result/iTO_drv_result.def./result/iTO_hold_result.def<br> ./result/iTO_hold_result.v./result/report/hold_db.rpt
Fix Hold结果评估(评估时序)./iEDA -script ./script/iTO_script/run_iTO_hold_STA.tcl./result/iTO_hold_result.def./result/to/hold/sta/
单元合法化(Legalization)./iEDA -script ./script/iPL_script/run_iPL_legalization.tcl./iEDA_config/pl_default_config.json./result/iTO_hold_result.def./result/iPL_lg_result.def<br> ./result/iPL_lg_result.v./result/report/lg_db.rpt
合法化结果评估(评估线长和拥塞)./iEDA -script ./script/iPL_script/run_iPL_legalization_eval.tcl./result/iPL_lg_result.def./result/report/eval/iPL_lg_result_wirelength.rpt<br> ./result/report/eval/iPL_lg_result_congestion.rpt
布线 (Routing)./iEDA -script ./script/iRT_script/run_iRT.tcl./result/iPL_lg_result.def./result/iRT_result.def ./result/iRT_result.v./result/report/rt_db.rpt
布线结果评估(评估线长)./iEDA -script ./script/iRT_script/run_iRT_eval.tcl./result/iRT_result.def./result/report/eval/iRT_result_wirelength.rpt
布线结果评估 (评估时序)./iEDA -script ./script/iRT_script/run_iRT_STA.tcl./result/iRT_result.def./result/rt/sta/
布线结果DRC./iEDA -script ./script/iRT_script/run_iRT_DRC.tcl./iEDA_config/drc_default_config.json./result/iRT_result.def./result/report/drc/iRT_drc.rpt
单元填充 (Filler)./iEDA -script ./script/iPL_script/run_iPL_filler.tcl./iEDA_config/pl_default_config.json./result/iRT_result.def./result/iPL_filler_result.def<br> ./result/iPL_filler_result.v./result/report/filler_db.rpt
DEF转GDSII./iEDA -script ./script/DB_script/run_def_to_gds_text.tcl./result/iPL_filler_result.def./result/final_design.gds2

布图规划 (Floorplan)

执行脚本<br>

./iEDA -script ./script/iFP_script/run_iFP.tcl 

参数配置<br>

输入<br>

  • ./result/verilog/gcd.v

输出

  • ./result/iFP_result.def

评测和报告<br>

  • ./result/report/fp_db.rpt

GUI<br>
step 1:修改脚本 ./script/iGUI_script/run_iGUI.tcl 的输入设计 def 为 ./result/iFP_result.def

#===========================================================
##   read def
#===========================================================
def_init -path ./result/iFP_result.def

step 2: 执行iEDA GUI脚本

./iEDA_gui -script ./script/iGUI_script/run_iGUI.tcl 

step 3: 查看GUI

初始版图

PDN

网表优化(Fix Fanout)

执行脚本<br>

./iEDA -script ./script/iNO_script/run_iNO_fix_fanout.tcl 

参数配置<br>
参数配置的路径在 ./iEDA_config/no_default_config_fixfanout.json,如下所示

{
    "file_path": {
        "design_work_space": "./result/no",
        "sdc_file": "",
        "lib_files": "",
        "lef_files": "",
        "def_file": "",
        "output_def": "",
        "report_file": "./result/no/report.txt"
    },
    "insert_buffer": "sky130_fd_sc_hs__buf_8",
    "max_fanout": 30
}

可配置参数定义如下

参数名默认值说明
design_work_space./result/no设置 Fix Fanout 运行过程的工作区路径
sdc_file无效参数,后续删除
lib_files无效参数,后续删除
lef_files无效参数,后续删除
def_file无效参数,后续删除
output_def无效参数,后续删除
report_file./result/no/report.txtFix Fanout 过程中产生的报告
insert_buffersky130_fd_sc_hs__buf_8设置插入的 buffer 名称
max_fanout30最大Fanout数量

输入<br>

  • ./result/iFP_result.def

输出<br>

  • ./result/iTO_fix_fanout_result.def
  • ./result/iTO_fix_fanout_result.v

评测和报告<br>

  • ./result/report/fixfanout_db.rpt

GUI<br>
step 1:修改脚本 ./script/iGUI_script/run_iGUI.tcl 的输入设计 def 为 ./result/iTO_fix_fanout_result.def

#===========================================================
##   read def
#===========================================================
def_init -path ./result/iTO_fix_fanout_result.def

step 2: 执行iEDA GUI脚本

./iEDA_gui -script ./script/iGUI_script/run_iGUI.tcl 

step 3: 查看GUI

布局 (Placement)

执行脚本<br>

./iEDA -script ./script/iPL_script/run_iPL.tcl 

参数配置<br>
参考iEDA_config/pl_default_config.json: ./scripts/design/sky130_gcd/iEDA_config/pl_default_config.json

JSON参数功能说明参数范围默认值
is_max_length_opt是否开启最大线长优化[0,1]0
max_length_constraint指定最大线长[0-1000000]1000000
is_timing_effort是否开启时序优化模式[0,1]0
is_congestion_effort是否开启可布线性优化模式
ignore_net_degree忽略超过指定pin个数的线网[10-10000]100
num_threads指定的CPU线程数[1-64]8
[GP-Wirelength] init_wirelength_coef设置初始线长系数[0.0-1.0]0.25
[GP-Wirelength] reference_hpwl调整密度惩罚的参考线长[100-1000000]446000000
[GP-Wirelength] min_wirelength_force_bar控制线长边界[-1000-0]-300
[GP-Density] target_density指定的目标密度[0.0-1.0]0.8
[GP-Density] bin_cnt_x指定水平方向上Bin的个数[16,32,64,128,256,512,1024]512
[GP-Density] bin_cnt_y指定垂直方向上Bin的个数[16,32,64,128,256,512,1024]512
[GP-Nesterov] max_iter指定最大的迭代次数[50-2000]2000
[GP-Nesterov] max_backtrack指定最大的回溯次数[0-100]10
[GP-Nesterov] init_density_penalty指定初始状态的密度惩罚[0.0-1.0]0.00008
[GP-Nesterov] target_overflow指定目标的溢出值[0.0-1.0]0.1
[GP-Nesterov] initial_prev_coordi_update_coef初始扰动坐标时的系数[10-10000]100
[GP-Nesterov] min_precondition设置precondition的最小值[1-100]1
[GP-Nesterov] min_phi_coef设置最小的phi参数[0.0-1.0]0.95
[GP-Nesterov] max_phi_coef设置最大的phi参数[0.0-1.0]1.05
[BUFFER] max_buffer_num指定限制最大buffer插入个数[0-1000000]35000
[BUFFER] buffer_type指定可插入的buffer类型名字工艺相关列表[...,...]
[LG] max_displacement指定单元的最大移动量[10000-1000000]50000
[LG] global_right_padding指定单元间的间距(以Site为单位)[0,1,2,3,4...]1
[DP] max_displacement指定单元的最大移动量[10000-1000000]50000
[DP] global_right_padding指定单元间的间距(以Site为单位)[0,1,2,3,4...]1
[Filler] first_iter指定第一轮迭代使用的Filler工艺相关列表[...,...]
[Filler] second_iter指定第二轮迭代使用的Filler工艺相关列表[...,...]
[Filler] min_filler_width指定Filler的最小宽度(以Site为单位)工艺相关1
[MP] fixed_macro指定固定的宏单元 (string macro_name)设计相关列表[...,...]
[MP] fixed_macro_coordinate指定固定宏单元的位置坐标(int location_x, int location_y)设计相关列表[...,...]
[MP] blockage指定宏单元阻塞矩形区域,宏单元应该避免摆放在该区域(int left_bottom_x, int left_bottom_y, int right_top_x, int right_top_y)设计相关列表[...,...]
[MP] guidance_macro指定指导摆放宏单元,每个宏单元可以设置期望摆放的区域 (string macro_name)设计相关列表[...,...]
[MP] guidance指定对应宏单元的指导摆放区域(int left_bottom_x, int left_bottom_y, int right_top_x, int right_top_y)设计相关列表[...,...]
[MP] solution_type指定解的表示方式["BStarTree","SequencePair"]"BStarTree"
[MP] perturb_per_step指定模拟退火每步扰动次数[10-1000]100
[MP] cool_rate指定模拟退火温度冷却率[0.0-1.0]0.92
[MP] parts指定标准单元划分数(int)[10-100]66
[MP] ufactor指定标准单元划分不平衡值 (int)[10-1000]100
[MP] new_macro_density指定虚拟宏单元密度[0.0-1.0]0.6
[MP] halo_x指定宏单元的halo(横向)[0-1000000]0
[MP] halo_y指定宏单元的halo(纵向)[0-1000000]0
[MP] output_path指定输出文件路径"./result/pl"

输入<br>

  • ./result/iTO_fix_fanout_result.def

输出<br>

  • ./result/iPL_result.def
  • ./result/iPL_result.v

评测和报告<br>

  • ./result/report/pl_db.rpt

iPL工具的中间报告默认存放在目录:./scripts/design/sky130_gcd/result/pl/

  • report/violation_record.txt :布局违例的单元
  • report/wirelength_record.txt :布局的HPWL线长、STWL线长以及长线线长统计
  • report/density_record.txt :布局的峰值bin密度
  • report/timing_record.txt :布局的时序信息(wns、tns),调用Flute进行简易绕线

GUI<br>
step 1:修改脚本 ./script/iGUI_script/run_iGUI.tcl 的输入设计 def 为 ./result/iPL_result.def

#===========================================================
##   read def
#===========================================================
def_init -path ./result/iPL_result.def

step 2: 执行iEDA GUI脚本

./iEDA_gui -script ./script/iGUI_script/run_iGUI.tcl 

step 3: 查看GUI

时钟树综合 (CTS)

执行脚本<br>

./iEDA -script ./script/iCTS_script/run_iCTS.tcl 

参数配置<br>

参数类型说明
skew_bound浮点字符串时钟源到达各个寄存器的最大时钟偏差
max_buf_tran浮点字符串缓冲器最大转换时间约束
max_sink_tran浮点字符串寄存器最大转换时间约束
max_cap浮点字符串最大负载电容约束
max_fanout整型字符串最大扇出约束
max_length整型字符串最大线网线长约束
scale_size整型用于减小规模加速时钟树构建的划分程度
buffer_type字符串列表用于指定时钟树综合阶段可用的缓冲器类型列表
routing_layer整型列表指定时钟绕线层以获取单位电容、电阻信息
use_netlist字符串("ON" or "OFF")是否只对"net_list"中的线网进行时钟树综合,若该参数为"OFF"则默认对所有时钟线长进行时钟树综合
net_list字符串字典列表指定需要进行时钟树构建的线网

输入<br>

  • ./result/iPL_result.def

输出<br>

  • ./result/iCTS_result.def
  • ./result/iCTS_result.v

评测和报告<br>

  • ./result/report/cts_db.rpt

GUI<br>
step 1:修改脚本 ./script/iGUI_script/run_iGUI.tcl 的输入设计 def 为 ./result/iCTS_result.def

#===========================================================
##   read def
#===========================================================
def_init -path ./result/iCTS_result.def

step 2: 执行iEDA GUI脚本

./iEDA_gui -script ./script/iGUI_script/run_iGUI.tcl 

step 3: 查看GUI

修复DRV违例 (Fix DRV Violation)

执行脚本<br>

./iEDA -script ./script/iTO_script/run_iTO_drv.tcl 

参数配置<br>

参考"./scripts/design/sky130_gcd/iEDA_config/to_default_config_drv.json"

参数名默认值说明
design_work_space./result/to设置运行过程的工作区路径
sdc_file无效参数,后续删除
lib_files无效参数,后续删除
lef_files无效参数,后续删除
def_file无效参数,后续删除
output_def无效参数,后续删除
report_file./result/to/report.txt优化过程产生的报告
gds_file./result/to/to.gds生成的GDS文件路径,默认不会生成该文件
setup_slack_margin0.0setup slack小于该值时认为违例,也是slack优化的目标
hold_slack_margin0.0hold slack小于该值时认为违例,也是slack优化的目标
max_buffer_percent0.2缓冲器插入的面积占芯片面积的最大比例
max_utilization0.8缓冲器插入后的面积+其他单元的面积,占芯片面积的最大比例
DRV_insert_bufferssky130_fd_sc_hs__buf_8优化DRV时使用的缓冲器(需要针对设计指定),为空时会自动从缓冲器库中选择
setup_insert_bufferssky130_fd_sc_hs__buf_8优化setup时使用的缓冲器(需要针对设计指定),为空时会自动从缓冲器库中选择
hold_insert_bufferssky130_fd_sc_hs__buf_8优化hold时使用的缓冲器(需要针对设计指定),为空时会自动从缓冲器库中选择
number_passes_allowed_decreasing_slack5迭代优化setup时,允许WNS不断变差的最大连续迭代次数
rebuffer_max_fanout20针对setup,线网的fanout超过该值时不会对其进行缓冲器插入优化
split_load_min_fanout8针对setup,线网的fanout大于该值时通过插入缓冲器把fanout降低

输入<br>

  • ./result/iCTS_result.def

输出<br>

  • ./result/iTO_drv_result.def
  • ./result/iTO_drv_result.v

评测和报告<br>

  • ./result/report/drv_db.rpt

修复Hold违例(Fix Hold Violation)

执行脚本<br>

./iEDA -script ./script/iTO_script/run_iTO_hold.tcl

参数配置<br>

参考"./scripts/design/sky130_gcd/iEDA_config/to_default_config_hold.json"

参数详细信息同修复DRV违例

输入<br>

  • ./result/iTO_drv_result.def

输出<br>

  • ./result/iTO_hold_result.def
  • ./result/iTO_hold_result.v

评测和报告<br>

  • ./result/report/hold_db.rpt

单元合法化(Legalization)

执行脚本<br>

./iEDA -script ./script/iPL_script/run_iPL_legalization.tcl 

参数配置<br>

输入<br>

  • ./result/iTO_hold_result.def

输出<br>

  • ./result/iPL_lg_result.def
  • ./result/iPL_lg_result.v

评测和报告<br>

  • ./result/report/lg_db.rpt

GUI<br>
step 1:修改脚本 ./script/iGUI_script/run_iGUI.tcl 的输入设计 def 为 ./result/iPL_lg_result.def

#===========================================================
##   read def
#===========================================================
def_init -path ./result/iPL_lg_result.def

step 2: 执行iEDA GUI脚本

./iEDA_gui -script ./script/iGUI_script/run_iGUI.tcl 

step 3: 查看GUI

布线 (Routing)

执行脚本<br>

./iEDA -script ./script/iRT_script/run_iRT.tcl 

参数配置<br>

输入<br>

  • ./result/iPL_lg_result.def

输出<br>

  • ./result/iRT_result.def
  • ./result/iRT_result.v

评测和报告<br>

  • ./result/report/rt_db.rpt

GUI<br>
step 1:修改脚本 ./script/iGUI_script/run_iGUI.tcl 的输入设计 def 为 ./result/iRT_result.def

#===========================================================
##   read def
#===========================================================
def_init -path ./result/iRT_result.def

step 2: 执行iEDA GUI脚本

./iEDA_gui -script ./script/iGUI_script/run_iGUI.tcl 

step 3: 查看GUI

单元填充 (Filler)

执行脚本<br>

./iEDA -script ./script/iPL_script/run_iPL_filler.tcl 

参数配置<br>

输入<br>

  • ./result/iRT_result.def

输出<br>

  • ./result/iPL_filler_result.def
  • ./result/iPL_filler_result.v

评测和报告<br>

  • ./result/report/filler_db.rpt

GUI<br>
step 1:修改脚本 ./script/iGUI_script/run_iGUI.tcl 的输入设计 def 为 ./result/iPL_filler_result.def

#===========================================================
##   read def
#===========================================================
def_init -path ./result/iPL_filler_result.def

step 2: 执行iEDA GUI脚本

./iEDA_gui -script ./script/iGUI_script/run_iGUI.tcl 

step 3: 查看GUI

DEF转GDSII

执行脚本<br>

./iEDA -script ./script/DB_script/run_def_to_gds_text.tcl

参数配置<br>

输入<br>

  • ./result/iPL_filler_result.def

输出<br>

  • ./result/final_design.gds2

GUI操作手册

运行GUI

编译构建

step 1: 修改可编译选项
切换到iEDA工程目录

# 切换到工程目录 iEDA
cd iEDA

设置顶层 CMakelist.txt 的BUILD_GUI为 ON

# 设置顶层 CMakelist.txt 的BUILD_GUI为 ON
option(BUILD_GUI "If ON, build GUI." ON)

step 2: 编译构建

# 通过apt安装编译依赖,需要root权限
sudo bash build.sh -i apt
# 编译 iEDA
bash build.sh -j 16

step 3: 拷贝副本为 iEDA_gui

# 拷贝 iEDA 到sky130 目录 
cp ./bin/iEDA scripts/design/sky130_gcd/iEDA_gui

配置设计文件

修改脚本 ./script/iGUI_script/run_iGUI.tcl 的输入设计 def 为查看的设计文件, 比如修改为 ./result/iFP_result.def

#===========================================================
##   read def
#===========================================================
def_init -path ./result/iFP_result.def

运行GUI

执行iEDA GUI脚本

./iEDA_gui -script ./script/iGUI_script/run_iGUI.tcl 

可视化

下图为读取 ./result/iFP_result.def 设计文件的可视化结果

GUI操作

TCL命令

GUI操作

TCL命令手册