# //////////////////////////////////////////////////////////////////////////////
# // SPDX-FileCopyrightText: 2021, Dinesh Annayya
# // 
# // Licensed under the Apache License, Version 2.0 (the "License");
# // you may not use this file except in compliance with the License.
# // You may obtain a copy of the License at
# //
# //      http://www.apache.org/licenses/LICENSE-2.0
# //
# // Unless required by applicable law or agreed to in writing, software
# // distributed under the License is distributed on an "AS IS" BASIS,
# // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# // See the License for the specific language governing permissions and
# // limitations under the License.
# // SPDX-License-Identifier: Apache-2.0
# // SPDX-FileContributor: Dinesh Annayya <dinesha@opencores.org>
# // //////////////////////////////////////////////////////////////////////////
#------------------------------------------------------------------------------
# Makefile for Synthesis
#------------------------------------------------------------------------------

# Paths
export ROOT_DIR := $(shell pwd)
export DESIGN_FILE  := $(ROOT_DIR)/syntacore.sv
export SYNTH_LOG    := $(ROOT_DIR)/synth.log
export REPORT_DIR  := $(ROOT_DIR)/reports
export NETLIST_DIR  := $(ROOT_DIR)/netlist
export TMP_DIR  := $(ROOT_DIR)/tmp


# Targets
.PHONY: clean create merge synth

default: clean create merge synth

synth: clean create merge 
	yosys -g -c synth.tcl -l synth.log

create:
	mkdir -p ./tmp/synthesis; 
	mkdir -p ./reports; 
	mkdir -p ./netlist;
	$(OPENLANE_ROOT)/scripts/libtrim.pl $(PDK_ROOT)/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib $(PDK_ROOT)/sky130A/libs.tech/openlane/sky130_fd_sc_hd/no_synth.cells > ./tmp/trimmed.lib
	#create No PG Pin library for hand instantiated cells
	sed '/pg_pin.*/a \         direction : "inout";'  $(PDK_ROOT)/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib  > ./tmp/sky130_fd_sc_hd__tt_025C_1v80.no_pg.lib
	sed -i 's/pg_pin/pin/' ./tmp/sky130_fd_sc_hd__tt_025C_1v80.no_pg.lib

merge: 
	################################################ 
	# yosys has issue in propgating the golbal parameter from one file to other file 
	# to fix this issue, we have concatinated all the rtl file into single file before starting synthesis 
	# only memory are exclded from this list 
	# ################################################
	cat ../src/core/pipeline/scr1_pipe_top.sv > syntacore.sv; 
	cat ../src/core/scr1_core_top.sv >> syntacore.sv; 
	cat ../src/core/scr1_dm.sv >> syntacore.sv; 
	cat ../src/core/scr1_tapc_synchronizer.sv >> syntacore.sv; 
	cat ../src/core/scr1_clk_ctrl.sv >> syntacore.sv; 
	cat ../src/core/scr1_scu.sv >> syntacore.sv; 
	cat ../src/core/scr1_tapc.sv >> syntacore.sv; 
	cat ../src/core/scr1_tapc_shift_reg.sv >> syntacore.sv; 
	cat ../src/core/scr1_dmi.sv >> syntacore.sv; 
	cat ../src/core/primitives/scr1_reset_cells.sv >> syntacore.sv; 
	cat ../src/core/pipeline/scr1_pipe_ifu.sv >> syntacore.sv; 
	cat ../src/core/pipeline/scr1_pipe_idu.sv >> syntacore.sv; 
	cat ../src/core/pipeline/scr1_pipe_exu.sv >> syntacore.sv; 
	cat ../src/core/pipeline/scr1_pipe_mprf.sv >> syntacore.sv; 
	cat ../src/core/pipeline/scr1_pipe_csr.sv >> syntacore.sv; 
	cat ../src/core/pipeline/scr1_pipe_ialu.sv >> syntacore.sv; 
	cat ../src/core/pipeline/scr1_pipe_lsu.sv >> syntacore.sv; 
	cat ../src/core/pipeline/scr1_pipe_hdu.sv >> syntacore.sv; 
	cat ../src/core/pipeline/scr1_pipe_tdu.sv >> syntacore.sv; 
	cat ../src/core/pipeline/scr1_ipic.sv >> syntacore.sv; 
	cat ../src/top/scr1_dmem_router.sv >> syntacore.sv; 
	cat ../src/top/scr1_imem_router.sv >> syntacore.sv; 
	#cat ../src/top/scr1_dp_memory.sv >> syntacore.sv; 
	cat ../src/top/scr1_tcm.sv >> syntacore.sv; 
	cat ../src/top/scr1_timer.sv >> syntacore.sv; 
	#cat ../src/top/scr1_dmem_ahb.sv >> syntacore.sv; 
	#cat ../src/top/scr1_imem_ahb.sv >> syntacore.sv; 
	cat ../src/top/scr1_top_axi.sv >> syntacore.sv; 
	cat ../src/top/scr1_mem_axi.sv>> syntacore.sv;



clean:
	$(RM) $(DESIGN_FILE)
	$(RM) $(SYNTH_LOG)
	$(RM) -R $(REPORT_DIR)
	$(RM) -R $(NETLIST_DIR)
	$(RM) -R $(TMP_DIR)
