Public

Thread: @mole99 Is there any ESD protection in

8 Discord messages from πŸ“ - Designing/πŸ“-project-template/threads/mole99-is-there-any-esd-protection-in.md.

Category: πŸ“ - Designing Parent channel: #πŸ“-project-template Thread ID: 1428484368317288482

Messages: 8

message-1428607550730797160

2025-10-17T04:56:22.339+00:00 β€” Leo Moser (mole99) (@mole99)

Reply/reference

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

Content

<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-10_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png",
    "discriminator": "0000",
    "isBot": false,
    "roles": [
      {
        "color": null,
        "id": "1423020172595298314",
        "name": "Mod",
        "position": 4
      }
    ]
  },
  "message": {
    "mentions": [
      {
        "avatarUrl": "2025-10_media/3-FB033.png",
        "color": null,
        "discriminator": "0000",
        "id": "1338991700084785204",
        "isBot": false,
        "name": "jalf_47390",
        "nickname": "Alf",
        "roles": []
      }
    ]
  }
}
</details>

message-1428607555948777503

2025-10-17T04:56:23.583+00:00 β€” Leo Moser (mole99) (@mole99)

Content

@Alf The template project uses the pad cells as provided by the PDK. All of the digital pads have ESD protection. See here for example: https://gf180mcu-pdk.readthedocs.io/en/latest/IPs/IO/gf180mcu_fd_io/tri_state_2.html

This should cover HBM, CDM and MM: https://gf180mcu-pdk.readthedocs.io/en/latest/IPs/IO/gf180mcu_fd_io/esd.html

Each power/ground pad has one ESD protection circuit, the corners have two: https://gf180mcu-pdk.readthedocs.io/en/latest/IPs/IO/gf180mcu_fd_io/power.html

The analog pad has only HBM protection diodes, additional ESD protection must be added: https://gf180mcu-pdk.readthedocs.io/en/latest/IPs/IO/gf180mcu_fd_io/analog.html
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-10_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png",
    "discriminator": "0000",
    "isBot": false,
    "roles": [
      {
        "color": null,
        "id": "1423020172595298314",
        "name": "Mod",
        "position": 4
      }
    ]
  },
  "message": {
    "mentions": [
      {
        "avatarUrl": "2025-10_media/3-FB033.png",
        "color": null,
        "discriminator": "0000",
        "id": "1338991700084785204",
        "isBot": false,
        "name": "jalf_47390",
        "nickname": "Alf",
        "roles": []
      }
    ]
  }
}
</details>

message-1429073665193939057

2025-10-18T11:48:32.687+00:00 β€” Alf (@jalf_47390)

Content

Great, thanks!

Reactions

<details> <summary>Reactions data</summary>
[
  {
    "count": 1,
    "emoji": {
      "code": "thumbsup",
      "id": "",
      "imageUrl": "2025-10_media/1f44d-27259.svg",
      "isAnimated": false,
      "name": "πŸ‘"
    },
    "users": [
      {
        "avatarUrl": "2025-10_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-10_media/3-FB033.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {}
}
</details>

message-1431021703684952287

2025-10-23T20:49:21.256+00:00 β€” Alf (@jalf_47390)

Content

Hi again, just to clarify, are the "input" pins in the template what you refer to as analog inputs?
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-10_media/3-FB033.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {}
}
</details>

message-1431022467278704806

2025-10-23T20:52:23.311+00:00 β€” Alf (@jalf_47390)

Content

Also, the clock and reset line are a bit oddly placed in the package, down in the corner. A mid chip location feels like a better place for routing and minimize clock/reset delta over the chip. Was there some particular thinking of the location?
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-10_media/3-FB033.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {}
}
</details>

message-1431170870432239777

2025-10-24T06:42:05.38+00:00 β€” Leo Moser (mole99) (@mole99)

Content

Hi @Alf, no, the `NUM_INPUT` parameter controls the number of `gf180mcu_fd_io__in_c` pads, which is a digital input pad. https://github.com/wafer-space/gf180mcu-project-template/blob/a4805b8bb19a960c107ed6f199936e6442d52207/src/chip_top.sv#L242C9-L242C29
The analog pad is `gf180mcu_fd_io__asig_5p0`. I will add another parameter `NUM_ANALOG` that instantiates analog pads.

No, there was no particular thinking of the location besides having them at `pad_0`/`pad_1`. You can easily swap pins by editing the LibreLane configuration: https://github.com/wafer-space/gf180mcu-project-template/blob/main/librelane/config.yaml

It might make sense to move those closer to the center in the template. Just do understand this better: Does this really make a difference for clock/reset delta? The pads are directly next to each other.
Could it be because the clock root buffer for the clock tree is located somewhere in the middle of the chip, and the reset does not form a tree?
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-10_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png",
    "discriminator": "0000",
    "isBot": false,
    "roles": [
      {
        "color": null,
        "id": "1423020172595298314",
        "name": "Mod",
        "position": 4
      }
    ]
  },
  "message": {
    "mentions": [
      {
        "avatarUrl": "2025-10_media/3-FB033.png",
        "color": null,
        "discriminator": "0000",
        "id": "1338991700084785204",
        "isBot": false,
        "name": "jalf_47390",
        "nickname": "Alf",
        "roles": []
      }
    ]
  }
}
</details>

message-1431190220807737385

2025-10-24T07:58:58.869+00:00 β€” Alf (@jalf_47390)

Content

Hi, tnx!   I was not thinking of delta between clock and reset but overall clock propagation. Perhaps it is less critical for these nodes and frequencies but in general it is desirable to try and clock the whole chip as simultaneous as possible. If the clock comes in at lower corner then those blocks will clock sooner than the ones at the top.
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-10_media/3-FB033.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {}
}
</details>

message-1431194578463101030

2025-10-24T08:16:17.815+00:00 β€” Leo Moser (mole99) (@mole99)

Content

Hi Alf, that won't happen since OpenROAD builds up a balanced clock tree that is fed from root clock buffer which will be located somewhere in the middle of the chip. You can view the clock tree using the OpenROAD GUI. OpenSTA runs to ensure that setup/hold is met for all flip-flops.
So the only difference would be the distance from the pad to the root clock buffer. Of course, it is better if that distance is smaller, but I don't know how critical that really is.
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2025-10_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png",
    "discriminator": "0000",
    "isBot": false,
    "roles": [
      {
        "color": null,
        "id": "1423020172595298314",
        "name": "Mod",
        "position": 4
      }
    ]
  },
  "message": {}
}
</details>