Hi to all, I'm trying to set up a windows environm...
# klayout
a
Hi to all, I'm trying to set up a windows environment that can use klayout to evaluate drc and lvs without docker or linux, but there are problems that makes me think it is not possible. I'm using mamba/conda to install docopt and manually cloned the globalfoundries and precheck repositories. Running GlobalFoundries DRC gives this error
Copy code
> python E:\Descargas\ic_analog\code\layout\globalfoundries-pdk-libs-gf180mcu_fd_pv\klayout\drc\run_drc.py --variant=C --path=RING_PAD.gds --verbose

02-Oct-2023 17:10:41 | INFO    | Your Klayout version is: KLayout 0.28.12
02-Oct-2023 17:10:41 | INFO    | Your Klayout version is: KLayout 0.28.12
02-Oct-2023 17:10:41 | INFO    | ## Generating template with for the following rule tables: ['comp.drc', 'contact.drc', 'dnwell.drc', 'drc_bjt.drc', 'dualgate.drc', 'dummy_exclude.drc', 'efuse.drc', 'esd.drc', 'hres.drc', 'ldnmos.drc', 'ldpmos.drc', 'lres.drc', 'lvpwell.drc', 'lvs_bjt.drc', 'mcell.drc', 'metal1.drc', 'metal2.drc', 'metal3.drc', 'metal4.drc', 'metal5.drc', 'metaltop.drc', 'metaltop_30k.drc', 'mim_a.drc', 'mim_b.drc', 'nat.drc', 'nplus.drc', 'nwell.drc', 'otp_mk.drc', 'poly2.drc', 'pplus.drc', 'pres.drc', 'sab.drc', 'sram_3p3.drc', 'sram_5p0.drc', 'via1.drc', 'via2.drc', 'via3.drc', 'via4.drc', 'via5.drc', 'ymtp_mk.drc']
02-Oct-2023 17:10:41 | INFO    | ## Your run dir located at: E:\Descargas\ic_analog\code\layout\drc_run_2023_10_02_20_10_41
02-Oct-2023 17:10:41 | INFO    | Running Global Foundries 180nm MCU E:\Descargas\ic_analog\code\layout\RING_PAD.gds checks on design main on cell RING_PAD:
Traceback (most recent call last):
  File "E:\Descargas\ic_analog\code\layout\globalfoundries-pdk-libs-gf180mcu_fd_pv\klayout\drc\run_drc.py", line 693, in <module>
    main(drc_run_dir, arguments)
  File "E:\Descargas\ic_analog\code\layout\globalfoundries-pdk-libs-gf180mcu_fd_pv\klayout\drc\run_drc.py", line 650, in main
    run_single_processor(
  File "E:\Descargas\ic_analog\code\layout\globalfoundries-pdk-libs-gf180mcu_fd_pv\klayout\drc\run_drc.py", line 601, in run_single_processor
    run_check(drc_file, "main", layout_path, drc_run_dir, switches)
  File "E:\Descargas\ic_analog\code\layout\globalfoundries-pdk-libs-gf180mcu_fd_pv\klayout\drc\run_drc.py", line 452, in run_check
    check_call(run_str, shell=True)
  File "E:\source\mambaforge\envs\chipathon\Lib\subprocess.py", line 413, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'klayout -b -r E:\Descargas\ic_analog\code\layout\drc_run_2023_10_02_20_10_41\main.drc -rd thr=2 -rd run_mode=flat -rd metal_top=9K -rd mim_option=B -rd metal_level=5LM -rd verbose=true -rd feol=true -rd beol=true -rd offgrid=true -rd conn_drc=false -rd density=false -rd slow_via=false -rd topcell=RING_PAD -rd input=E:\Descargas\ic_analog\code\layout\RING_PAD.gds -rd report=E:\Descargas\ic_analog\code\layout\drc_run_2023_10_02_20_10_41\RING_PAD_main.lyrdb -rd table_name=main' returned non-zero exit status 1.
Executing the last message without -b flag gives this error:
Copy code
> klayout -r E:\Descargas\ic_analog\code\layout\drc_run_2023_10_02_20_10_41\main.drc -rd thr=2 -rd run_mode=flat -rd metal_top=9K -rd mim_option=B -rd metal_level=5LM -rd verbose=true -rd feol=true -rd beol=true -rd offgrid=true -rd conn_drc=false -rd density=false -rd slow_via=false -rd topcell=RING_PAD -rd input=E:\Descargas\ic_analog\code\layout\RING_PAD.gds -rd report=E:\Descargas\ic_analog\code\layout\drc_run_2023_10_02_20_10_41\RING_PAD_main.lyrdb -rd table_name=main

NoMethodError: undefined method `strip' for nil:NilClass in Executable::execute
  E:\Descargas\ic_analog\code\layout\drc_run_2023_10_02_20_10_41\main.drc:29:in `block in execute'
  C:/Users/akiles/AppData/Roaming/Klayout/lib/ruby/3.0.0/logger.rb:586:in `format_message'
  C:/Users/akiles/AppData/Roaming/Klayout/lib/ruby/3.0.0/logger.rb:476:in `add'
  C:/Users/akiles/AppData/Roaming/Klayout/lib/ruby/3.0.0/logger.rb:529:in `info'
  E:\Descargas\ic_analog\code\layout\drc_run_2023_10_02_20_10_41\main.drc:36:in `execute'
  :/built-in-macros\drc_interpreters.lym:31:in `instance_eval'
  :/built-in-macros\drc_interpreters.lym:31:in `execute'
Running the Precheck DRC with klayout in GUI mode, gives this log error:
Copy code
> klayout -r E:\Descargas\ic_analog\code\layout\mpw_precheck\checks\tech-files\gf180mcuC_mr.drc

NoMethodError: undefined method `strip' for nil:NilClass in Executable::execute
  E:\Descargas\ic_analog\code\layout\mpw_precheck\checks\tech-files\gf180mcuC_mr.drc:39:in `getMemSize'
  E:\Descargas\ic_analog\code\layout\mpw_precheck\checks\tech-files\gf180mcuC_mr.drc:118:in `block in execute'
  C:/Users/akiles/AppData/Roaming/Klayout/lib/ruby/3.0.0/logger.rb:586:in `format_message'
  C:/Users/akiles/AppData/Roaming/Klayout/lib/ruby/3.0.0/logger.rb:476:in `add'
  C:/Users/akiles/AppData/Roaming/Klayout/lib/ruby/3.0.0/logger.rb:529:in `info'
  E:\Descargas\ic_analog\code\layout\mpw_precheck\checks\tech-files\gf180mcuC_mr.drc:129:in `execute'
  :/built-in-macros\drc_interpreters.lym:31:in `instance_eval'
  :/built-in-macros\drc_interpreters.lym:31:in `execute'
I'm posting the drc generated by the
run_drc.py
script, but I think that is more a missing dependency inside Klayout's ruby packed version.
a
@Farag Elsayed?
f
We haven't tested Klayout before using windows environment. Everything works fine for same klayout version but for
Ubuntu-22.04
. It seems that your klayout ruby couldn't understand this line no.
29
. I believe you will get extra issues after fixing this.
a
Thanks a lot for the response. I think the problem might be absense of the pmap package in the windows version of klayout. Maybe if I could install it on the embedded ruby distribution it will work... I'm avoiding this problem using a docker container as development environment, It works fine but drc is slow.