cve2/syn/tcl/yosys_run_synth.tcl
szbieg b94bca939e
Adapt Yosys synthesis script to latch based register file and cve2_clock_gate (#125)
Signed-off-by: Szymon Bieganski <szymon.bieganski@oss.nxp.com>
2023-07-28 15:06:10 +02:00

59 lines
1.6 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 -defer -sv ./rtl/cve2_clock_gating.v $lr_synth_out_dir/generated/*.v"
if { $lr_synth_cve2_writeback_stage } {
yosys "chparam -set WritebackStage 1 $lr_synth_top_module"
}
yosys "chparam -set RV32M $lr_synth_cve2_multiplier $lr_synth_top_module"
yosys "synth $flatten_opt -top $lr_synth_top_module"
yosys "opt -purge"
yosys "write_verilog $lr_synth_pre_map_out"
# Map latch primitives onto latch cells
yosys "techmap -map rtl/latch_map.v"
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 ======"