ibex/syn/tcl/yosys_run_synth.tcl
Greg Chadwick 5b97c26510 [syn] Add more Ibex parameters to flow
Can now control writeback stage inclusion, bitmanip extension and
multiplier implementation.
2020-05-20 12:08:10 +01:00

64 lines
1.7 KiB
Tcl

# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
source ./tcl/yosys_common.tcl
if { $lr_synth_flatten } {
set flatten_opt "-flatten"
} else {
set flatten_opt ""
}
if { $lr_synth_timing_run } {
write_sdc_out $lr_synth_sdc_file_in $lr_synth_sdc_file_out
}
yosys "read_verilog -sv ./rtl/prim_clock_gating.v $lr_synth_out_dir/generated/*.v"
if { $lr_synth_ibex_branch_target_alu } {
yosys "chparam -set BranchTargetALU 1 ibex_core"
}
if { $lr_synth_ibex_writeback_stage } {
yosys "chparam -set WritebackStage 1 ibex_core"
}
if { $lr_synth_ibex_bitmanip } {
yosys "chparam -set RV32B 1 ibex_core"
}
yosys "chparam -set MultiplierImplementation \"$lr_synth_ibex_multiplier\" ibex_core"
yosys "synth $flatten_opt -top $lr_synth_top_module"
yosys "opt -purge"
yosys "write_verilog $lr_synth_pre_map_out"
yosys "dfflibmap -liberty $lr_synth_cell_library_path"
yosys "opt"
set yosys_abc_clk_period [expr $lr_synth_clk_period - $lr_synth_abc_clk_uprate]
if { $lr_synth_timing_run } {
yosys "abc -liberty $lr_synth_cell_library_path -constr $lr_synth_abc_sdc_file_in -D $yosys_abc_clk_period"
} else {
yosys "abc -liberty $lr_synth_cell_library_path"
}
yosys "clean"
yosys "write_verilog $lr_synth_netlist_out"
if { $lr_synth_timing_run } {
# Produce netlist that OpenSTA can use
yosys "setundef -zero"
yosys "splitnets"
yosys "clean"
yosys "write_verilog -noattr -noexpr -nohex -nodec $lr_synth_sta_netlist_out"
}
yosys "check"
yosys "log ======== Yosys Stat Report ========"
yosys "tee -o $lr_synth_out_dir/reports/area.rpt stat -liberty $lr_synth_cell_library_path"
yosys "log ====== End Yosys Stat Report ======"