diff --git a/sky130/custom/scripts/generate_fill.py b/sky130/custom/scripts/generate_fill.py
index 943920c..08209b3 100755
--- a/sky130/custom/scripts/generate_fill.py
+++ b/sky130/custom/scripts/generate_fill.py
@@ -93,10 +93,10 @@
 
     user_project_path = arguments[0]
 
-    magpath = os.path.split(user_project_path)[0]
+    magpath = os.getcwd()+'/'+os.path.split(user_project_path)[0]
     if magpath == '':
         magpath = os.getcwd()
-
+    
     if os.path.splitext(user_project_path)[1] != '.mag':
         if os.path.splitext(user_project_path)[1] == '':
             user_project_path += '.mag'
@@ -117,18 +117,29 @@
     if '-dist' in optionlist:
         distmode = True
 
-    rcfile = magpath + '/.magicrc'
-    if not os.path.isfile(rcfile):
-        rcfile = None
-
+    # Searching for rcfile
+    
+    rcfile_paths=[magpath+'/.magicrc','/$PDK_PATH/libs.tech/magic/sky130A.magicrc','/usr/share/pdk/sky130A/libs.tech/magic/sky130A.magicrc']
+    
+    rcfile=''
+    
+    for rc_path in rcfile_paths:
+        if os.path.isfile(rc_path):
+            rcfile=rc_path
+            break
+    
+    if rcfile=='':
+        print('Error: .magicrc file not found.')
+        sys.exit(1)
+    
     project = os.path.splitext(os.path.split(user_project_path)[1])[0]
 
     topdir = os.path.split(magpath)[0]
     gdsdir = topdir + '/gds'
     hasgdsdir = True if os.path.isdir(gdsdir) else False
-
+    
     ofile = open(magpath + '/generate_fill.tcl', 'w') 
-
+	
     print('#!/usr/bin/env wish', file=ofile)
     print('drc off', file=ofile)
     print('tech unlock *', file=ofile)
@@ -292,7 +303,7 @@
     print('puts stdout "Ended: $endtime"', file=ofile)
     print('quit -noprompt', file=ofile)
     ofile.close()
-
+    
     myenv = os.environ.copy()
     myenv['MAGTYPE'] = 'mag'
 
@@ -301,6 +312,7 @@
         # print('This script will generate file ' + project + '_fill_pattern.gds')
         print('This script will generate files ' + project + '_fill_pattern_x_y.gds')
         print('Now generating fill patterns.  This may take. . . quite. . . a while.', flush=True)
+        
         mproc = subprocess.run(['magic', '-dnull', '-noconsole',
 		'-rcfile', rcfile, magpath + '/generate_fill.tcl'],
 		stdin = subprocess.DEVNULL,
@@ -309,6 +321,7 @@
 		cwd = magpath,
 		env = myenv,
 		universal_newlines = True)
+        
         if mproc.stdout:
             for line in mproc.stdout.splitlines():
                 print(line)
@@ -318,7 +331,8 @@
                 print(line)
             if mproc.returncode != 0:
                 print('ERROR:  Magic exited with status ' + str(mproc.returncode))
-
+	
+	
         if distmode:
             # If using distributed mode, then run magic on each of the generated
             # layout files
