Add: bash script in common/ to extract fr_pr device names and create a tcl file with their respective draw, defaults, dialog, check, and convert routines.
diff --git a/common/bash_scripts/fixed_devices_proc_generation.sh b/common/bash_scripts/fixed_devices_proc_generation.sh
new file mode 100644
index 0000000..fb0c4c0
--- /dev/null
+++ b/common/bash_scripts/fixed_devices_proc_generation.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+#
+echo -n 'Select PDK to extract fixed devices from [gf180/sky130] ' 
+read PDK
+
+# set path for .mag fd files
+case $PDK in
+	sky130 ) filepath="/usr/local/share/pdk/sky130A/libs.ref/sky130_fd_pr/mag/" ;;
+	gf180  ) filepath="/usr/local/share/pdk/gf180mcuD/libs.ref/gf180mcu_fd_pr/mag/" ;;
+	*      ) echo "Wrong PDK entered. Please rerun the script and enter sky130 or gf180"
+		     exit 1 ;; 
+esac
+
+device_name=($(find "$filepath/" -name '*.mag' -printf "%f " | sed 's/.mag//g'))
+routine_name=(dialog defaults draw check convert)
+
+# set tabulation (\t charecters) to be 4 whitespaces 
+tabs 4
+
+output_file=$(printf "%s.tcl" $PDK)
+printf " " > $output_file
+for routine in "${routine_name[@]}";do 
+	printf "\n#-----------------\n#%s\n#-----------------\n" \
+				"$routine" \
+				>> $output_file
+	for device in "${device_name[@]}"; do 
+
+		# set the text of the proc body 
+		case $routine in
+			defaults ) proc_text=$(printf "return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 1000 ystep 1000}" ) ;;
+			dialog   ) proc_text=$(printf "%s::fixed_dialog \$parameters " \
+				                          "$PDK" ) ;;
+			draw     ) proc_text=$(printf "return [%s::fixed_draw %s \$parameters] " \
+				                          "$PDK" \
+										  "$device") ;;
+			check    ) proc_text=$(printf "return [%s::fixed_check \$parameters] " \
+				                          "$PDK" ) ;;
+			convert  ) proc_text=$(printf "return [%s::fixed_convert \$parameters] " \
+				                          "$PDK" ) ;;
+		esac
+
+		# write the procedures to the output file
+		case $routine in
+			# defaults procedure
+			defaults )  printf "proc %s::%s_%s {} {\n\t%s \n} \n" \
+							"$PDK" \
+							"$device" \
+							"$routine" \
+							"$proc_text" \
+							>> $output_file ;;
+			# all other procedures
+			*        )  printf "proc %s::%s_%s {parameters} {\n\t%s \n} \n" \
+							"$PDK" \
+							"$device" \
+							"$routine" \
+							"$proc_text" \
+							>> $output_file ;;
+		esac	
+	done 
+done
+
+