Public

Thread: Is the DRC using KLayout supposed to

4 Discord messages from ℹ️ - Information/general/threads/is-the-drc-using-klayout-supposed-to.md.

Category: ℹ️ - Information Parent channel: #general Thread ID: 1497441633611026463

Messages: 4

message-1497511249108275200

2026-04-25T08:15:04.201+00:00 — Leo Moser (mole99) (@mole99)

Reply/reference

<details> <summary>Reference data</summary>
{
  "channelId": "1361349523724570941",
  "guildId": "1361349522684510449",
  "messageId": "1497441633611026463"
}
</details>

Content

<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2026-04_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png",
    "discriminator": "0000",
    "isBot": false,
    "roles": [
      {
        "color": null,
        "id": "1423020172595298314",
        "name": "Mod",
        "position": 4
      }
    ]
  },
  "message": {
    "mentions": [
      {
        "avatarUrl": "2026-04_media/cb1033d824ad5ed651e8f2b5bbdba391-BCBFE.png",
        "color": null,
        "discriminator": "0000",
        "id": "319853768550121473",
        "isBot": false,
        "name": "thecomputerguy",
        "nickname": "The Computer Guy",
        "roles": []
      }
    ]
  }
}
</details>

message-1497511258822541332

2026-04-25T08:15:06.517+00:00 — Leo Moser (mole99) (@mole99)

Content

Yes, KLayout DRC takes a while to run. KLayout can make use of multiple threads, but only in certain situations.

There is a `run_drc.py` script (not sure if its still included in the ws PDK fork) that splits the DRC deck into individual rule decks and runs them in separate processes. This is a naive implementation and has many drawbacks.

We are currently working on a substantially better implementation that uses only KLayout and Ruby scripting. @Clyde Laforge is spearheading this work.
It should be ready to try in ~1/2 weeks, initially with just one worker as before, but with the option to increase the number of workers that run in parallel.
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2026-04_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png",
    "discriminator": "0000",
    "isBot": false,
    "roles": [
      {
        "color": null,
        "id": "1423020172595298314",
        "name": "Mod",
        "position": 4
      }
    ]
  },
  "message": {
    "mentions": [
      {
        "avatarUrl": "2026-04_media/e9fd582c6cd4273d01cbf5dfd4bb3455-27807.png",
        "color": null,
        "discriminator": "0000",
        "id": "1401841055975870476",
        "isBot": false,
        "name": "scafir",
        "nickname": "Clyde Laforge",
        "roles": []
      }
    ]
  }
}
</details>

message-1497659452726313021

2026-04-25T18:03:58.697+00:00 — The Computer Guy (@thecomputerguy)

Content

Great, it would be nice if it worked better with 128 cores lol
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2026-04_media/cb1033d824ad5ed651e8f2b5bbdba391-BCBFE.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {}
}
</details>

message-1499494684651819191

2026-04-30T19:36:32.085+00:00 — Clyde Laforge (@scafir)

Content

Hey, so the merge request is pretty much ready, and it would be nice to have people try out the new DRC approach. It only work with cli for now. To try it out, clone my repo and branch `git clone -b drc_structure git@github.com:Scafir/globalfoundries-pdk-libs-gf180mcu_fd_pv.git` and you can run it with `klayout -b -r globalfoundries-pdk-libs-gf180mcu_fd_pv/klayout/drc/gf180mcu_drc.rb -rd help=true`
You probably want `-rd workers=<absurd_amount> -rd threads=1` . I would be very interested to hear about total runtime and amount of RAM usage (compared to whatever method you are currently using `run_drc.py` , gui, ...).
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2026-04_media/e9fd582c6cd4273d01cbf5dfd4bb3455-27807.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {}
}
</details>