#!/bin/bash

# Copyright (c) Efabless Corporation. All rights reserved.
# See LICENSE file in the project root for full license information.

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
source $4

generate_design_config () {
	local base_config_file=$1
	local output_path=$2
	local tag=$3

	local idx=0
	for gr_af  in "${adjustment_factor[@]}"; do
	for util   in "${utilization[@]}"; do
	for densit in "${density[@]}"; do
	for strat  in "${synth_strategy[@]}"; do
	for fanout in "${max_fanout[@]}"; do
	for pdn_v  in "${pdn_v_pitch[@]}"; do
	for pdn_h  in "${pdn_h_pitch[@]}"; do
	for ar     in "${aspect_ratio[@]}"; do

		config_regession="\
set ::env(SYNTH_MAX_FANOUT)  $fanout
set ::env(SYNTH_STRATEGY)    $strat
set ::env(PL_TARGET_DENSITY) $densit
set ::env(FP_CORE_UTIL)      $util
set ::env(FP_PDN_VPITCH)     $pdn_v
set ::env(FP_PDN_HPITCH)     $pdn_h
set ::env(FP_ASPECT_RATIO)   $ar
set ::env(GLB_RT_ADJUSTMENT) $gr_af \
"
		local output_file=$output_path/${tag}_${idx}.tcl
		echo "# Design" > $output_file
		echo "$(cat $base_config_file)" >> $output_file
		echo "" >> $output_file
		echo "# Regression" >> $output_file
		echo "$config_regession" >> $output_file
		echo "" >> $output_file
		echo "# Extra" >> $output_file
		echo "$extra" >> $output_file
		echo "" >> $output_file
		local idx=$(( $idx + 1 ))
	done
	done
	done
	done
	done
	done
	done
	done
	echo "$idx"
}

generate_design_config $1 $2 $3 $4
