{"id":9874,"library":"lambdapdk","title":"Lambda Process Design Kit (PDK)","description":"lambdapdk is a Python library providing open-source Process Design Kit (PDK) definitions and related files, primarily designed for integration with the siliconcompiler EDA framework. It includes configurations for various technologies like ASAP7, Sky130, and GF180. The current version is 0.2.12, and it receives frequent minor updates to add features, fix bugs, and update PDK content.","status":"active","version":"0.2.12","language":"en","source_language":"en","source_url":"https://github.com/siliconcompiler/lambdapdk","tags":["EDA","hardware design","PDK","chip design","siliconcompiler"],"install":[{"cmd":"pip install lambdapdk","lang":"bash","label":"Install latest version"}],"dependencies":[{"reason":"lambdapdk is primarily used as a PDK provider for the siliconcompiler EDA framework; it defines PDKs that siliconcompiler then loads and utilizes.","package":"siliconcompiler","optional":false}],"imports":[{"note":"PDK-specific modules like 'sky130' are located within the `lambdapdk.pdk` subpackage, not directly under `lambdapdk`.","wrong":"from lambdapdk import sky130","symbol":"sky130","correct":"from lambdapdk.pdk import sky130"}],"quickstart":{"code":"import siliconcompiler\nimport os\n\n# Create a new chip object\nchip = siliconcompiler.Chip(\"my_design\")\n\n# Load the lambdapdk library as the process design kit\n# This automatically configures relevant paths and settings for the PDK\nchip.load_pdk(\"lambdapdk\")\n\n# To confirm the PDK is loaded, you can check its name or other settings\nprint(f\"PDK loaded: {chip.get('pdk', 'name')}\")\n\n# You would typically add source files, flow definition, etc., here\n# Example:\n# chip.input('adder.v', 'verilog')\n# chip.set('design', 'adder')\n# chip.set('flow', 'asicflow')\n# chip.run()\n","lang":"python","description":"This quickstart demonstrates how to initialize a `siliconcompiler` chip object and load the `lambdapdk` library to configure a Process Design Kit. `lambdapdk` is primarily used by passing its name as a string to `chip.load_pdk()`, allowing `siliconcompiler` to find and apply its definitions."},"warnings":[{"fix":"Always use `lambdapdk` in conjunction with `siliconcompiler.Chip` and its `load_pdk()` method for standard usage. Refer to `siliconcompiler` documentation for detailed PDK setup.","message":"`lambdapdk` is designed to be used with the `siliconcompiler` EDA framework. Direct manipulation or importing of its internal modules (e.g., `lambdapdk.pdk.sky130`) outside of a `siliconcompiler` context might not be fully functional or could lead to unexpected behavior.","severity":"gotcha","affected_versions":"All versions (0.x)"},{"fix":"Ensure `lambdapdk` and `siliconcompiler` versions are compatible. If encountering unexpected errors after updating `lambdapdk`, check the `siliconcompiler` documentation and `lambdapdk` release notes for relevant internal API changes or configuration updates.","message":"Minor versions of `lambdapdk` (e.g., 0.2.x) can introduce internal API changes related to how PDK components are structured or how libraries are referenced (e.g., changes to memory model APIs, pin directions, foreign object positions). These changes might not be explicitly marked as breaking but can cause issues if `siliconcompiler` expects an older internal structure or if you rely on specific internal paths/settings.","severity":"breaking","affected_versions":">=0.2.0"},{"fix":"Consult the `siliconcompiler` documentation and specific PDK setup guides (e.g., for Sky130, ASAP7) to ensure all required physical library files are present and correctly pointed to by `siliconcompiler`'s configuration or environment variables.","message":"While `lambdapdk` provides PDK *definitions* (paths, rules, etc.), it typically does not include all physical GDS, LEF, or Verilog library files. These often need to be pre-downloaded or made available on the system, with `SILICON_COMPILER_HOME` or other environment variables configured for `siliconcompiler` to locate them.","severity":"gotcha","affected_versions":"All versions (0.x)"}],"env_vars":null,"last_verified":"2026-04-17T00:00:00.000Z","next_check":"2026-07-16T00:00:00.000Z","problems":[{"fix":"Adjust the import statement to `from lambdapdk.pdk import sky130` (or the relevant PDK name).","cause":"Attempting to import a specific PDK module directly from the top-level `lambdapdk` package, rather than from the `lambdapdk.pdk` subpackage.","error":"ModuleNotFoundError: No module named 'lambdapdk.pdk.sky130'"},{"fix":"Ensure `lambdapdk` is installed (`pip install lambdapdk`). Verify `siliconcompiler`'s environment setup (e.g., `SILICON_COMPILER_HOME`) if you have a non-standard installation.","cause":"`siliconcompiler` cannot locate the `lambdapdk` installation. This might be due to `lambdapdk` not being installed in the active Python environment or `siliconcompiler`'s search paths being incorrectly configured.","error":"siliconcompiler.core.SiliconCompilerError: PDK lambdapdk could not be found."},{"fix":"This often indicates that the *actual physical files* for the PDK (beyond the Python definitions in `lambdapdk`) are not available or are not being found by `siliconcompiler`. Check `siliconcompiler`'s path configuration (`chip.get('pdk', 'dir')`, `chip.get('package', 'path')`) and verify that the necessary technology files and libraries have been downloaded and are accessible.","cause":"Even though `lambdapdk` is loaded, a specific physical library file (e.g., a LEF file for a standard cell library, a GDS file) that the design flow requires is missing or its path is misconfigured.","error":"Error: Failed to find required library file: <some_file.lef> (or similar during chip.run())"}]}