fix fanout with iNO

This commit is contained in:
Zihao Yu 2024-03-09 03:39:34 +08:00
parent 9b3f065b07
commit 5965b4c967
6 changed files with 69 additions and 20 deletions

View File

@ -6,22 +6,34 @@ RTL_FILES ?= $(shell find $(PROJ_PATH)/example -name "*.v")
export CLK_FREQ_MHZ ?= 500
RESULT_DIR = $(PROJ_PATH)/result/$(DESIGN)-$(CLK_FREQ_MHZ)MHz
NETLIST_V = $(RESULT_DIR)/$(DESIGN).netlist.v
SCRIPT_DIR = $(PROJ_PATH)/scripts
NETLIST_SYN_V = $(RESULT_DIR)/$(DESIGN).netlist.syn.v
NETLIST_FIXED_V = $(RESULT_DIR)/$(DESIGN).netlist.fixed.v
SYN_DEF = $(RESULT_DIR)/$(DESIGN).syn.def
FIXED_DEF = $(RESULT_DIR)/$(DESIGN).fixed.def
TIMING_RPT = $(RESULT_DIR)/$(DESIGN).rpt
init:
bash -c "$$(wget -O - https://ysyx.oscc.cc/slides/resources/scripts/init-yosys-sta.sh)"
syn: $(NETLIST_V)
$(NETLIST_V): $(RTL_FILES) yosys.tcl
syn: $(NETLIST_SYN_V)
$(NETLIST_SYN_V): $(RTL_FILES) $(SCRIPT_DIR)/yosys.tcl
mkdir -p $(@D)
echo tcl yosys.tcl $(DESIGN) \"$(RTL_FILES)\" $(NETLIST_V) | yosys -l $(@D)/yosys.log -s -
echo tcl $(SCRIPT_DIR)/yosys.tcl $(DESIGN) \"$(RTL_FILES)\" $@ | yosys -l $(@D)/yosys.log -s -
def: $(SYN_DEF)
$(SYN_DEF): $(SCRIPT_DIR)/def.tcl $(NETLIST_SYN_V)
LD_LIBRARY_PATH=bin/ ./bin/iEDA $^ $(DESIGN) $@ | tee $(RESULT_DIR)/gen-def.log
fix-fanout: $(NETLIST_FIXED_V)
$(NETLIST_FIXED_V): $(SCRIPT_DIR)/fix-fanout.tcl $(SDC_FILE) $(SYN_DEF)
LD_LIBRARY_PATH=bin/ ./bin/iEDA -script $^ $@ 2>&1 | tee $(RESULT_DIR)/fix-fanout.log
sta: $(TIMING_RPT)
$(TIMING_RPT): $(SDC_FILE) $(NETLIST_V)
LD_LIBRARY_PATH=bin/ ./bin/iSTA $(PROJ_PATH)/sta.tcl $(DESIGN) $(SDC_FILE) $(NETLIST_V)
$(TIMING_RPT): $(SCRIPT_DIR)/sta.tcl $(SDC_FILE) $(NETLIST_FIXED_V)
LD_LIBRARY_PATH=bin/ ./bin/iEDA -script $^ $(DESIGN) 2>&1 | tee $(RESULT_DIR)/sta.log
clean:
-rm -rf result/
.PHONY: init syn sta clean
.PHONY: init syn def fix-fanout sta clean

10
scripts/def.tcl Normal file
View File

@ -0,0 +1,10 @@
set PROJ_PATH "[file dirname [info script]]/.."
set NETLIST_SYN_V [lindex $argv 0]
set DESIGN [lindex $argv 1]
set DEF_FILE [lindex $argv 2]
set LEF_FILES "\
$PROJ_PATH/nangate45/lef/NangateOpenCellLibrary.tech.lef \
$PROJ_PATH/nangate45/lef/NangateOpenCellLibrary.macro.mod.lef"
verilog_to_def -lef $LEF_FILES -verilog $NETLIST_SYN_V -top $DESIGN -def $DEF_FILE

13
scripts/fix-fanout.json Normal file
View File

@ -0,0 +1,13 @@
{
"file_path": {
"design_work_space": "",
"sdc_file": "",
"lib_files": "",
"lef_files": "",
"def_file": "",
"output_def": "",
"report_file": ""
},
"insert_buffer": "BUF_X8",
"max_fanout": 30
}

14
scripts/fix-fanout.tcl Normal file
View File

@ -0,0 +1,14 @@
set PROJ_PATH "[file dirname [info script]]/.."
set SDC_FILE [lindex $argv 0]
set DEF_FILE [lindex $argv 1]
set NETLIST_FIXED_V [lindex $argv 2]
db_init -lib_path $PROJ_PATH/nangate45/lib/merged.lib
db_init -sdc_path $SDC_FILE
tech_lef_init -path $PROJ_PATH/nangate45/lef/NangateOpenCellLibrary.tech.lef
lef_init -path $PROJ_PATH/nangate45/lef/NangateOpenCellLibrary.macro.mod.lef
def_init -path $DEF_FILE
run_no_fixfanout -config $PROJ_PATH/scripts/fix-fanout.json
#def_save -path fix_fanout_result.def
netlist_save -path $NETLIST_FIXED_V -exclude_cell_names {}

View File

@ -1,7 +1,7 @@
set PROJ_PATH [file dirname [info script]]
set DESIGN [lindex $argv 0]
set SDC_FILE [lindex $argv 1]
set NETLIST_V [lindex $argv 2]
set PROJ_PATH "[file dirname [info script]]/.."
set SDC_FILE [lindex $argv 0]
set NETLIST_V [lindex $argv 1]
set DESIGN [lindex $argv 2]
set RESULT_DIR [file dirname $NETLIST_V]
set LIB_FILES $PROJ_PATH/nangate45/lib/merged.lib

View File

@ -3,16 +3,16 @@
#===========================================================
set DESIGN [lindex $argv 0]
set VERILOG_FILES [string map {"\"" ""} [lindex $argv 1]]
set NETLIST_V [lindex $argv 2]
set NETLIST_SYN_V [lindex $argv 2]
set VERILOG_INCLUDE_DIRS ""
set RESULT_DIR [file dirname $NETLIST_V]
set RESULT_DIR [file dirname $NETLIST_SYN_V]
set PROJ_PATH [file dirname [info script]]
set MERGED_LIB_FILE "$PROJ_PATH/nangate45/lib/merged.lib"
set BLACKBOX_V_FILE "$PROJ_PATH/nangate45/verilog/blackbox.v"
set CLKGATE_MAP_FILE "$PROJ_PATH/nangate45/verilog/cells_clkgate.v"
set LATCH_MAP_FILE "$PROJ_PATH/nangate45/verilog/cells_latch.v"
set BLACKBOX_MAP_TCL "$PROJ_PATH/nangate45/blackbox_map.tcl"
set FOUNDARY_PATH "[file dirname [info script]]/../nangate45"
set MERGED_LIB_FILE "$FOUNDARY_PATH/lib/merged.lib"
set BLACKBOX_V_FILE "$FOUNDARY_PATH/verilog/blackbox.v"
set CLKGATE_MAP_FILE "$FOUNDARY_PATH/verilog/cells_clkgate.v"
set LATCH_MAP_FILE "$FOUNDARY_PATH/verilog/cells_latch.v"
set BLACKBOX_MAP_TCL "$FOUNDARY_PATH/blackbox_map.tcl"
set CLK_FREQ_MHZ 500
if {[info exists env(CLK_FREQ_MHZ)]} {
@ -120,4 +120,4 @@ tee -o $RESULT_DIR/synth_check.txt check
tee -o $RESULT_DIR/synth_stat.txt stat -liberty $MERGED_LIB_FILE
# write synthesized design
write_verilog -noattr -noexpr -nohex -nodec $NETLIST_V
write_verilog -noattr -noexpr -nohex -nodec $NETLIST_SYN_V