Skip to content

Commit

Permalink
!35 monthly merge
Browse files Browse the repository at this point in the history
Merge pull request !35 from Harry/master
  • Loading branch information
0xharry authored and gitee-org committed Oct 11, 2024
2 parents 2740005 + fb70bc4 commit a68b691
Show file tree
Hide file tree
Showing 332 changed files with 10,938 additions and 14,627 deletions.
1 change: 1 addition & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@
[submodule "src/third_party/LSAssigner4iEDA"]
path = src/third_party/LSAssigner4iEDA
url = https://gitee.com/li-jinyuan/LSAssigner4iEDA
branch = main
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ endif()

set(SANITIZER OFF)
if(SANITIZER)
add_definitions(-DUSE_CPP_STD)
add_compile_options("-fsanitize=address")
link_libraries("-fsanitize=address")
message("address sanitizer load")
Expand Down
8 changes: 2 additions & 6 deletions README-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@
Open-source is not a goal but a way

开源不是目的,而是实现方式
<h2>
</h2>

</div>


Expand Down Expand Up @@ -180,7 +181,6 @@ Fork 此 iEDA 仓库,修改代码后提交 [Pull Request](https://gitee.com/os
| lemon | [lemon](https://lemon.cs.elte.hu/trac/lemon) | 图、网络中的高效建模和优化. |
| SALT | [SALT]([SALT](https://github.com/chengengjie/salt)) | 生成VLSI路由拓扑,在路径长度(浅度)和总线长(亮度)之间进行权衡. |
| scipoptsuite | [SCIP](https://scipopt.org/index.php#welcome) | 用于快速求解混合整数规划 (MIP) 和混合整数非线性规划 (MINLP) . |
| parser/verilog | [OpenROAD/OpenSTA/verilog](https://github.com/The-OpenROAD-Project/OpenSTA/tree/master/verilog) | 解析netlist文件 . |
| mt-kahypar | [mt-kahypar]([mt-kahypar]https://github.com/kahypar/mt-kahypar.git) | 多线程超图划分器. |

我们深深地感谢来自开源社区的支持,我们也鼓励其他开源项目在[木兰宽松许可证](LICENSE)的范围下复用我们的代码。
Expand All @@ -193,11 +193,7 @@ Fork 此 iEDA 仓库,修改代码后提交 [Pull Request](https://gitee.com/os

[License-url]: LICENSE
[README-en-path]: README.md
[README-cn-path]: README-CN.md
[Code-conduct-md]: docs/tbd/CodeConduct.md
[Tcl-menu-xls]: docs/tbd/TclMenu.xls
[iEDA-OSCC-url]: https://ieda.oscc.cc/
[ISEDA-2023-iEDA-url]: https://www.eda2.com/conferenceHome/program/detail?key=s2
[ISEDA-2023-panel6-url]: https://www.eda2.com/conferenceHome/program/detail?key=panel6
[iEDA-paper]: docs/paper/ISEDA'23-iEDA-final.pdf
[iEDA-slides]: docs/ppt/ISEDA'23-iEDA-lxq-v8.pptx
2 changes: 0 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,6 @@ In the development of iEDA, some sub-modules from the open-source community are
| lemon | [lemon](https://lemon.cs.elte.hu/trac/lemon) | Efficient modeling and optimization in graphs and networks. |
| SALT | [SALT]([SALT](https://github.com/chengengjie/salt)) | Generating VLSI routing topology, It trades off between path length (shallowness) and wirelength (lightness). |
| scipoptsuite | [SCIP](https://scipopt.org/index.php#welcome) | It is used to quickly solve mixed integer programming (MIP) and mixed integer nonlinear programming (MINLP). |
| parser/verilog | [OpenROAD/OpenSTA/verilog](https://github.com/The-OpenROAD-Project/OpenSTA/tree/master/verilog) | parse netlist file . |
| mt-kahypar | [mt-kahypar]([mt-kahypar]https://github.com/kahypar/mt-kahypar.git) | Multi-Threaded Karlsruhe Hypergraph Partitioner . |

We are grateful for the support of the open-source community and encourage other open-source projects to reuse our code within the scope of the [MulanPSL-2.0](LICENSE).
Expand All @@ -217,7 +216,6 @@ We are grateful for the support of the open-source community and encourage other

[License-url]: LICENSE
[README-CN-path]: README-CN.md
[README-EN-path]: README.md
[Code-conduct-md]: docs/tbd/CodeConduct.md
[Tcl-menu-xls]: docs/tbd/TclMenu.xls
[iEDA-OSCC-url]: https://ieda.oscc.cc/
Expand Down
8 changes: 4 additions & 4 deletions docs/user_guide/iEDA_user_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -621,9 +621,9 @@ Drc Summary
| Cut EnclosureEdge | 1159733280 |
| Cut Spacing | 0 |
| Metal Corner Filling Spacing | 892941358 |
| Metal EOL Spacing | 0 |
| EndOfLine Spacing | 0 |
| Metal JogToJog Spacing | 540357424 |
| Metal Notch Spacing | 775040288 |
| Notch Spacing | 775040288 |
| Metal Parallel Run Length Spacing | 1663 |
| Metal Short | 747 |
| MinHole | 173298255 |
Expand All @@ -647,9 +647,9 @@ Drc Summary
- Cut EnclosureEdge : 
- Cut Spacing : 
- Metal Corner Filling Spacing : 
- Metal EOL Spacing : 
- EndOfLine Spacing : 
- Metal JogToJog Spacing : 
- Metal Notch Spacing : 
- Notch Spacing : 
- Metal Parallel Run Length Spacing : 
- Metal Short : 
- MinHole : 
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
},
"Density": {
"target_density": 0.8,
"is_adaptive_bin": 1,
"bin_cnt_x": 128,
"bin_cnt_y": 128
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,14 @@ source $::env(TCL_SCRIPT_DIR)/DB_script/db_init_lef.tcl
#===========================================================
## read def
#===========================================================
def_init -path $::env(RESULT_DIR)/iPL_filler_result.def
set DEFAULT_INPUT_DEF "$::env(RESULT_DIR)/iPL_filler_result.def"
def_init -path [expr {[info exists ::env(INPUT_DEF)]? $::env(INPUT_DEF) : $DEFAULT_INPUT_DEF}]

#===========================================================
## save gds
#===========================================================
gds_save -path $::env(RESULT_DIR)/final_design.gds2
set DEFAULT_OUTPUT_GDS "$::env(RESULT_DIR)/final_design.gds2"
gds_save -path [expr {[info exists ::env(GDS_FILE)]? $::env(GDS_FILE) : $DEFAULT_OUTPUT_GDS}]

#===========================================================
## Exit
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,17 @@ source $::env(TCL_SCRIPT_DIR)/DB_script/db_init_lef.tcl
#===========================================================
## read def
#===========================================================
def_init -path $::env(RESULT_DIR)/iPL_filler_result.def
set DEFAULT_INPUT_DEF "$::env(RESULT_DIR)/iPL_filler_result.def"
def_init -path [expr {[info exists ::env(INPUT_DEF)]? $::env(INPUT_DEF) : $DEFAULT_INPUT_DEF}]

#===========================================================
## save json
## Full layer information instance:(-discard li/mcon/nwell/pwell/met/via)
## use (-discard null) to choose all layer
#===========================================================
json_save -path $::env(RESULT_DIR)/final_design.json -discard li
json_save -path $::env(GDS_JSON_FILE) -discard li

#===========================================================
## Exit
#======================= ====================================
#===========================================================
flow_exit
6 changes: 4 additions & 2 deletions scripts/design/sky130_gcd/script/iCTS_script/run_iCTS.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ source $::env(TCL_SCRIPT_DIR)/DB_script/db_init_lef.tcl
#===========================================================
## read def
#===========================================================
def_init -path $::env(RESULT_DIR)/iPL_result.def
set DEFAULT_INPUT_DEF "$::env(RESULT_DIR)/iPL_result.def"
def_init -path [expr {[info exists ::env(INPUT_DEF)]? $::env(INPUT_DEF) : $DEFAULT_INPUT_DEF}]

#===========================================================
## run CTS
Expand All @@ -43,7 +44,8 @@ feature_tool -path $::env(RESULT_DIR)/feature/icts.json -step CTS
#===========================================================
## def & netlist
#===========================================================
def_save -path $::env(RESULT_DIR)/iCTS_result.def
set DEFAULT_OUTPUT_DEF "$::env(RESULT_DIR)/iCTS_result.def"
def_save -path [expr {[info exists ::env(OUTPUT_DEF)] ? $::env(OUTPUT_DEF) : $DEFAULT_OUTPUT_DEF}]

#===========================================================
## save netlist
Expand Down
3 changes: 2 additions & 1 deletion scripts/design/sky130_gcd/script/iFP_script/run_iFP.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,8 @@ source $::env(TCL_SCRIPT_DIR)/iFP_script/module/set_clocknet.tcl
#===========================================================
## save def
#===========================================================
def_save -path $::env(RESULT_DIR)/iFP_result.def
set DEFAULT_OUTPUT_DEF "$::env(RESULT_DIR)/iFP_result.def"
def_save -path [expr {[info exists ::env(OUTPUT_DEF)] ? $::env(OUTPUT_DEF) : $DEFAULT_OUTPUT_DEF}]

#===========================================================
## report db summary
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ source $::env(TCL_SCRIPT_DIR)/DB_script/db_init_lef.tcl
#===========================================================
## read def
#===========================================================
def_init -path $::env(RESULT_DIR)/iFP_result.def
set DEFAULT_INPUT_DEF "$::env(RESULT_DIR)/iFP_result.def"
def_init -path [expr {[info exists ::env(INPUT_DEF)]? $::env(INPUT_DEF) : $DEFAULT_INPUT_DEF}]

#===========================================================
## run TO to fix fanout
Expand All @@ -42,7 +43,8 @@ feature_tool -path $::env(RESULT_DIR)/feature/ino_opt.json -step fixFanout
#===========================================================
## save def
#===========================================================
def_save -path $::env(RESULT_DIR)/iTO_fix_fanout_result.def
set DEFAULT_OUTPUT_DEF "$::env(RESULT_DIR)/iTO_fix_fanout_result.def"
def_save -path [expr {[info exists ::env(OUTPUT_DEF)] ? $::env(OUTPUT_DEF) : $DEFAULT_OUTPUT_DEF}]

#===========================================================
## save netlist
Expand Down
6 changes: 4 additions & 2 deletions scripts/design/sky130_gcd/script/iPL_script/run_iPL.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ source $::env(TCL_SCRIPT_DIR)/DB_script/db_init_lef.tcl
#===========================================================
## read def
#===========================================================
def_init -path $::env(RESULT_DIR)/iTO_fix_fanout_result.def
set DEFAULT_INPUT_DEF "$::env(RESULT_DIR)/iTO_fix_fanout_result.def"
def_init -path [expr {[info exists ::env(INPUT_DEF)]? $::env(INPUT_DEF) : $DEFAULT_INPUT_DEF}]

#===========================================================
## run Placer
Expand All @@ -41,7 +42,8 @@ run_placer -config $::env(CONFIG_DIR)/pl_default_config.json
#===========================================================
## save def
#===========================================================
def_save -path $::env(RESULT_DIR)/iPL_result.def
set DEFAULT_OUTPUT_DEF "$::env(RESULT_DIR)/iPL_result.def"
def_save -path [expr {[info exists ::env(OUTPUT_DEF)] ? $::env(OUTPUT_DEF) : $DEFAULT_OUTPUT_DEF}]

#===========================================================
## save netlist
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ source $::env(TCL_SCRIPT_DIR)/DB_script/db_init_lef.tcl
#===========================================================
## read def
#===========================================================
def_init -path $::env(RESULT_DIR)/iRT_result.def
set DEFAULT_INPUT_DEF "$::env(RESULT_DIR)/iRT_result.def"
def_init -path [expr {[info exists ::env(INPUT_DEF)]? $::env(INPUT_DEF) : $DEFAULT_INPUT_DEF}]

#===========================================================
## run Filler
Expand All @@ -31,7 +32,8 @@ run_filler -config $::env(CONFIG_DIR)/pl_default_config.json
#===========================================================
## save def
#===========================================================
def_save -path $::env(RESULT_DIR)/iPL_filler_result.def
set DEFAULT_OUTPUT_DEF "$::env(RESULT_DIR)/iPL_filler_result.def"
def_save -path [expr {[info exists ::env(OUTPUT_DEF)] ? $::env(OUTPUT_DEF) : $DEFAULT_OUTPUT_DEF}]

#===========================================================
## save netlist
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ source $::env(TCL_SCRIPT_DIR)/DB_script/db_init_lef.tcl
#===========================================================
## read def
#===========================================================
def_init -path $::env(RESULT_DIR)/iTO_hold_result.def
set DEFAULT_INPUT_DEF "$::env(RESULT_DIR)/iTO_hold_result.def"
def_init -path [expr {[info exists ::env(INPUT_DEF)]? $::env(INPUT_DEF) : $DEFAULT_INPUT_DEF}]

#===========================================================
## run Placer
Expand All @@ -43,7 +44,8 @@ feature_tool -path $::env(RESULT_DIR)/feature/ipl_legalization.json -step legali
#===========================================================
## save def
#===========================================================
def_save -path $::env(RESULT_DIR)/iPL_lg_result.def
set DEFAULT_OUTPUT_DEF "$::env(RESULT_DIR)/iPL_lg_result.def"
def_save -path [expr {[info exists ::env(OUTPUT_DEF)] ? $::env(OUTPUT_DEF) : $DEFAULT_OUTPUT_DEF}]

#===========================================================
## save netlist
Expand Down
8 changes: 4 additions & 4 deletions scripts/design/sky130_gcd/script/iRT_script/run_iRT.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ source $::env(TCL_SCRIPT_DIR)/DB_script/db_init_lef.tcl
#===========================================================
## read def
#===========================================================
def_init -path $::env(RESULT_DIR)/iPL_lg_result.def
set DEFAULT_OUTPUT_DEF "$::env(RESULT_DIR)/iPL_lg_result.def"
def_init -path [expr {[info exists ::env(OUTPUT_DEF)] ? $::env(OUTPUT_DEF) : $DEFAULT_OUTPUT_DEF}]

#===========================================================
## run Router
Expand All @@ -49,12 +50,11 @@ feature_tool -path $::env(RESULT_DIR)/feature/irt.json -step route

destroy_rt



#===========================================================
## save def & netlist
#===========================================================
def_save -path $::env(RESULT_DIR)/iRT_result.def
set DEFAULT_OUTPUT_DEF "$::env(RESULT_DIR)/iRT_result.def"
def_save -path [expr {[info exists ::env(OUTPUT_DEF)] ? $::env(OUTPUT_DEF) : $DEFAULT_OUTPUT_DEF}]

#===========================================================
## save netlist
Expand Down
6 changes: 4 additions & 2 deletions scripts/design/sky130_gcd/script/iTO_script/run_iTO_drv.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ source $::env(TCL_SCRIPT_DIR)/DB_script/db_init_lef.tcl
#===========================================================
## read def
#===========================================================
def_init -path $::env(RESULT_DIR)/iCTS_result.def
set DEFAULT_INPUT_DEF "$::env(RESULT_DIR)/iCTS_result.def"
def_init -path [expr {[info exists ::env(INPUT_DEF)]? $::env(INPUT_DEF) : $DEFAULT_INPUT_DEF}]

#===========================================================
## run TO to fix_drv,opt_hold, opt_setup
Expand All @@ -42,7 +43,8 @@ feature_tool -path $::env(RESULT_DIR)/feature/ito_optDrv.json -step optDrv
#===========================================================
## save def
#===========================================================
def_save -path $::env(RESULT_DIR)/iTO_drv_result.def
set DEFAULT_OUTPUT_DEF "$::env(RESULT_DIR)/iTO_drv_result.def"
def_save -path [expr {[info exists ::env(OUTPUT_DEF)] ? $::env(OUTPUT_DEF) : $DEFAULT_OUTPUT_DEF}]

#===========================================================
## save netlist
Expand Down
6 changes: 4 additions & 2 deletions scripts/design/sky130_gcd/script/iTO_script/run_iTO_hold.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ source $::env(TCL_SCRIPT_DIR)/DB_script/db_init_lef.tcl
#===========================================================
## read def
#===========================================================
def_init -path $::env(RESULT_DIR)/iTO_drv_result.def
set DEFAULT_INPUT_DEF "$::env(RESULT_DIR)/iTO_drv_result.def"
def_init -path [expr {[info exists ::env(INPUT_DEF)]? $::env(INPUT_DEF) : $DEFAULT_INPUT_DEF}]

#===========================================================
## run TO to fix_drv,opt_hold, opt_setup
Expand All @@ -42,7 +43,8 @@ feature_tool -path $::env(RESULT_DIR)/feature/ito_opthold.json -step optHold
#===========================================================
## save def
#===========================================================
def_save -path $::env(RESULT_DIR)/iTO_hold_result.def
set DEFAULT_OUTPUT_DEF "$::env(RESULT_DIR)/iTO_hold_result.def"
def_save -path [expr {[info exists ::env(OUTPUT_DEF)] ? $::env(OUTPUT_DEF) : $DEFAULT_OUTPUT_DEF}]

#===========================================================
## save netlist
Expand Down
10 changes: 10 additions & 0 deletions src/database/data/design/db_layout/IdbTerm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,16 @@ bool IdbTerm::is_pdn()
return false;
}

bool IdbTerm::is_power()
{
return _type == IdbConnectType::kPower;
}

bool IdbTerm::is_ground()
{
return _type == IdbConnectType::kGround;
}

uint8_t IdbTerm::get_top_order()
{
uint8_t top_oder = 0;
Expand Down
2 changes: 2 additions & 0 deletions src/database/data/design/db_layout/IdbTerm.h
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,8 @@ class IdbTerm
bool is_instance_pin() { return _is_instance; }
bool is_multi_layer();
bool is_pdn();
bool is_power();
bool is_ground();

vector<IdbCoordinate<int32_t>*>& get_pa_list() { return _pa_list; }

Expand Down
12 changes: 6 additions & 6 deletions src/database/interaction/RT_DRC/DRCViolationType.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,15 +62,15 @@ struct GetViolationTypeName
case ViolationEnumType::kJogToJog:
return "JogToJog Spacing";
case ViolationEnumType::kEOL:
return "Metal EOL Spacing";
return "EndOfLine Spacing";
case ViolationEnumType::kWidth:
return "Wire Width";
case ViolationEnumType::kMinStep:
return "MinStep";
case ViolationEnumType::kNotch:
return "Metal Notch Spacing";
return "Notch Spacing";
case ViolationEnumType::kCornerFill:
return "Corner Fill";
return "Corner Fill Spacing";
default:
return "None";
}
Expand All @@ -93,15 +93,15 @@ struct GetViolationType
return ViolationEnumType::kPRLSpacing;
} else if (type_name == "JogToJog Spacing") {
return ViolationEnumType::kJogToJog;
} else if (type_name == "Metal EOL Spacing") {
} else if (type_name == "EndOfLine Spacing") {
return ViolationEnumType::kEOL;
} else if (type_name == "Wire Width") {
return ViolationEnumType::kWidth;
} else if (type_name == "MinStep") {
return ViolationEnumType::kMinStep;
} else if (type_name == "Metal Notch Spacing") {
} else if (type_name == "Notch Spacing") {
return ViolationEnumType::kNotch;
} else if (type_name == "Corner Fill") {
} else if (type_name == "Corner Fill Spacing") {
return ViolationEnumType::kCornerFill;
} else {
return ViolationEnumType::kNone;
Expand Down
7 changes: 3 additions & 4 deletions src/database/manager/builder/builder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,6 @@ IdbLefService* IdbBuilder::buildLef(vector<string>& files, bool b_techfile)
return _lef_service;
}


IdbDefService* IdbBuilder::rustBuildVerilog(string file, std::string top_module_name)
{
if (_def_service != nullptr) {
Expand All @@ -198,7 +197,7 @@ IdbDefService* IdbBuilder::rustBuildVerilog(string file, std::string top_module_
}

std::shared_ptr<RustVerilogRead> rust_verilog_read = std::make_shared<RustVerilogRead>(_def_service);
if(top_module_name.empty())
if (top_module_name.empty())
rust_verilog_read->createDbAutoTop(file);
else
rust_verilog_read->createDb(file.c_str(), top_module_name);
Expand Down Expand Up @@ -264,10 +263,10 @@ bool IdbBuilder::saveDef(string file, DefWriteType type)
return def_write->writeDb(file.c_str());
}

void IdbBuilder::saveVerilog(std::string verilog_file_name, std::set<std::string>& exclude_cell_names)
void IdbBuilder::saveVerilog(std::string verilog_file_name, std::set<std::string>& exclude_cell_names, bool is_add_space_for_escape_name)
{
IdbDesign* idb_design = _def_service->get_design();
VerilogWriter writer(verilog_file_name.c_str(), exclude_cell_names, *idb_design);
VerilogWriter writer(verilog_file_name.c_str(), exclude_cell_names, *idb_design, is_add_space_for_escape_name);
writer.writeModule();
}

Expand Down
Loading

0 comments on commit a68b691

Please sign in to comment.