Public

Thread: SDF annotation issues with Icarus

12 Discord messages from ℹ️ - Information/⁉️-questions/threads/sdf-annotation-issues-with-icarus.md.

Category: ℹ️ - Information Parent channel: #⁉️-questions Thread ID: 1504595042323533845

Messages: 12

message-1504595042323533845

2026-05-14T21:23:32.114+00:00 — ProfessorGeek101 (@professorgeek101)

Content

Hi everyone! I’m working on STA gate-level simulation for a GF180 LibreLane/Wafer.Space project and I’m running into SDF annotation issues with Icarus.

Our post-PNR netlist is using the 3.3V standard-cell library:

`gf180mcu_as_sc_mcu7t3v3`

The SDF contains entries like:

`(IOPATH A Y (...))`

for cells such as:

`gf180mcu_as_sc_mcu7t3v3__inv_2`
`gf180mcu_as_sc_mcu7t3v3__buff_2`

But the Verilog model I have for `gf180mcu_as_sc_mcu7t3v3.v` appears to be functional-only. For example, the cells only have assignments like:

`assign Y = !A;`
`assign Y = A;`

and I do not see `specify` / `endspecify` timing blocks. Because of that, Icarus reports errors like:

`Unable to match ModPath A -> Y`

The smoke test still passes functionally, but SDF annotation is not clean.

Is there a timing-capable Verilog model for `gf180mcu_as_sc_mcu7t3v3` with `specify` blocks? Or is timed GLS expected to be done with a different GF180 standard-cell library like `gf180mcu_fd_sc_mcu7t5v`?

Any guidance would be appreciated!
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2026-05_media/9f8e790b8e69f11922712e26172d8c95-0B6CF.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {}
}
</details>

message-1504619720631128204

2026-05-14T23:01:35.881+00:00 — Lofty (@ravenslofty)

Content

um, you are aware that you're trying to work with a third-party PDK, right?

Tholin's doing excellent work, but a one-person standard cell library is going to have teething issues like this.
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2026-05_media/dd665ae27be32531af89aeb08fd05e04-1D5A4.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {}
}
</details>

message-1504727703071494305

2026-05-15T06:10:40.901+00:00 — Leo Moser (mole99) (@mole99)

Content

@Tholin would probably appreciate your contribution of specify timing blocks in the [repository](https://github.com/AvalonSemiconductors/gf180mcu_as_sc_mcu7t3v3).
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2026-05_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png",
    "discriminator": "0000",
    "isBot": false,
    "roles": [
      {
        "color": null,
        "id": "1423020172595298314",
        "name": "Mod",
        "position": 4
      }
    ]
  },
  "message": {
    "mentions": [
      {
        "avatarUrl": "2026-05_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png",
        "color": null,
        "discriminator": "0000",
        "id": "220639106915368960",
        "isBot": false,
        "name": "tholin",
        "nickname": "Tholin",
        "roles": []
      }
    ]
  }
}
</details>

message-1504834929723441283

2026-05-15T13:16:45.727+00:00 — namibj

Content

By understanding is also that there's currently suspicion on the 3v3 SCL from Tholin (maybe though not the same one, but I don't see why it would not be (effectively) the same) having an issue that causes high power draw and possibly (somewhat) worse at least at/near startup.

@Tholin , if you can confirm the suspicious heating happens from a cold static start (no clocks or the like!), and happen to have the taped-out GDS for me, I'd like to try getting (low-crosstalk-fidelity) PEX out of it and the get Xyce to see how it comes up during it's POR until it (hopefully) stabilizes.
And see if it triggers and alarms (in particular about power draw, though I fear localized heating might be hard to figure due to the PEX likely not allowing sufficiently-functional thermal connectivity extraction) in the process of the simulation about safe operating areas and/or can at least _somewhat_ point to where the (I presume static) current is going.

If there'd be some special sequence for the external lines to follow to do the turning-on until it exhibits the suspicious power draw, please do share.

I think it'd be more worth it than trying full-die ttsky26a PEX into Xyce especially given that needs me to select a project via (iirc) digital waveforms
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2026-05_media/f885abc0dddd0a33e4d4991b3c99091d-7ACD2.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {
    "mentions": [
      {
        "avatarUrl": "2026-05_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png",
        "color": null,
        "discriminator": "0000",
        "id": "220639106915368960",
        "isBot": false,
        "name": "tholin",
        "nickname": "Tholin",
        "roles": []
      }
    ]
  }
}
</details>

message-1504836132284797071

2026-05-15T13:21:32.44+00:00 — tnt (@246tnt)

Content

AFAIK Tholin's current chip doesn't use his 3v3 SCL.
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2026-05_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {}
}
</details>

message-1504836147401199646

2026-05-15T13:21:36.044+00:00 — Tholin (@tholin)

Content

I am using the 5V SCL only
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2026-05_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {}
}
</details>

message-1504845926320177335

2026-05-15T14:00:27.52+00:00 — namibj

Content

Ohhhh sorry sounded like you had tested (some of) it somewhere on that die already.
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2026-05_media/f885abc0dddd0a33e4d4991b3c99091d-7ACD2.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {}
}
</details>

message-1506001678418055278

2026-05-18T18:33:00.293+00:00 — Tim 'mithro' Ansell (@mithro_)

Reply/reference

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

Content

I think @Tim Edwards has test deisgns with tholin's 3v3 SCL?
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2026-05_media/9679bb77da48d47c905b398d98a83780-75B68.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {
    "mentions": [
      {
        "avatarUrl": "2026-05_media/f885abc0dddd0a33e4d4991b3c99091d-7ACD2.png",
        "color": null,
        "discriminator": "0000",
        "id": "262706220073222144",
        "isBot": false,
        "name": "namibj",
        "nickname": "namibj",
        "roles": []
      },
      {
        "avatarUrl": "2026-05_media/6bcc8e61db497b620550682309ace5d5-D89B4.png",
        "color": null,
        "discriminator": "0000",
        "id": "1365118310701600900",
        "isBot": false,
        "name": "rtimothyedwards_19428",
        "nickname": "Tim Edwards",
        "roles": []
      }
    ]
  }
}
</details>

message-1517238639195586664

2026-06-18T18:44:40.515+00:00 — Jason Yang (@.pogeg)

Reply/reference

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

Content

Currently trying out SDF annotated gate simulations as well.
Would adding specify timing blocks be useful if Librelane can generate SDF annotations from STA  for you?
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2026-06_media/e31b263653838da47e41a71360dba87e-C926B.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {
    "mentions": [
      {
        "avatarUrl": "2026-06_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
          }
        ]
      }
    ]
  }
}
</details>

message-1517413638397493280

2026-06-19T06:20:03.576+00:00 — Leo Moser (mole99) (@mole99)

Reply/reference

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

Content

I don't understand the question. LibreLane already generates SDF timing data, gf180mcu_as_sc_mcu7t3v3 just needs the specify blocks.
If you would like to add them, it would probably be a good idea to gate them behind an `` `ifndef FUNCTIONAL`` same as in sky130.
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2026-06_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png",
    "discriminator": "0000",
    "isBot": false,
    "roles": [
      {
        "color": null,
        "id": "1423020172595298314",
        "name": "Mod",
        "position": 4
      }
    ]
  },
  "message": {
    "mentions": [
      {
        "avatarUrl": "2026-06_media/e31b263653838da47e41a71360dba87e-C926B.png",
        "color": null,
        "discriminator": "0000",
        "id": "236632873782738944",
        "isBot": false,
        "name": ".pogeg",
        "nickname": "Jason Yang",
        "roles": []
      }
    ]
  }
}
</details>

message-1517414238274981969

2026-06-19T06:22:26.598+00:00 — Jason Yang (@.pogeg)

Reply/reference

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

Content

Since Librelane can already generate SDF timing data for you, would there be a point in adding the specify blocks in the Verilog models
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2026-06_media/e31b263653838da47e41a71360dba87e-C926B.png",
    "discriminator": "0000",
    "isBot": false
  },
  "message": {
    "mentions": [
      {
        "avatarUrl": "2026-06_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
          }
        ]
      }
    ]
  }
}
</details>

message-1517414859648794785

2026-06-19T06:24:54.745+00:00 — Leo Moser (mole99) (@mole99)

Reply/reference

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

Content

The specify blocks in the Verilog models act as placeholders that the simulator populates with the SDF data. Often they are just simply empty triplets `(0.0,0.0,0.0)`.
<details> <summary>Other message metadata</summary>
{
  "author": {
    "avatarUrl": "2026-06_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png",
    "discriminator": "0000",
    "isBot": false,
    "roles": [
      {
        "color": null,
        "id": "1423020172595298314",
        "name": "Mod",
        "position": 4
      }
    ]
  },
  "message": {
    "mentions": [
      {
        "avatarUrl": "2026-06_media/e31b263653838da47e41a71360dba87e-C926B.png",
        "color": null,
        "discriminator": "0000",
        "id": "236632873782738944",
        "isBot": false,
        "name": ".pogeg",
        "nickname": "Jason Yang",
        "roles": []
      }
    ]
  }
}
</details>