Public

Thread: But then I get this from the DRC. ( Only

19 Discord messages from πŸ“ - Designing/πŸ•°οΈ-analog/threads/but-then-i-get-this-from-the-drc-only.md.

Category: πŸ“ - Designing Parent channel: #πŸ•°οΈ-analog Thread ID: 1442549382921715732

Messages: 19

message-1442707763267637338

2025-11-25T02:45:34.977+00:00 β€” bailey (@bailey8889)

Reply/reference

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

Content

<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-11_media/0-EB806.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {
    "mentions": [
      {
        "avatarUrl": "2025-11_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png",
        "color": null,
        "discriminator": "0000",
        "id": "596068704471482370",
        "isBot": false,
        "name": "246tnt",
        "nickname": "tnt",
        "roles": []
      }
    ]
  }
}
</details>

message-1442707767956738179

2025-11-25T02:45:36.095+00:00 β€” bailey (@bailey8889)

Content

@tnt I agree with you that this rule looks incorrect.

Currently it's
```
np12_l1 = nplus.interacting(nplus_edges.separation(pgate.edges.and(pcomp_edges), 0.32.um, euclidian).polygons(0.001.um))
```
which is (almost) nplus within 0.32um of pgate.

A different rule might be
```
np12_l1 = nplus.interacting(pgate.sized(0.32.um, size_inside(poly2), steps(3)))
```
The minimum poly2 spacing is 0.24um, which means sizing by 0.12um or greater can merge polygons. By splitting into 3 steps, we ensure that each growth will be about 0.11um < 0.12um.
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-11_media/0-EB806.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {
    "mentions": [
      {
        "avatarUrl": "2025-11_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png",
        "color": null,
        "discriminator": "0000",
        "id": "596068704471482370",
        "isBot": false,
        "name": "246tnt",
        "nickname": "tnt",
        "roles": []
      }
    ]
  }
}
</details>

message-1442773338740228156

2025-11-25T07:06:09.388+00:00 β€” Tim 'mithro' Ansell (@mithro_)

Content

@Tim Edwards & @Leo Moser (mole99) - Any ideas?
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-11_media/9679bb77da48d47c905b398d98a83780-75B68.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {
    "mentions": [
      {
        "avatarUrl": "2025-11_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png",
        "color": null,
        "discriminator": "0000",
        "id": "323371864074485771",
        "isBot": false,
        "name": "mole99",
        "nickname": "Leo Moser (mole99)",
        "roles": [
          {
            "color": null,
            "id": "1423020172595298314",
            "name": "Mod",
            "position": 4
          }
        ]
      },
      {
        "avatarUrl": "2025-11_media/6bcc8e61db497b620550682309ace5d5-D89B4.png",
        "color": null,
        "discriminator": "0000",
        "id": "1365118310701600900",
        "isBot": false,
        "name": "rtimothyedwards_19428",
        "nickname": "Tim Edwards",
        "roles": []
      }
    ]
  }
}
</details>

message-1442775354816204944

2025-11-25T07:14:10.058+00:00 β€” bailey (@bailey8889)

Content

@Tim 'mithro' Ansell this is actually Mabrains, I think. I don't see Amro in this room though.
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-11_media/0-EB806.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {
    "mentions": [
      {
        "avatarUrl": "2025-11_media/9679bb77da48d47c905b398d98a83780-75B68.png",
        "color": null,
        "discriminator": "0000",
        "id": "169786952432746498",
        "isBot": false,
        "name": "mithro_",
        "nickname": "Tim 'mithro' Ansell",
        "roles": []
      }
    ]
  }
}
</details>

message-1442780834863255552

2025-11-25T07:35:56.603+00:00 β€” Tim 'mithro' Ansell (@mithro_)

Content

@bailey - Yeah, but @Leo Moser (mole99) and @Tim Edwards have been the masters of trying to decode the cryptic docs πŸ™‚
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-11_media/9679bb77da48d47c905b398d98a83780-75B68.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {
    "inlineEmojis": [
      {
        "code": "slight_smile",
        "id": "",
        "imageUrl": "2025-11_media/1f642-83E8A.svg",
        "isAnimated": false,
        "name": "πŸ™‚"
      }
    ],
    "mentions": [
      {
        "avatarUrl": "2025-11_media/0-EB806.png",
        "color": null,
        "discriminator": "0000",
        "id": "738396032295108721",
        "isBot": false,
        "name": "bailey8889",
        "nickname": "bailey",
        "roles": []
      },
      {
        "avatarUrl": "2025-11_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png",
        "color": null,
        "discriminator": "0000",
        "id": "323371864074485771",
        "isBot": false,
        "name": "mole99",
        "nickname": "Leo Moser (mole99)",
        "roles": [
          {
            "color": null,
            "id": "1423020172595298314",
            "name": "Mod",
            "position": 4
          }
        ]
      },
      {
        "avatarUrl": "2025-11_media/6bcc8e61db497b620550682309ace5d5-D89B4.png",
        "color": null,
        "discriminator": "0000",
        "id": "1365118310701600900",
        "isBot": false,
        "name": "rtimothyedwards_19428",
        "nickname": "Tim Edwards",
        "roles": []
      }
    ]
  }
}
</details>

message-1442781662264954992

2025-11-25T07:39:13.871+00:00 β€” tnt (@246tnt)

Content

I thought that some of the sky130 rules were a bit weird but the Nplus/Pplus gf180 rules, they're up there too πŸ˜…
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-11_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {
    "inlineEmojis": [
      {
        "code": "sweat_smile",
        "id": "",
        "imageUrl": "2025-11_media/1f605-42B43.svg",
        "isAnimated": false,
        "name": "πŸ˜…"
      }
    ]
  }
}
</details>

message-1442782358863482961

2025-11-25T07:41:59.953+00:00 β€” Leo Moser (mole99) (@mole99)

Reply/reference

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

Content

Also, I don't think Mabrains is interested in contributing to open source anymore: https://github.com/fossi-foundation/globalfoundries-pdk-libs-gf180mcu_fd_pr/pull/6#issuecomment-3380860581
I've also had some unpleasant encounters with Amro in the past.
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-11_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png",
    "discriminator": "0000",
    "isBot": false,
    "roles": [
      {
        "color": null,
        "id": "1423020172595298314",
        "name": "Mod",
        "position": 4
      }
    ]
  },
  "message": {
    "mentions": [
      {
        "avatarUrl": "2025-11_media/0-EB806.png",
        "color": null,
        "discriminator": "0000",
        "id": "738396032295108721",
        "isBot": false,
        "name": "bailey8889",
        "nickname": "bailey",
        "roles": []
      }
    ]
  }
}
</details>

message-1442782434943963146

2025-11-25T07:42:18.092+00:00 β€” Leo Moser (mole99) (@mole99)

Reply/reference

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

Content

I'll take a look at the issue shortly. I agree that the rules are weird and that the docs could be written better too πŸ˜…
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-11_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png",
    "discriminator": "0000",
    "isBot": false,
    "roles": [
      {
        "color": null,
        "id": "1423020172595298314",
        "name": "Mod",
        "position": 4
      }
    ]
  },
  "message": {
    "inlineEmojis": [
      {
        "code": "sweat_smile",
        "id": "",
        "imageUrl": "2025-11_media/1f605-42B43.svg",
        "isAnimated": false,
        "name": "πŸ˜…"
      }
    ],
    "mentions": [
      {
        "avatarUrl": "2025-11_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png",
        "color": null,
        "discriminator": "0000",
        "id": "596068704471482370",
        "isBot": false,
        "name": "246tnt",
        "nickname": "tnt",
        "roles": []
      }
    ]
  }
}
</details>

message-1442787868941750336

2025-11-25T08:03:53.658+00:00 β€” Leo Moser (mole99) (@mole99)

Content

I agree with the interpretation of the rule here.
@bailey's rule implementation looks correct to me. Thanks a lot!

However, if we just want the gate extension as specified in the rule, we might want to remove the pgate after the sizing:

```
np12_l1 = nplus.interacting(pgate.sized(0.32.um, size_inside(poly2), steps(3)).not(pgate))
```

Not sure if that makes any difference here. What would you opt for?

I'll try both implementations on a chip design to see if there are any regressions.
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-11_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png",
    "discriminator": "0000",
    "isBot": false,
    "roles": [
      {
        "color": null,
        "id": "1423020172595298314",
        "name": "Mod",
        "position": 4
      }
    ]
  },
  "message": {
    "mentions": [
      {
        "avatarUrl": "2025-11_media/0-EB806.png",
        "color": null,
        "discriminator": "0000",
        "id": "738396032295108721",
        "isBot": false,
        "name": "bailey8889",
        "nickname": "bailey",
        "roles": []
      }
    ]
  }
}
</details>

message-1442789661499195533

2025-11-25T08:11:01.037+00:00 β€” tnt (@246tnt)

Content

I don't think it's all that useful to remove `pgate` because `nplus` can't overlap `pcomp` at all so if it was over `pgate` it would trigger another rule anyway.

Reactions

<details> <summary>Reactions data</summary>
[
  {
    "count": 1,
    "emoji": {
      "code": "thumbsup",
      "id": "",
      "imageUrl": "2025-11_media/1f44d-27259.svg",
      "isAnimated": false,
      "name": "πŸ‘"
    },
    "users": [
      {
        "avatarUrl": "2025-11_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png",
        "color": null,
        "discriminator": "0000",
        "id": "323371864074485771",
        "isBot": false,
        "name": "mole99",
        "nickname": "Leo Moser (mole99)"
      }
    ]
  }
]
</details><details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-11_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {}
}
</details>

message-1442789717731971222

2025-11-25T08:11:14.444+00:00 β€” tnt (@246tnt)

Content

I'll check if the rule fix my issue.
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-11_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {}
}
</details>

message-1442790484090290176

2025-11-25T08:14:17.158+00:00 β€” tnt (@246tnt)

Content

Yup @bailey 's rule doesn't flag an error on my design anymore.
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-11_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {
    "mentions": [
      {
        "avatarUrl": "2025-11_media/0-EB806.png",
        "color": null,
        "discriminator": "0000",
        "id": "738396032295108721",
        "isBot": false,
        "name": "bailey8889",
        "nickname": "bailey",
        "roles": []
      }
    ]
  }
}
</details>

message-1442790867168395264

2025-11-25T08:15:48.491+00:00 β€” Leo Moser (mole99) (@mole99)

Content

Great, PR is here: https://github.com/wafer-space/gf180mcu/pull/6
I'll merge it once the design ran through.

Embeds

<details> <summary>Embeds data</summary>
[
  {
    "color": "#1E2327",
    "description": "",
    "fields": [],
    "images": [],
    "inlineEmojis": [],
    "thumbnail": {
      "height": 600,
      "url": "2025-11_media/6-382DF",
      "width": 1200
    },
    "timestamp": null,
    "title": "fix: reimplement NP.12 to match the docs by mole99 Β· Pull Request ...",
    "url": "https://github.com/wafer-space/gf180mcu/pull/6"
  }
]
</details><details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-11_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png",
    "discriminator": "0000",
    "isBot": false,
    "roles": [
      {
        "color": null,
        "id": "1423020172595298314",
        "name": "Mod",
        "position": 4
      }
    ]
  },
  "message": {}
}
</details>

message-1442791021262929920

2025-11-25T08:16:25.23+00:00 β€” tnt (@246tnt)

Content

I also just tried extending the poly so it _does_ hit nplus and it was correctly flagged as an error.

Reactions

<details> <summary>Reactions data</summary>
[
  {
    "count": 2,
    "emoji": {
      "code": "clap",
      "id": "",
      "imageUrl": "2025-11_media/1f44f-3D381.svg",
      "isAnimated": false,
      "name": "πŸ‘"
    },
    "users": [
      {
        "avatarUrl": "2025-11_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png",
        "color": null,
        "discriminator": "0000",
        "id": "323371864074485771",
        "isBot": false,
        "name": "mole99",
        "nickname": "Leo Moser (mole99)"
      },
      {
        "avatarUrl": "2025-11_media/0-EB806.png",
        "color": null,
        "discriminator": "0000",
        "id": "738396032295108721",
        "isBot": false,
        "name": "bailey8889",
        "nickname": "bailey"
      }
    ]
  }
]
</details><details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-11_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {}
}
</details>

message-1442791074832580658

2025-11-25T08:16:38.002+00:00 β€” tnt (@246tnt)

Content

BTW there it PP.12 which is the same rule for PPlus πŸ™‚
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-11_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {
    "inlineEmojis": [
      {
        "code": "slight_smile",
        "id": "",
        "imageUrl": "2025-11_media/1f642-83E8A.svg",
        "isAnimated": false,
        "name": "πŸ™‚"
      }
    ]
  }
}
</details>

message-1442791158689562624

2025-11-25T08:16:57.995+00:00 β€” Leo Moser (mole99) (@mole99)

Content

Thanks for the heads up, will change it as well πŸ˜„
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-11_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png",
    "discriminator": "0000",
    "isBot": false,
    "roles": [
      {
        "color": null,
        "id": "1423020172595298314",
        "name": "Mod",
        "position": 4
      }
    ]
  },
  "message": {
    "inlineEmojis": [
      {
        "code": "smile",
        "id": "",
        "imageUrl": "2025-11_media/1f604-BF863.svg",
        "isAnimated": false,
        "name": "πŸ˜„"
      }
    ]
  }
}
</details>

message-1442800624747151381

2025-11-25T08:54:34.879+00:00 β€” Leo Moser (mole99) (@mole99)

Content

@tnt The PR has been merged, and the head has been tagged as `1.1.1`.
Taking a look at your other issue now.
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-11_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png",
    "discriminator": "0000",
    "isBot": false,
    "roles": [
      {
        "color": null,
        "id": "1423020172595298314",
        "name": "Mod",
        "position": 4
      }
    ]
  },
  "message": {
    "mentions": [
      {
        "avatarUrl": "2025-11_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png",
        "color": null,
        "discriminator": "0000",
        "id": "596068704471482370",
        "isBot": false,
        "name": "246tnt",
        "nickname": "tnt",
        "roles": []
      }
    ]
  }
}
</details>

message-1442800892477964300

2025-11-25T08:55:38.711+00:00 β€” tnt (@246tnt)

Content

Ah yeah thanks. I really don't understand why there is that false positive ... or maybe the `&` operator doesn't work like I think it does, but it should only take the overlap of the sized up version and the original metal and the original metal isn't close enough to cause a separation error ...
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-11_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {}
}
</details>

message-1442804867977445468

2025-11-25T09:11:26.544+00:00 β€” Leo Moser (mole99) (@mole99)

Content

I think it's related to the 45Β° angle and the staircase pattern. I had a similar issue with filler generation where the minimum spacing was not respected.

If you do the following:

```
layer.sized(5).sized(-5)
```

You would think the outline will be the same afterwards, only some holes will be closed. However, that may not necessarily be the case, as you can see here: https://www.klayout.de/forum/discussion/comment/12132#Comment_12132
There might be something similar going on in our case.

Anyways, doing a debug dump on the layers right now.
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-11_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png",
    "discriminator": "0000",
    "isBot": false,
    "roles": [
      {
        "color": null,
        "id": "1423020172595298314",
        "name": "Mod",
        "position": 4
      }
    ]
  },
  "message": {}
}
</details>