{
  "guild": {
    "id": "1361349522684510449",
    "name": "wafer.space Community",
    "iconUrl": "2026-07_media/fb143eaa45770cbb40493d09b625e98b-09FD1.png"
  },
  "channel": {
    "id": "1528307350790733886",
    "type": "GuildPublicThread",
    "categoryId": "1361349523724570941",
    "category": "general",
    "name": "Sylvain is working on a ROM compiler.",
    "topic": null
  },
  "dateRange": {
    "after": "2026-06-30T23:59:59.999+00:00",
    "before": "2026-08-01T00:00:00+00:00"
  },
  "exportedAt": "2026-07-31T22:09:00.2543873+00:00",
  "messages": [
    {
      "id": "1528320505801871391",
      "type": "21",
      "timestamp": "2026-07-19T08:40:03.405+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "",
      "author": {
        "id": "596068704471482370",
        "name": "246tnt",
        "discriminator": "0000",
        "nickname": "tnt",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [
        {
          "id": "323371864074485771",
          "name": "mole99",
          "discriminator": "0000",
          "nickname": "Leo Moser (mole99)",
          "color": null,
          "isBot": false,
          "roles": [
            {
              "id": "1423020172595298314",
              "name": "Mod",
              "color": null,
              "position": 4
            }
          ],
          "avatarUrl": "2026-07_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png"
        }
      ],
      "reference": {
        "messageId": "1528307350790733886",
        "channelId": "1361349523724570941",
        "guildId": "1361349522684510449"
      },
      "inlineEmojis": []
    },
    {
      "id": "1528320511543738368",
      "type": "Default",
      "timestamp": "2026-07-19T08:40:04.774+00:00",
      "timestampEdited": "2026-07-19T09:18:58.86+00:00",
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Yes, although depending on the content a yosys ROM can be smaller, that's only true if the content can simplify well. If not, it quickly grows and the routing mess it creates also can make P&R a real pain.\n\nI have been drafing how to adapt it to gf180. Some of the tricks and structure I used in sky130 don't really apply here ( actually then end up being counter productive ) but I have a few things up my sleeve that I hope will pan out.\n\nPriority ATM is however to validate the sky130 one. Although it's been silicon proven as far as it outputs the right data, the whole timing validation remains to be done and that's not a small thing \uD83D\uDE05",
      "author": {
        "id": "596068704471482370",
        "name": "246tnt",
        "discriminator": "0000",
        "nickname": "tnt",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [
        {
          "emoji": {
            "id": "",
            "name": "\uD83D\uDC4D",
            "code": "thumbsup",
            "isAnimated": false,
            "imageUrl": "2026-07_media/1f44d-27259.svg"
          },
          "count": 2,
          "users": [
            {
              "id": "709384666909507634",
              "name": "egorxe",
              "discriminator": "0000",
              "nickname": "egorxe",
              "color": null,
              "isBot": false,
              "avatarUrl": "2026-07_media/3-FB033.png"
            },
            {
              "id": "756011607603019777",
              "name": "anfroholic",
              "discriminator": "0000",
              "nickname": "anfroholic",
              "color": null,
              "isBot": false,
              "avatarUrl": "2026-07_media/67bd670a335a2f955fb2ded57088a2cb-675B3.png"
            }
          ]
        }
      ],
      "mentions": [],
      "inlineEmojis": [
        {
          "id": "",
          "name": "\uD83D\uDE05",
          "code": "sweat_smile",
          "isAnimated": false,
          "imageUrl": "2026-07_media/1f605-42B43.svg"
        }
      ]
    },
    {
      "id": "1528736051407880202",
      "type": "Default",
      "timestamp": "2026-07-20T12:11:17.198+00:00",
      "timestampEdited": "2026-07-20T12:24:01.525+00:00",
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Thank you both. \n\nI guess a possible sythesis based solution could be to have a librelane step that builds a macro for the rom (cached om rom content), which would give the benefits @Leo Moser (mole99) mentioned without needing to port to every process.",
      "author": {
        "id": "1498420485531111548",
        "name": "robtaylor_52029",
        "discriminator": "0000",
        "nickname": "Rob Taylor",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/3-FB033.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [
        {
          "id": "323371864074485771",
          "name": "mole99",
          "discriminator": "0000",
          "nickname": "Leo Moser (mole99)",
          "color": null,
          "isBot": false,
          "roles": [
            {
              "id": "1423020172595298314",
              "name": "Mod",
              "color": null,
              "position": 4
            }
          ],
          "avatarUrl": "2026-07_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png"
        }
      ],
      "inlineEmojis": []
    },
    {
      "id": "1528744064969609308",
      "type": "Default",
      "timestamp": "2026-07-20T12:43:07.78+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "I don't see how that would work. If you use a normal synthesis process to build a ROM, the size of that macro is heavily dependent  on the ROM content. If you change the rom content, the size would change.",
      "author": {
        "id": "596068704471482370",
        "name": "246tnt",
        "discriminator": "0000",
        "nickname": "tnt",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1528745950993059890",
      "type": "Default",
      "timestamp": "2026-07-20T12:50:37.443+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "I think the idea is to avoid paying the ROM's PnR cost each time?",
      "author": {
        "id": "262706220073222144",
        "name": "namibj",
        "discriminator": "0000",
        "nickname": "namibj",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/f885abc0dddd0a33e4d4991b3c99091d-7ACD2.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1528758708761399336",
      "type": "Reply",
      "timestamp": "2026-07-20T13:41:19.132+00:00",
      "timestampEdited": "2026-07-20T13:44:15.271+00:00",
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "true.. isn't that also the case for a ram generator? I guess you could configure a macro block size, pins etc",
      "author": {
        "id": "1498420485531111548",
        "name": "robtaylor_52029",
        "discriminator": "0000",
        "nickname": "Rob Taylor",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/3-FB033.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [
        {
          "id": "596068704471482370",
          "name": "246tnt",
          "discriminator": "0000",
          "nickname": "tnt",
          "color": null,
          "isBot": false,
          "roles": [],
          "avatarUrl": "2026-07_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png"
        }
      ],
      "reference": {
        "messageId": "1528744064969609308",
        "channelId": "1528307350790733886",
        "guildId": "1361349522684510449"
      },
      "inlineEmojis": []
    },
    {
      "id": "1528758813359083641",
      "type": "Reply",
      "timestamp": "2026-07-20T13:41:44.07+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "could cache based on pdk and hash of rom contents",
      "author": {
        "id": "1498420485531111548",
        "name": "robtaylor_52029",
        "discriminator": "0000",
        "nickname": "Rob Taylor",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/3-FB033.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [
        {
          "id": "262706220073222144",
          "name": "namibj",
          "discriminator": "0000",
          "nickname": "namibj",
          "color": null,
          "isBot": false,
          "roles": [],
          "avatarUrl": "2026-07_media/f885abc0dddd0a33e4d4991b3c99091d-7ACD2.png"
        }
      ],
      "reference": {
        "messageId": "1528745950993059890",
        "channelId": "1528307350790733886",
        "guildId": "1361349522684510449"
      },
      "inlineEmojis": []
    },
    {
      "id": "1528759895434854531",
      "type": "Reply",
      "timestamp": "2026-07-20T13:46:02.057+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "I wonder if there's a way to calculate what the max area could be for a given rom size. I'm finding it hard to think about that though \uD83D\uDE05",
      "author": {
        "id": "1498420485531111548",
        "name": "robtaylor_52029",
        "discriminator": "0000",
        "nickname": "Rob Taylor",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/3-FB033.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "reference": {
        "messageId": "1528758708761399336",
        "channelId": "1528307350790733886",
        "guildId": "1361349522684510449"
      },
      "inlineEmojis": [
        {
          "id": "",
          "name": "\uD83D\uDE05",
          "code": "sweat_smile",
          "isAnimated": false,
          "imageUrl": "2026-07_media/1f605-42B43.svg"
        }
      ]
    },
    {
      "id": "1528787193852727588",
      "type": "Reply",
      "timestamp": "2026-07-20T15:34:30.507+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "The benefit of synthesis (via abc) ROM would be to be smaller than a mask ROM.",
      "author": {
        "id": "262706220073222144",
        "name": "namibj",
        "discriminator": "0000",
        "nickname": "namibj",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/f885abc0dddd0a33e4d4991b3c99091d-7ACD2.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [
        {
          "id": "1498420485531111548",
          "name": "robtaylor_52029",
          "discriminator": "0000",
          "nickname": "Rob Taylor",
          "color": null,
          "isBot": false,
          "roles": [],
          "avatarUrl": "2026-07_media/3-FB033.png"
        }
      ],
      "reference": {
        "messageId": "1528758708761399336",
        "channelId": "1528307350790733886",
        "guildId": "1361349522684510449"
      },
      "inlineEmojis": []
    },
    {
      "id": "1528787305341518056",
      "type": "Reply",
      "timestamp": "2026-07-20T15:34:57.088+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Design a mask ROM.",
      "author": {
        "id": "262706220073222144",
        "name": "namibj",
        "discriminator": "0000",
        "nickname": "namibj",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/f885abc0dddd0a33e4d4991b3c99091d-7ACD2.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [
        {
          "id": "1498420485531111548",
          "name": "robtaylor_52029",
          "discriminator": "0000",
          "nickname": "Rob Taylor",
          "color": null,
          "isBot": false,
          "roles": [],
          "avatarUrl": "2026-07_media/3-FB033.png"
        }
      ],
      "reference": {
        "messageId": "1528759895434854531",
        "channelId": "1528307350790733886",
        "guildId": "1361349522684510449"
      },
      "inlineEmojis": []
    },
    {
      "id": "1529162555023691786",
      "type": "Reply",
      "timestamp": "2026-07-21T16:26:03.584+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "cool. let me know if you do anything in this space \uD83D\uDE42",
      "author": {
        "id": "1498420485531111548",
        "name": "robtaylor_52029",
        "discriminator": "0000",
        "nickname": "Rob Taylor",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/3-FB033.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [
        {
          "id": "262706220073222144",
          "name": "namibj",
          "discriminator": "0000",
          "nickname": "namibj",
          "color": null,
          "isBot": false,
          "roles": [],
          "avatarUrl": "2026-07_media/f885abc0dddd0a33e4d4991b3c99091d-7ACD2.png"
        }
      ],
      "reference": {
        "messageId": "1528787305341518056",
        "channelId": "1528307350790733886",
        "guildId": "1361349522684510449"
      },
      "inlineEmojis": [
        {
          "id": "",
          "name": "\uD83D\uDE42",
          "code": "slight_smile",
          "isAnimated": false,
          "imageUrl": "2026-07_media/1f642-83E8A.svg"
        }
      ]
    },
    {
      "id": "1529162679690723418",
      "type": "Default",
      "timestamp": "2026-07-21T16:26:33.307+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "I'm not expecting to \uD83D\uDE41",
      "author": {
        "id": "262706220073222144",
        "name": "namibj",
        "discriminator": "0000",
        "nickname": "namibj",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/f885abc0dddd0a33e4d4991b3c99091d-7ACD2.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": [
        {
          "id": "",
          "name": "\uD83D\uDE41",
          "code": "slight_frown",
          "isAnimated": false,
          "imageUrl": "2026-07_media/1f641-E1429.svg"
        }
      ]
    },
    {
      "id": "1529164396448841748",
      "type": "Reply",
      "timestamp": "2026-07-21T16:33:22.614+00:00",
      "timestampEdited": "2026-07-21T16:34:02.26+00:00",
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "(Though I am looking towards perhaps a RAM setup that would allow mapping a short history of nominal transmit symbols to a DAC code; and that in a way that can efficciently be run with a good amount of interleaving/C-slowed action applied, like 4 or 8 or so times slower RAM-bitline-action than the symbol rate of the stream.)\n(Such approach is highly capable of mitigating data-dependent output waveform distortion, even in ways that are non-trivial interactions with a particular instance's bond wire inductance and PVT variations, notably having rather little penalty for multi-level signalling (e.g. PAM3/4/5) compared to classic binary \"virtual\" shift register approaches to the task of mitigating data-dependent waveform distortion.)",
      "author": {
        "id": "262706220073222144",
        "name": "namibj",
        "discriminator": "0000",
        "nickname": "namibj",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/f885abc0dddd0a33e4d4991b3c99091d-7ACD2.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [
        {
          "emoji": {
            "id": "",
            "name": "❤️",
            "code": "heart",
            "isAnimated": false,
            "imageUrl": "2026-07_media/2764-A3D25.svg"
          },
          "count": 1,
          "users": [
            {
              "id": "1498420485531111548",
              "name": "robtaylor_52029",
              "discriminator": "0000",
              "nickname": "Rob Taylor",
              "color": null,
              "isBot": false,
              "avatarUrl": "2026-07_media/3-FB033.png"
            }
          ]
        }
      ],
      "mentions": [
        {
          "id": "1498420485531111548",
          "name": "robtaylor_52029",
          "discriminator": "0000",
          "nickname": "Rob Taylor",
          "color": null,
          "isBot": false,
          "roles": [],
          "avatarUrl": "2026-07_media/3-FB033.png"
        }
      ],
      "reference": {
        "messageId": "1529162555023691786",
        "channelId": "1528307350790733886",
        "guildId": "1361349522684510449"
      },
      "inlineEmojis": []
    },
    {
      "id": "1529836775453757460",
      "type": "Reply",
      "timestamp": "2026-07-23T13:05:10.261+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "ah well \uD83D\uDE42",
      "author": {
        "id": "1498420485531111548",
        "name": "robtaylor_52029",
        "discriminator": "0000",
        "nickname": "Rob Taylor",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/3-FB033.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [
        {
          "id": "262706220073222144",
          "name": "namibj",
          "discriminator": "0000",
          "nickname": "namibj",
          "color": null,
          "isBot": false,
          "roles": [],
          "avatarUrl": "2026-07_media/f885abc0dddd0a33e4d4991b3c99091d-7ACD2.png"
        }
      ],
      "reference": {
        "messageId": "1529162679690723418",
        "channelId": "1528307350790733886",
        "guildId": "1361349522684510449"
      },
      "inlineEmojis": [
        {
          "id": "",
          "name": "\uD83D\uDE42",
          "code": "slight_smile",
          "isAnimated": false,
          "imageUrl": "2026-07_media/1f642-83E8A.svg"
        }
      ]
    }
  ],
  "messageCount": 14
}