from pathlib import Path
import gdsfactory as gf
import gdsfactoryplus as gfp
pdk = gfp.activate_pdk_by_name("cspdk.si220.cband");
23:24:47 | INFO | PDK='cspdk.si220.cband'
23:24:47 | INFO | PROJECT_DIR='/home/runner/work/gdsfactoryplus/gdsfactoryplus'
23:24:47 | INFO | PDK='cspdk.si220.cband'
23:24:47 | INFO | PROJECT_DIR='/home/runner/work/gdsfactoryplus/gdsfactoryplus'
23:24:47 | INFO | Creating new KCL.
23:24:47 | INFO | len(gf.kcl.tkcells)=0 TKCells in KCL
Settings(name='gdsfactoryplus', ignore=[], pdk=PdkSettings(name='cspdk.si220.cband'), api=ApiSettings(host='https://prod.gdsfactory.com/', key='eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcGlfa2V5IjoiMTEwMjQxNjYtYzZiZi00YjMzLWJiYjYtZjg4YTBiNzBmMDYwIiwiYXVkIjoiR0RTRmFjdG9yeTphcGkta2V5cyJ9.EvaJEojL-ETEIMeiI73tONXHwjiu-wv0QKHlJPtFFHo'), drc=DrcSettings(timeout=60, host='https://dodeck.gdsfactory.com', process='', pdk=''), sim=SimSettings(wls=Linspace(min=1.5, max=1.6, num=300)), gpt=GptSettings(host='https://doitforme.gdsfactory.com', pdk=''), kweb=KwebSettings(host='localhost', https=False), log=LogSettings(level='INFO', debug_level='DEBUG'), external=ExternalSettings(axiomatic_api_key=''))
For running this DRC examples you will require to open Klayout and make sure you have klive extension installed.
as well as gdsfactoryPlus
Then you need to configure your PDK, URLs and Keys to point to the correct deployment.
To do this, ensure you create a config file in ~/.gdsfactory/gdsfactoryplus.toml
with the default gdsfactoryplus settings. For example:
Note
You can also use this as a template for your own global gdsfactoryplus config or your per-project pyproject.toml file.
Let's create a GDS with some DRC errors, run DRC on the remote server and review the results locally in your computer.
gdspath = c.write_gds()
lyrdb = gfp.check_drc(gdspath)
lyrdb_path = Path("errors.lyrdb")
lyrdb_path.write_text(lyrdb);
uploading '/tmp/gdsfactory/width_min_S0p1_0p1.gds'...
running DRC... [pdk='cspdk.si220.cband' process='']...
batch job with id 'job_95ad7ab1ac6045e1' started.
RUNNING
SUCCEEDED
job succeeded.
<report-database>
<description />
<original-file />
<generator />
<top-cell />
<tags>
</tags>
<categories><category>
<name>Space_Electrodes_LF</name>
<description />
<categories>
</categories>
</category>
<category>
<name>Space_HD_n_type_DF</name>
<description />
<categories>
</categories>
</category>
<category>
<name>Space_HD_p_type_DF</name>
<description />
<categories>
</categories>
</category>
<category>
<name>Space_LD_n_type_DF</name>
<description />
<categories>
</categories>
</category>
<category>
<name>Space_LD_p_type_DF</name>
<description />
<categories>
</categories>
</category>
<category>
<name>Space_Label_Etch_DF</name>
<description />
<categories>
</categories>
</category>
<category>
<name>Space_Si_Etch1_DF_70nm</name>
<description />
<categories>
</categories>
</category>
<category>
<name>Space_Si_Etch2_DF_120nm</name>
<description />
<categories>
</categories>
</category>
<category>
<name>Space_Si_Etch2_LF_120nm</name>
<description />
<categories>
</categories>
</category>
<category>
<name>Space_Si_Etch3_LF_100nm_to_BOX</name>
<description />
<categories>
</categories>
</category>
<category>
<name>Space_Vias_DF</name>
<description />
<categories>
</categories>
</category>
<category>
<name>Width_Electrodes_LF</name>
<description />
<categories>
</categories>
</category>
<category>
<name>Width_HD_n_type_DF</name>
<description />
<categories>
</categories>
</category>
<category>
<name>Width_HD_p_type_DF</name>
<description />
<categories>
</categories>
</category>
<category>
<name>Width_LD_n_type_DF</name>
<description />
<categories>
</categories>
</category>
<category>
<name>Width_LD_p_type_DF</name>
<description />
<categories>
</categories>
</category>
<category>
<name>Width_Label_Etch_DF</name>
<description />
<categories>
</categories>
</category>
<category>
<name>Width_Si_Etch1_DF_70nm</name>
<description />
<categories>
</categories>
</category>
<category>
<name>Width_Si_Etch2_DF_120nm</name>
<description />
<categories>
</categories>
</category>
<category>
<name>Width_Si_Etch2_LF_120nm</name>
<description />
<categories>
</categories>
</category>
<category>
<name>Width_Si_Etch3_LF_100nm_to_BOX</name>
<description />
<categories>
</categories>
</category>
<category>
<name>Width_Vias_DF</name>
<description />
<categories>
</categories>
</category>
</categories><cells><cell>
<name>width_min_S0p1_0p1</name>
<variant />
<layout-name />
<references>
</references>
</cell>
</cells><items>
<item>
<tags />
<category>Width_Si_Etch2_LF_120nm</category>
<cell>width_min_S0p1_0p1</cell>
<visited>false</visited>
<multiplicity>1</multiplicity>
<comment>Min width for Si_Etch2_LF_120nm is 0.35 um</comment>
<image />
<values>
<value>polygon: (0,0;0,0.1;0.1,0.1;0.1,0)</value>
</values>
</item>
</items>
</report-database>
If you have a valid API key you can now browse through the errors in klayout.