Guild icon
wafer.space Community
Information / general
Welcome to wafer.space - documentation at wafer.space github - buy at buy.wafer.space - archives at discord.wafer.space
Between 2025-11-30 11:59 p.m. and 2026-01-01 12:00 a.m.
Avatar
Tim 'mithro' Ansell 2025-12-01 4:48 a.m.
Avatar
Tim 'mithro' Ansell 2025-12-01 5:19 a.m.
@Ethan Mahintorabi - Anything interesting in https://ieeexplore.ieee.org/document/10833805 ?
Avatar
itisyeetimetoday 2025-12-01 6:43 a.m.
It seems like for pure digital dense, the high density libraries SKY130 is around 170kG/mm^2 for raw/100kG/mm^2 for routed. GF180MCU doesn't have numbers I could find, but maybe it's around/better than SKY130? Anyone know what the numbers for SKY90/price is shaping up to be? Are there rumors/news about other nodes that will be open sourced?
Avatar
@itisyeetimetoday sky90 is dead afaik. Also I'm not sure how you would think gf180mcu could ever be more dense than sky130 ... from an area density PoV it's way worse. raw routing wires are twice as big ( so 4 times worse in area ), cells are much much larger than the hd lib from sky130.
Avatar
ReJ aka Renaldas Zioma 2025-12-01 9:00 a.m.
@Tim 'mithro' Ansell @Ethan Mahintorabi afaik Andreas Andreou (from John Hopkins) and Shantanu Chakrabartty groups are working together on a new open-source DVS sensor. They plan to tapeout on 130nm. It is part of annual Telluride Neuromorphic Workshop.
9:04 a.m.
Their prototype wasn’t very dense either, but promising (edited)
Avatar
@Tim 'mithro' Ansell congratulations on funding the first shuttle
🥳 4
BreakingTaps started a thread. 2025-12-01 4:29 p.m.
Avatar
Tim 'mithro' Ansell 2025-12-01 4:49 p.m.
My current plan is, (1) Finish the https://platform.wafer.space deployment. (2) Bed. (3) Check how things have gone and evaluate an what the update should be. Given the timeline, I'll probably port across any green prechecks on the https://test-platform.wafer.space to prod platform.
Platform for wafer.space low cost silicon manufacturing.
Avatar
Avatar
tnt
@itisyeetimetoday sky90 is dead afaik. Also I'm not sure how you would think gf180mcu could ever be more dense than sky130 ... from an area density PoV it's way worse. raw routing wires are twice as big ( so 4 times worse in area ), cells are much much larger than the hd lib from sky130.
itisyeetimetoday 2025-12-01 5:09 p.m.
Oh what happened to sky90? If the google open souce pdk dead or is it the node being discontinued? Any hope for anything lower than 180 from global foundaries/tsmc/samsung/intel?
Avatar
@itisyeetimetoday The whole google involvment into open pdks ended before sky90 was ever released ... and without google's money, skywater has no interest in releasing their tech.
Avatar
Avatar
tnt
@itisyeetimetoday The whole google involvment into open pdks ended before sky90 was ever released ... and without google's money, skywater has no interest in releasing their tech.
itisyeetimetoday 2025-12-01 5:14 p.m.
I see so sky130 was only open sourced beacause google paid a metric ton of cash? I'm guessing they paid GF for GF180MCU too, which probably means that we won't get any new open source nodes unless someone else steps up and pays for it?
Avatar
Well, IHP released their 130 nm node as an open pdk. (Although technically, that was funded by the German govt, but under ihp's initiative stiff IIUC).
Avatar
Avatar
tnt
Well, IHP released their 130 nm node as an open pdk. (Although technically, that was funded by the German govt, but under ihp's initiative stiff IIUC).
itisyeetimetoday 2025-12-01 5:15 p.m.
I see, how does IHP 130nm stack up aginst sky130 for density and/or price?
Avatar
It's faster. It's not as dense as sky130 though, simply because the cell library available isn't optimized for density like the hd one from sky130. Price is ~ 1500 EUR per sq mm for ~ 40 dies. (edited)
Avatar
Think it would be possible to do a "seamless" tiling if you didn't need to dice the final wafer (and designed features large enough to overlap on the edges to account for overlay error)? or will foundries always enforce a certain border of dead space width around the die? I guess you could just do a bunch of wirebonds between neighbors
Avatar
Avatar
BreakingTaps
Think it would be possible to do a "seamless" tiling if you didn't need to dice the final wafer (and designed features large enough to overlap on the edges to account for overlay error)? or will foundries always enforce a certain border of dead space width around the die? I guess you could just do a bunch of wirebonds between neighbors
These guys are trying that. Effectively the only thing between would be the metal layers for interconnect. https://www.cerebras.ai/chip
Cerebras is the go-to platform for fast and effortless AI training. Learn more at cerebras.ai.
Avatar
oh right, I forgot about them! will do some closer reading and see if I can glean any details I was noodling over some future projects that could be meshed with 1000 chips, and was like "why don't I just leave them all on the wafer?" 😇 I'm sure there are tons of weird issues like power distribution and timing and such, but could be a fun way to abuse an older node like 180nm
waferspace 1
Avatar
Avatar
Andrew Wingate
These guys are trying that. Effectively the only thing between would be the metal layers for interconnect. https://www.cerebras.ai/chip
125 petaflops! WOW! My chip deisgn is an AI accelerator and I'm hoping to hit GOPS! That is unbelievable!
👍 1
Avatar
Avatar
BreakingTaps
oh right, I forgot about them! will do some closer reading and see if I can glean any details I was noodling over some future projects that could be meshed with 1000 chips, and was like "why don't I just leave them all on the wafer?" 😇 I'm sure there are tons of weird issues like power distribution and timing and such, but could be a fun way to abuse an older node like 180nm
Tim 'mithro' Ansell 2025-12-02 3:44 a.m.
I have thought about that idea too!
😎 1
Avatar
Avatar
Tim 'mithro' Ansell
My current plan is, (1) Finish the https://platform.wafer.space deployment. (2) Bed. (3) Check how things have gone and evaluate an what the update should be. Given the timeline, I'll probably port across any green prechecks on the https://test-platform.wafer.space to prod platform.
Hi Tim, excuse my ignorance, but where do we test submit the design? I did it both on the test platform and platform.wafer.space. Going forward, can we just continue with platform.wafer.space? Will someone communicate about the design after it goes through the pre-checks? Thanks, -- Peter for MOSbiusV3
Avatar
Avatar
peterkinget
Hi Tim, excuse my ignorance, but where do we test submit the design? I did it both on the test platform and platform.wafer.space. Going forward, can we just continue with platform.wafer.space? Will someone communicate about the design after it goes through the pre-checks? Thanks, -- Peter for MOSbiusV3
Tim 'mithro' Ansell 2025-12-02 6:16 a.m.
An update should go out within 24h
BreakingTaps started a thread. 2025-12-02 5:09 p.m.
Avatar
Tim 'mithro' Ansell 2025-12-02 11:22 p.m.
How is everyone going today. I see a bunch of running prechecks on both test-platform and platform but not a massive queue. I also see a bunch of precheck successes.
Avatar
@Tholin : Any chance I could get you to add a tristate inverter to your 3.3V standard cell set?
Avatar
An inverter with a tri-state output enable?
Avatar
Yes, like invz in the gf180mcu_fd_sc_mcu7t5v0 library.
Avatar
That’s not too difficult
11:26 p.m.
But lctime cannot characterize three-state output enables and I don’t think STA looks at them anyways.
Avatar
The characterization is not important to me; I am using them in a ring oscillator that can't be simulated anyway.
Avatar
You will have to do some SDC file trickery of your own
11:27 p.m.
Ah
11:27 p.m.
Okay
11:27 p.m.
Are you still experimenting around with my SCL?
11:28 p.m.
I pushed some updates fixing DRC issues to the repo just last week, I hope you saw.
Avatar
No, I didn't see, but updating is easy. I need to start getting notifications on libraries that I am handling in open_pdks.
Avatar
Unfortunately, I did not get characterizations at other corners done in time. Please add healthy setup and slack margins to your librelane configs.
Avatar
Avatar
Tim Edwards
No, I didn't see, but updating is easy. I need to start getting notifications on libraries that I am handling in open_pdks.
Tim 'mithro' Ansell 2025-12-02 11:34 p.m.
@Tim Edwards - You can ask GitHub to notify you on any activity on a repository.. Don't know if that helps.
Avatar
My ISP is down for maintenance; wonderful timing.
Avatar
@Tim 'mithro' Ansell do we get assigned a project ID, or is this a freeform field? it's unclear from the "create new project" form
Avatar
Avatar
Lofty
@Tim 'mithro' Ansell do we get assigned a project ID, or is this a freeform field? it's unclear from the "create new project" form
Leo Moser (mole99) 2025-12-03 2:50 p.m.
You should be able to choose your own ID.
Avatar
CHES it is then.
🔥 1
Avatar
Tim 'mithro' Ansell 2025-12-03 2:54 p.m.
They have to be unique per shuttle, 4 letters/numbers and you can have [A-Z0-9]
3:00 p.m.
Well it's bed time for me.
Avatar
Hey, I see that pre-filled file url for the design file submission on platform.wafer.space is branch referred (github.com/[...]/blob/main/[...]). It could be a bit dangerous to use it as such, as they may change with time. For example, if some error is found in the precheck and there's a need to update it and rerun the check, the files may not be same anymore. A simple fix would be to encourage users to update files that are commit-referred instead, like github.com/[...]/blob/39306415f62fd6e74851dbc5f0dc57ea608af3f3/[...], which are static
Avatar
Antenna DRC clean?
5:19 p.m.
Oh no
5:19 p.m.
That’s not good for me
5:20 p.m.
I have no standard cell grid in the top level, so no antenna cells can be inserted.
Avatar
Yeah, same ...
Avatar
What do I even do when this happens? What config changes can I make?
Avatar
Supposedly OpenROAD now supports resolving antenna violation using higer layer strapping but I didn't search yet how to do that / configure it / ...
8:40 p.m.
That's on my todo for tomorrow.
Avatar
@Tholin @tnt Does your design use macros? These are just guesses. It would be nice to know if anything made a difference. If it does, you might try the DIODE_ON_PORTS parameter. If those are fanout related, make sure DESIGN_REPAIR_TIE_FANOUT is set to true. Maybe adjust the DESIGN_REPAIR_MAX_CAP_PCT setting. Maybe counter-intuitive, but a higher setting may decrease the ratio by increasing the gate area. On the other hand, a lower setting may, decrease the wiring area.
Avatar
@bailey I have diodes on all input ports of my macro. The violations are on wires going to the IO pads because the IO pads input don't have diodes I guess.
Avatar
Avatar
tnt
@bailey I have diodes on all input ports of my macro. The violations are on wires going to the IO pads because the IO pads input don't have diodes I guess.
There's a setting for both for DIODE_ON_PORTS. Does that make a difference/something you want?
Avatar
All my config changes make it worse. How am I expected to get 0 violations here?
🤔 1
Avatar
Tim 'mithro' Ansell 2025-12-03 10:17 p.m.
How is everyone going this morning?
🤣 1
Avatar
Avatar
Tholin
All my config changes make it worse. How am I expected to get 0 violations here?
Tim 'mithro' Ansell 2025-12-03 10:17 p.m.
Are these digital designs?
Avatar
Avatar
Clyde Laforge
Hey, I see that pre-filled file url for the design file submission on platform.wafer.space is branch referred (github.com/[...]/blob/main/[...]). It could be a bit dangerous to use it as such, as they may change with time. For example, if some error is found in the precheck and there's a need to update it and rerun the check, the files may not be same anymore. A simple fix would be to encourage users to update files that are commit-referred instead, like github.com/[...]/blob/39306415f62fd6e74851dbc5f0dc57ea608af3f3/[...], which are static
Tim 'mithro' Ansell 2025-12-03 10:18 p.m.
We do require you to submit a hash for the gds/oas. Probably still worth submitting a GitHub issue about it.
Avatar
Avatar
Tim 'mithro' Ansell
Are these digital designs?
Yes
Avatar
Avatar
Tholin
Yes
Tim 'mithro' Ansell 2025-12-03 10:24 p.m.
Couple of things -- If OpenROAD is having trouble closing on any of your designs, we should get them into the upstream OpenROAD benchmark test suite.
Avatar
Avatar
Tholin
All my config changes make it worse. How am I expected to get 0 violations here?
Tim 'mithro' Ansell 2025-12-03 10:25 p.m.
What config are you using? I assume you have pushed this design somewhere?
Avatar
@Tim 'mithro' Ansell trying to submit a new GDS url with new hashes, but it appears to be using the hashes from prior upload. any ideas?
10:27 p.m.
ah, reloading and restarting the flow worked
Avatar
Avatar
Tim 'mithro' Ansell
What config are you using? I assume you have pushed this design somewhere?
Multi-project die. Contribute to AvalonSemiconductors/ws-submission-2025 development by creating an account on GitHub.
10:28 p.m.
Here I go, pushing OpenROAD to its limits again...
💜 2
Avatar
Avatar
Tholin
Here I go, pushing OpenROAD to its limits again...
Tim 'mithro' Ansell 2025-12-03 10:30 p.m.
Like all the best people!
Avatar
@Tholin : And I'm pushing your library to the limits. Now I need an asynchronous set/reset flop in addition to the tristate inverter. If you haven't worked on the tristate buffer at all, then I will probably try to do both of those tomorrow, along with any others that might be useful (oai? nand4/nor4?). But probably just the flops and tristate inverter will get me through synthesis.
Avatar
Tim 'mithro' Ansell 2025-12-03 10:53 p.m.
10:53 p.m.
@Tholin - Maybe the following could help?
Avatar
Avatar
Tim Edwards
@Tholin : And I'm pushing your library to the limits. Now I need an asynchronous set/reset flop in addition to the tristate inverter. If you haven't worked on the tristate buffer at all, then I will probably try to do both of those tomorrow, along with any others that might be useful (oai? nand4/nor4?). But probably just the flops and tristate inverter will get me through synthesis.
Unfortunately, I will now be busy fixing antenna violations in almost all of my designs.
11:27 p.m.
All but like one or two of them have at least one violation.
11:32 p.m.
Even the multiplexer!
Avatar
Avatar
Tim 'mithro' Ansell
Click to see original message
This fixes the antenna violations but generates LVS errors.
11:41 p.m.
Ah, because the config lines you showed me add the diodes after detailed routing. I guess its supposed to be before?
Avatar
Avatar
Tholin
Ah, because the config lines you showed me add the diodes after detailed routing. I guess its supposed to be before?
Tim 'mithro' Ansell 2025-12-03 11:41 p.m.
I don't really know anything, I just forward messages between people 😛
Avatar
I am trying substituting_steps: +OpenROAD.RepairAntennas: Odb.InsertECODiodes and I’ll report back in ~30 minutes
Avatar
So, platform.wafer.space says it supports Google Drive, but I attach a google drive link and it reports Security validation failed: URL validation failed: Invalid file size: 0 bytes
Avatar
Avatar
Tholin
I am trying substituting_steps: +OpenROAD.RepairAntennas: Odb.InsertECODiodes and I’ll report back in ~30 minutes
uh, I think you might need to run OpenROAD.DetailedRouting after that (edited)
Avatar
Avatar
Lofty
So, platform.wafer.space says it supports Google Drive, but I attach a google drive link and it reports Security validation failed: URL validation failed: Invalid file size: 0 bytes
Tim 'mithro' Ansell 2025-12-03 11:46 p.m.
Can you create a GitHub Issue about that?
Avatar
Avatar
Tholin
Stuck
I suspect when mine comes around I might end up holding everyone else up >.>
Avatar
Avatar
Tim 'mithro' Ansell
Couple of things -- If OpenROAD is having trouble closing on any of your designs, we should get them into the upstream OpenROAD benchmark test suite.
Got another fun one. If you run the flow on this with its exact config, it’ll fail GLP with [GPL-0305] RePlAce diverged during gradient descent calculating, resulting in an invalid step length (inf or NaN). but if the max fanout constraint in the config is changed from 7 to 6, it passes (before failing due to routing congestion). Maybe also a fun benchmark case.
Avatar
Avatar
Tholin
Got another fun one. If you run the flow on this with its exact config, it’ll fail GLP with [GPL-0305] RePlAce diverged during gradient descent calculating, resulting in an invalid step length (inf or NaN). but if the max fanout constraint in the config is changed from 7 to 6, it passes (before failing due to routing congestion). Maybe also a fun benchmark case.
A month ago I was trying different fanout constraints and it caused so many headaches with that exact error message. I went back to the standard and didn't have any issues since then.
Avatar
Avatar
Tholin
Got another fun one. If you run the flow on this with its exact config, it’ll fail GLP with [GPL-0305] RePlAce diverged during gradient descent calculating, resulting in an invalid step length (inf or NaN). but if the max fanout constraint in the config is changed from 7 to 6, it passes (before failing due to routing congestion). Maybe also a fun benchmark case.
Tim 'mithro' Ansell 2025-12-04 1:22 a.m.
I'm pretty sure that should be a bug reported upstream.
Avatar
@Tim 'mithro' Ansell My last gds run on the test-platform.wafer.space website stalled after 3 hours. The same design ran on my computer for over 8 hours and didn't finish. Does the platform.wafer.space have longer run capability? (edited)
Avatar
Avatar
Tim 'mithro' Ansell
I'm pretty sure that should be a bug reported upstream.
I believe I reported to the project template, in hindsight I believe it's an upstream issue. https://github.com/wafer-space/gf180mcu-project-template/issues/5
I'm on a macOS which I read could cause some heuristic issues (here) so I will try this later on my windows machine. I am using the default setup and haven't changed anything (except #4). [...
Avatar
Avatar
Trevor Peyton
@Tim 'mithro' Ansell My last gds run on the test-platform.wafer.space website stalled after 3 hours. The same design ran on my computer for over 8 hours and didn't finish. Does the platform.wafer.space have longer run capability? (edited)
Tim 'mithro' Ansell 2025-12-04 1:35 a.m.
I see some people have prechecks running at the +12 hours
👍 1
1:38 a.m.
Avatar
That doesn't seem right
1:42 a.m.
My die is packed and it doesn't take nearly as long
1:43 a.m.
A 0.5x1 slot taking 12 hours feels like something got stuck
1:45 a.m.
Maybe not... I don't know how large this design was but if it's more complex than this then I could believe it.
Avatar
Tim 'mithro' Ansell 2025-12-04 2:18 a.m.
At some point in the near future, I'll decomission https://test-platform.wafer.space and then set it up to provide extra precheck workers for https://platform.wafer.space
Platform for wafer.space low cost silicon manufacturing.
Platform for wafer.space low cost silicon manufacturing.
2:25 a.m.
2:26 a.m.
Looks like there are still a few that need to be ported across from test-platform?
👍 1
Avatar
the deadline is just "have a GDS in the queue" right? we can continue to update the design through next week due to the upcoming DRC changes?
Avatar
Avatar
BreakingTaps
the deadline is just "have a GDS in the queue" right? we can continue to update the design through next week due to the upcoming DRC changes?
Leo Moser (mole99) 2025-12-04 5:53 a.m.
Yes
👍 2
Avatar
Avatar
BreakingTaps
the deadline is just "have a GDS in the queue" right? we can continue to update the design through next week due to the upcoming DRC changes?
Tim 'mithro' Ansell 2025-12-04 6:40 a.m.
You may have trouble logging into the https://platform.wafer.space but you should be able to reset the password via email. I was transfering users from test-platform.wafer.space but the passwords for email based login are hashed in a way they don't transfer.
Platform for wafer.space low cost silicon manufacturing.
👍 1
Avatar
Tim 'mithro' Ansell 2025-12-04 7:00 a.m.
Anyone need anything from me/waiting on anything from me at the moment? (Apart from looking into the DRC check queue on platform.wafer.space?)
Avatar
@Tholin : I don't know if you have time to do anything with these, but here are layouts for a set-reset flop and a tristate inverter. I think these two will be sufficient for my needs.
9:08 p.m.
The invz cell is the equivalent of the GF 5V 7 track cell of the same name (I changed pin names to match your conventions), and the dfsrtp cell is the equivalent of the GF 5V 7 track cell gf180mcu_fd_sc_mcu7t5v0__dffrsnq_2.
Avatar
I have also created all the views (GDS, CDL, LEF, verilog, and a liberty file just copied from the original) and can provide a gzipped tarball if needed.
Avatar
Tim 'mithro' Ansell 2025-12-04 10:24 p.m.
Avatar
The half width looks higher than the full in that diagram.
😮 1
Avatar
I am still fighting antenna violations
11:10 p.m.
Each of my individual macros now has none
11:10 p.m.
But the top level does!
11:11 p.m.
I really don’t want to have to insert a standard cell grid into this.
11:11 p.m.
The problem appears to be that the iopads don’t have diodes.
Avatar
Tim 'mithro' Ansell 2025-12-04 11:30 p.m.
@Tholin - I think @tnt is fighting with similar problem on Tiny Tapeout?
Avatar
I have a stupid idea on how to fix this, but if it works it works.
11:34 p.m.
But for the next shuttle, we should consider modifying the IO cells to have diodes on the Y output.
Avatar
I forgot diodes on ports on one of my macros. No more antenna violations after detailed routing. Lets hope KLayout doesn’t find anything either.
Avatar
Avatar
Tholin
I forgot diodes on ports on one of my macros. No more antenna violations after detailed routing. Lets hope KLayout doesn’t find anything either.
you're using a custom standard cell library for your design, right?
Avatar
well, I wanted to ask some questions about https://github.com/AvalonSemiconductors/gf180mcu_as_sc_mcu7t3v3, but I guess they don't matter then
Avatar
Tim 'mithro' Ansell 2025-12-05 1:30 a.m.
Avatar
Avatar
Lofty
well, I wanted to ask some questions about https://github.com/AvalonSemiconductors/gf180mcu_as_sc_mcu7t3v3, but I guess they don't matter then
Tim 'mithro' Ansell 2025-12-05 1:41 a.m.
I believe @Tim Edwards is using them in some way?
Avatar
Avatar
Tim 'mithro' Ansell
@Tholin - I think @tnt is fighting with similar problem on Tiny Tapeout?
They're fixed now. KLayout still shows some violations with the default deck, but I believe this to be a bug in the KLayout antenna deck. When I change it to what I think it should be according to the docs, then it passes.
Avatar
I am trying to design open source asic sha256 for bitcoin - securitybrahh/open-source-asic-bitcoin-chip-sha256
7:19 a.m.
Hi I am trying to design an open source ASIC for bitcoin miner. Can someone guide me how to design and send the project for manufacturing?
7:20 a.m.
So should I make wokwi and siliwiz projects?
Avatar
Why am I getting 596 CUP.3 errors? (edited)
Avatar
Avatar
Tholin
Why am I getting 596 CUP.3 errors? (edited)
Leo Moser (mole99) 2025-12-05 9:14 a.m.
Please see the latest announcement in #project-template
Avatar
I did update the PDK
Avatar
Avatar
Tholin
I did update the PDK
Leo Moser (mole99) 2025-12-05 9:17 a.m.
And you regenerated the padring with the updated pad library?
Avatar
Were my analog pad changes upstreamed? Otherwise, I still have to rely on my modded analog pads for DRT to function.
Avatar
Avatar
Tholin
Were my analog pad changes upstreamed? Otherwise, I still have to rely on my modded analog pads for DRT to function.
Leo Moser (mole99) 2025-12-05 9:22 a.m.
Have you submitted an upstream patch?
9:22 a.m.
The changes only affect the GDS, so you can keep your changes to the LEF.
Avatar
No, I don’t know how to do this properly. Modifying the existing cell seems difficult because of how its all crammed into one GDSII file and then referenced by precise byte offsets in the mag files. (edited)
9:26 a.m.
I added a pin as well
9:26 a.m.
DRT seems to like it when there is a "PAD" pin separate from ASIG5V even though they are both the same
Avatar
Leo Moser (mole99) 2025-12-05 9:28 a.m.
The GDS of the foundry pad library has already been adjusted for CUP.3. So far magic streamout and the following XOR with KLayout seem to be successful. So perhaps no changes to the mag files are necessary?
Avatar
I had to add a pin to the analog cell, so that implies a mag file change for sure
9:31 a.m.
I’m also talking about this at the end of every mag file. Updating the GDSII would have to update these lines in ALL mag files, as the byte offsets change.
9:31 a.m.
Maybe you got lucky since all you did was adjust some polygons
9:31 a.m.
Or maybe this information isn’t used
9:31 a.m.
But I don’t know
Avatar
I don't think it's used in the default flow, but updating it is definitely needed to not have invalid cross references in the PDK.
9:39 a.m.
And given the GDS changed size, those offsets have definitely changed so the current PDK has incoherent views which is not good.
Avatar
This is why, for all my SCLs, I generate separate GDSII files for each cell. Its a lot more files and looks like a mess, but its impossible to accidentally have everything suddenly have an invalid reference.
9:42 a.m.
I....don’t know how they even generated those byte offsets in the first place.
Avatar
You just do gds readonly true / gds read xxx.gds / writeall and this will rewrite mag views for all the cells in the GDS that was read.
Avatar
Leo Moser (mole99) 2025-12-05 9:44 a.m.
Thanks, I see! I'll update the mag files soon.
Avatar
I'm not sure how the maglef are done. But @Tim Edwards would know 😅
9:46 a.m.
maybe just reading the lef views before the GDS ?
9:46 a.m.
I think my project is cursed
9:46 a.m.
Haunted, even
Avatar
Is that using your IO ? Or the default one ?
Avatar
Default, but I applied some of my LEF changes
Avatar
Reverted those changes, still fails
10:03 a.m.
Disregard, I forgot to hit save in the text editor.
Avatar
Avatar
Tholin
Disregard, I forgot to hit save in the text editor.
BTDT
Avatar
Hard to tell because I'm looking at 2 days old version, but your chip top level should have corresponding inout for the analog signals and those should be connected to your newly defined PAD signal on the analog pins. (edited)
Avatar
I turned the standard cell grid back on so that antennas can be inserted, and even though DRT finishes with 0 antenna violations, KLayout still finds 175 problems. What do I do?
Avatar
Are you running the latest PDK update ?
11:46 a.m.
There was a fix for KLayout antenna check ~ 1.5h ago. (edited)
Avatar
Oh, right
11:55 a.m.
I started this flow before then
11:55 a.m.
That’s how long it takes!
11:57 a.m.
@Tim Edwards invz_2 has been added to my SCL. DFFs take a while, its over an hour to run all the simulations.
Avatar
Yeah, precheck we started 6h ago just finished for TT 😅
Avatar
Only after doing rm -rf librelane/runs && make librelane did it occur to me that I could’ve just re-run the antenna check on the existing GDSII...
Avatar
@Tim Edwards Both cells are now in the library. Have fun!
👍 1
🎉 1
Avatar
With the new PDK. NOW what do I do?
1:40 p.m.
Antenna repair doesn’t pick up on these.
1:40 p.m.
The antenna check after DRT says nothing’s wrong.
Avatar
Avatar
Tholin
The antenna check after DRT says nothing’s wrong.
Egor Lukyanchenko 2025-12-05 1:45 p.m.
There is currently an ongoing work to correct KLayout antenna checks, it could be due to this. See latest merged & unmerged PRs in the PDK repo.
Temporary development repository for the gf180mcuD PDK variant. - Pull requests · wafer-space/gf180mcu
Avatar
I thought that already was merged?
1:47 p.m.
Aaaand analog pads once again don’t route
Avatar
Avatar
Tholin
I thought that already was merged?
Egor Lukyanchenko 2025-12-05 1:54 p.m.
The latest PR from Leo relaxing overly strict Klayout antenna checks (considering whole diode area) was merget 4 hours ago. Do you have it in already? There is also one from me which is still not merged, but it will make KLayout checks more strict due to proper Metal5 thickness, so it does not look like your problem.
GitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.
Avatar
Avatar
tnt
You just do gds readonly true / gds read xxx.gds / writeall and this will rewrite mag views for all the cells in the GDS that was read.
@Leo Moser (mole99) I tried this and it appears to not generate LEFclass, LEFsite and LEFsymmetry properties, so ensure they are preserved from the old mag files.
Avatar
Avatar
Tholin
@Leo Moser (mole99) I tried this and it appears to not generate LEFclass, LEFsite and LEFsymmetry properties, so ensure they are preserved from the old mag files.
Leo Moser (mole99) 2025-12-05 2:08 p.m.
I think you have to annotate the GDS with the LEF files? I'm not sure as I haven't done this before. Perhaps @Tim Edwards could comment on this.
Avatar
Also, I am definitely on the new antenna DRC script. I even checked the actual file and it matches.
2:23 p.m.
Still getting antenna violations that LibreLane isn’t picking up on and repairing.
Avatar
Avatar
Tholin
Still getting antenna violations that LibreLane isn’t picking up on and repairing.
Leo Moser (mole99) 2025-12-05 2:47 p.m.
The final antenna summary in OpenROAD does not show these violations? If that is the case, can you load the marker database in KLayout to see which nets are affected?
Avatar
@Tholin If you can post the GDS and XML report, I can have a look.
3:11 p.m.
@Leo Moser (mole99) Actually now that I think about it, generating the mag/maglef is probably done as an install step of open_pdks ...
3:14 p.m.
Yeah, there is some magic stuff but also some python scripting to generate the mag/maglef from the GDS.
👌 1
Avatar
Avatar
Tholin
Also, I am definitely on the new antenna DRC script. I even checked the actual file and it matches.
Egor Lukyanchenko 2025-12-05 3:41 p.m.
BTW, @Tholin you're using your own 3.3V cell library in LibreLane right? What value do you use for ANTENNAGATEPLUSDIFF in your techlefs?
Avatar
@Egor Lukyanchenko He is not.
👌 1
Avatar
@Leo Moser (mole99) @Tholin : The LEF parameters can be set with the "property" command in magic by hand, or you can just read LEF on top of an existing layout, if you have the LEF already, and it will generate the properties for you. Be careful when you do that, because it will also try to relabel everything according to the ports in the LEF file. That may be what you want, then again, it might not.
👍 1
Avatar
Avatar
Tholin
Still getting antenna violations that LibreLane isn’t picking up on and repairing.
Switching to the development version of librelane might be worth a try to see if something changes. I had similar issues with antenna violations within the macros of our design. You could try to get the librelane dev version with nix shell github:librelane/librelane/dev and then run the synthesis flow with librelane librelane/config.yaml --pdk ${PDK} --pdk-root ${PDK_ROOT}. Set PDK_ROOT to some directory and then Librelane should download the PDK. At least for me this yielded better results that helped me debug the design (edited)
Avatar
Avatar
Jonathan
Switching to the development version of librelane might be worth a try to see if something changes. I had similar issues with antenna violations within the macros of our design. You could try to get the librelane dev version with nix shell github:librelane/librelane/dev and then run the synthesis flow with librelane librelane/config.yaml --pdk ${PDK} --pdk-root ${PDK_ROOT}. Set PDK_ROOT to some directory and then Librelane should download the PDK. At least for me this yielded better results that helped me debug the design (edited)
Egor Lukyanchenko 2025-12-05 4:35 p.m.
Allowing Librelane to download a PDK is probably not a good idea, as it will download it using ciel and for gf180mcu it will be outdated.
Avatar
Avatar
Leo Moser (mole99)
The final antenna summary in OpenROAD does not show these violations? If that is the case, can you load the marker database in KLayout to see which nets are affected?
I don’t know how to do this.
4:44 p.m.
Trying to figure it out
4:45 p.m.
But also, manually checking the coordinates a few times, its almost all on bidir_PAD2CORE lines
4:47 p.m.
Here we are
Avatar
Avatar
Egor Lukyanchenko
Allowing Librelane to download a PDK is probably not a good idea, as it will download it using ciel and for gf180mcu it will be outdated.
that's why there's the --manual-pdk option to librelane
Avatar
Avatar
Tholin
I don’t know how to do this.
Leo Moser (mole99) 2025-12-05 5:05 p.m.
About my previous question: Does the final antenna summary in OpenROAD show these violations? Because if it does, we just need to convince LibreLane to fix them in some way. If not, then we have a mismatch between OpenROAD's and KLayout's definition of antenna violations.
Avatar
Avatar
Leo Moser (mole99)
About my previous question: Does the final antenna summary in OpenROAD show these violations? Because if it does, we just need to convince LibreLane to fix them in some way. If not, then we have a mismatch between OpenROAD's and KLayout's definition of antenna violations.
Egor Lukyanchenko 2025-12-05 5:23 p.m.
If there were no such discrepancies previously , it most likely means that it appeared due to increase in ANTENNAGATEPLUSDIFF, as OR is not overfixing with diodes anymore. If it so, it means that the mismatch is most likely related to diodes, not metals.
Avatar
@Leo Moser (mole99) Yes, discrepency is what I'd like to check. But I'm wondering if being perfect is even possible since the LEF contains only the total gate/diff are and no information about the layers to reach that gate/diff area so I'm not sure OpenROAD can always be correct.
5:29 p.m.
But I'd need to analyze the final GDS to test that theory.
Avatar
So, I have KLayout antenna violations on wires that go in-between macros. I have antennas on all macro ports. So a wire with antennas on both ends is getting an antenna violation. Is that even possible?
5:30 p.m.
Like, the standard cell, I mean.
Avatar
Yes, it's possible.
5:31 p.m.
Depending on routing layers, that diode could be useless.
Avatar
When OpenROAD inserts a diode, it takes care to put it close to where the gate to protect is. But when you manually instanciate one, OpenROAD just sees that as "just another standard cell" and will place it where ever convenient. In tiny tapeout I was instanciating diodes, and I had to write a custom script to manually re-position those diode where appropriate so they are effective to fix some of my violations.
5:34 p.m.
If you're manually instanciating diodes, you could instead try to use this : https://openlane2.readthedocs.io/en/latest/reference/step_config_vars.html#diodes-on-ports-protection-routine which should also take care of placing them well.
Avatar
I have DIODE_ON_PORTS: both in all my flows
Avatar
Ah ok, nevermind then 😅
5:35 p.m.
Could you post the antenna report xml too so I don't have to run it 😅
Avatar
Avatar
Tholin
I have DIODE_ON_PORTS: both in all my flows
Egor Lukyanchenko 2025-12-05 5:49 p.m.
Diodes on output ports of macros do not help much as there is quite low probability of them being connected to the receiving gate without going "up" through the metal stack.
Avatar
Mmm, something is weird. Beause I picked a random violation and looked at it and it didn't properly account for the input protection diode that's present in the IO cell.
5:53 p.m.
Are you sure that was run with the latest PDK ?
5:56 p.m.
it measures perimeter at 2139 and gate area at 3.15 ( and those looks correct ) and report ratio as 679 ( so indeed a violation ). But there is a 1 um^2 diode that's propertly connected by a lower metal layer so this should make the effective gate area 3.15 + 15 * 1 = 18.15 and the ratio 117 which is well below the error threshold.
Avatar
That’s the tag I got checked out
5:59 p.m.
But I see there have been antenna-check related commits since then
6:01 p.m.
I will pull the latest and try to run the check again, since I have nothing better to try.
Avatar
@Tholin : What am I missing here? ABC: Setting driving cell to be "gf180mcu_as_sc_mcu7t3v3__inv_2/Y". ABC: Setting output load to be 72.910004. ABC: + source /home/tim/gits/gf180mcu_ocd_openframe/librelane/runs/RUN_2025-12-05_13-00-18/06-yosys-s ynthesis/AREA_0.abc ABC: Error: The network is combinational. ABC: Cannot find the default PI driving cell (gf180mcu_as_sc_mcu7t3v3__inv_2/Y) in the library.
Avatar
I don’t know
6:09 p.m.
Its not happening on my end either
6:10 p.m.
So I can’t replicate the issue
Avatar
Okay, actually that's good to know; it's probably something in my code, then.
Avatar
It did not like synthesizing my ring oscillator, which I guess shouldn't surprise me.
Avatar
Avatar
Tholin
I will pull the latest and try to run the check again, since I have nothing better to try.
Nope. Still getting antenna violations.
Avatar
Yeah ... there is still a bug in the deck 😅
7:29 p.m.
n_diode | n_diode ... cc @Leo Moser (mole99)
😢 1
Avatar
Leo Moser (mole99) 2025-12-05 7:29 p.m.
🤦‍♂️
😢 1
7:29 p.m.
Thanks, fixing now...
7:31 p.m.
Well
7:32 p.m.
I guess I can undo all the changes I’ve been making to my project to try and fix this.
Avatar
@Leo Moser (mole99): I'm getting an error No libs found for macro flow.py:698 gf180mcu_ocd_ip_sram__sram256x8m8wm1 at corner max_ff_n40C_5v50. The module will be black-boxed. But I am not specifying 5V anywhere. Where is this corner name coming from? My MACROS section specifies the .lib files for the SRAMs as, e.g., tt_025C_3v30.
Avatar
(Also it seems to be looking for 5V .lib files for the standard cells as well, and of course can't find any.)
Avatar
Avatar
Tim Edwards
@Leo Moser (mole99): I'm getting an error No libs found for macro flow.py:698 gf180mcu_ocd_ip_sram__sram256x8m8wm1 at corner max_ff_n40C_5v50. The module will be black-boxed. But I am not specifying 5V anywhere. Where is this corner name coming from? My MACROS section specifies the .lib files for the SRAMs as, e.g., tt_025C_3v30.
Leo Moser (mole99) 2025-12-05 8:25 p.m.
The LibreLane config in the PDK defines the various corners. You can override this from your config like so: https://github.com/splinedrive/gf180mcu-kianv-rv32ima-sv32/blob/4da6d0129e7d52011066a0dd335faa4a0551ebb8/librelane/config.yaml#L172 Make sure to change STA_CORNERS, LIB and DEFAULT_CORNER.
8:26 p.m.
If LIB is not set, the pdk_compat functionality in LibreLane will set it to these values: https://github.com/librelane/librelane/blob/d8b98532399f6eaa230e44e4a505bd653c10dd71/librelane/config/pdk_compat.py#L294
Avatar
@Leo Moser (mole99) : Thanks, that worked for Stage 10 and got me through synthesis. But I'm still getting the same message (as a warning, not an error) on the floorplanning (Stage 12), but only for the SRAM. As it is a warning only, I'm going to assume it's okay unless I discover otherwise. . .
👍 1
Avatar
if I upload a new GDS to platform.wafer.space, do I lose my spot in the queue? ^^;
Avatar
Leo Moser (mole99) 2025-12-05 9:28 p.m.
@Tim 'mithro' Ansell ^
Avatar
because I've been trying to get antenna check to pass locally, and, uh
Avatar
@Tholin I ran new antenna check on the GDS you sent. It didn't fix all of them, but it fixed some at least.
Avatar
Avatar
Leo Moser (mole99)
@Tim 'mithro' Ansell ^
answer: yes, you lose your spot in the queue
Avatar
Yep. I’m down to 17 errors.
Avatar
Uhhhhhhhh
11:57 p.m.
I know what’s causing this, but its still funny.
Avatar
But it appears we do have some discrepancies between OpenROAD and KLayout
bailey started a thread. 2025-12-06 12:36 a.m.
1:48 a.m.
I messed something up
1:48 a.m.
There is traces and standard cells clipping into my silicon art
1:48 a.m.
That is a big yikes
1:49 a.m.
Besides the DRC errors this brings, wanna bet its responsible for the false antenna positives?
Avatar
Maybe. Top level metal is rarely involved in antenna violations because it is almost guaranteed to be connected to diffusion somewhere. The only way to go is down.
Avatar
I may or may not have duplicated the artwork pixels onto every metal layer, as well as Poly2
2:07 a.m.
I have a fillblock over every piece of artwork because I am afraid of the fillers messing it up visually. So that’s why the artwork is on every layer. To prevent minimum density violations.
2:07 a.m.
The art IS my fill pattern!
💜 1
Avatar
Tim 'mithro' Ansell 2025-12-06 2:10 a.m.
I have to run very soon, but it looks like the prechecks are running okay on platform (even if there is still a bit of a queue) and are detecting antenna issues now?
2:13 a.m.
I didn't get a chance to deploy the functionality which lets me crank the number of simultaneous prechecks up yet but I think that will happen today.
2:19 a.m.
Also if you haven't already seen, there is a great post from Matt Venn @ https://www.zerotoasiccourse.com/post/excited_by_silicon/ about his thoughts on the state of open silicon.
I was recently asked what excites me most about the exploding open-source silicon ecosystem. Honestly? It depends who’s asking. For one person I might talk about Basilisk - the PULP team’s seriously impressive Linux-capable RISC-V core. For another, maybe the new GF180mcu MPW from Wafer.Space, or the millions in funding finally flowing into ...
💜 3
Avatar
I feel like I am far behind in the race, but at least I got LibreLane to give me GDS of a synthesized layout of my 3.3V picoRV32 in a mixed voltage padframe using my SRAM and I/O and Tholin's standard cells (thanks, Tholin!). I still have not worked on the power connections and there are other issues, and the whole thing is under-utilizing the space, but it is good progress!
❤️ 2
🎉 3
Avatar
@Tholin : FYI: I pulled your latest standard cell updates and obviously they worked because otherwise I would not have produced the pic above. But for the record, you are missing the verilog for the two new cells (my version, attached). Also, I noticed in the update that you renamed "decap" cells to "fillcap"; however, the setup file for LibreLane still calls out "decap" for the cells.
Avatar
Avatar
SecurityBrahh
Hi I am trying to design an open source ASIC for bitcoin miner. Can someone guide me how to design and send the project for manufacturing?
Tim 'mithro' Ansell 2025-12-06 5:25 a.m.
@SecurityBrahh - Just so you have the right expectations, any "bitcoin miner" accelerator on GF180MCU is not going to be competitive in any way against the current miner ASICs that are available (I doubt it would even beat a modern CPU). If you are doing it as an academic/learning exercise or for prototyping or otherwise, it could still make sense to do. Also doing a bitcoin miner isn't an easy task, I would not recommend it be your first ASIC or tapeout. You are not going to do a full miner with Tiny Tapeout (but you might be able to test some small parts of it with Tiny Tapeout). Start with something small and easy.
Avatar
Avatar
Tim 'mithro' Ansell
@SecurityBrahh - Just so you have the right expectations, any "bitcoin miner" accelerator on GF180MCU is not going to be competitive in any way against the current miner ASICs that are available (I doubt it would even beat a modern CPU). If you are doing it as an academic/learning exercise or for prototyping or otherwise, it could still make sense to do. Also doing a bitcoin miner isn't an easy task, I would not recommend it be your first ASIC or tapeout. You are not going to do a full miner with Tiny Tapeout (but you might be able to test some small parts of it with Tiny Tapeout). Start with something small and easy.
I am not entirely sure the tools could handle the power virus requirements of such an ASIC either
Avatar
Avatar
Tholin
This is why, for all my SCLs, I generate separate GDSII files for each cell. Its a lot more files and looks like a mess, but its impossible to accidentally have everything suddenly have an invalid reference.
Tim 'mithro' Ansell 2025-12-06 7:13 a.m.
That is exactly why the sky130 PDK is the way it is. Having every cell be a seperate gds file with stuff related to it in the same directory seems so logical to me. Lots of "industry people" hated the fact that the library was now a lot of files rather than one big file.
Avatar
Avatar
Lofty
answer: yes, you lose your spot in the queue
Tim 'mithro' Ansell 2025-12-06 7:19 a.m.
The queue is currently sorted by upload time for the GDS.
Avatar
Avatar
Tim 'mithro' Ansell
The queue is currently sorted by upload time for the GDS.
I figured it was a waste of everyone's time to check my initial GDS when the requirements had changed
Avatar
Avatar
Tholin
The art IS my fill pattern!
Tim 'mithro' Ansell 2025-12-06 7:21 a.m.
I had the crazy idea that we should have a "fill with artwork" tool that uses things like the wafer-space logo as the fill where it fits 😛 -- Probably a terrible idea.
Avatar
Avatar
Lofty
I am not entirely sure the tools could handle the power virus requirements of such an ASIC either
Tim 'mithro' Ansell 2025-12-06 7:24 a.m.
There is no reason a bitcoin minor would be required to have a power virus like profile. You are right that most groups are optimising their designs in a way that does produces results like that.
7:25 a.m.
Well, I've finally caught up with stuff on this channel, time to check the other ones!
7:29 a.m.
💜 2
Avatar
Tim 'mithro' Ansell 2025-12-06 8:29 a.m.
I need to take platform.wafer.space down for 30m - when it comes back up it should be able to run a lot more prechecks in parallel.
8:31 a.m.
I don't yet know when I'll do that.
Avatar
Egor Lukyanchenko 2025-12-06 9:19 a.m.
In case this info would be useful to someone: after all the latest antenna-related PRs were merged into PDK, our design containing several LibreLane generated macros passes KLayout antenna check just fine. I'm not seeing OpenROAD-KLayout antenna discrepancies any more.
SRAM and eFUSE testchip for wafer.space MPW runs using the gf180mcu PDK - ZeduloTech/gf180mcu-testchip2025
Avatar
@Leo Moser (mole99) Why are OFFGRID and ANGLE checked for PMNDMY ? Doesn't looks like it should really be a problem since that layer is not used for actual mask making.
Avatar
Avatar
tnt
@Leo Moser (mole99) Why are OFFGRID and ANGLE checked for PMNDMY ? Doesn't looks like it should really be a problem since that layer is not used for actual mask making.
Leo Moser (mole99) 2025-12-06 11:27 a.m.
As for why it is the way it currently is, you would have to ask Mabrains as they created the original rule deck :) What I found in the docs:
3.4 Consistent layout all designs on a 0.005μm grid will avoid off-grid and snapping issues during database fracturing.
The design grid must be an integer multiple of 0.005μm.
Given the wording of the second statement, and that DRC errors in the design can lead to a back and forth with GF, it is probably safer and simpler to assume that all shapes on all layers need to be on the 5nm grid. As for the angle checks, I would actually love to be able to draw arbitrary angles (except for acute and as long as all points are on-grid). However, given the wording in the docs I'm not sure about this.
SH.2: Avoid any COMP, poly and metal shapes with acute angles (angles <90 deg). Exceptions are only for pre-tested metal inductors with IND_MK mark layers and lettering (non circuit elements).
This would tell me that arbitrary angles (except acute) are allowed on these layers. However this is contradicted by: https://gf180mcu-pdk.readthedocs.io/en/latest/physical_verification/design_manual/drm_03.html
3.6 Only 90 deg and 45 deg bends are allowed for poly and metal lines.
I wouldn't even dare to guess what this means for other layers 🤷‍♂️
👍🏻 1
Avatar
Avatar
Tholin
Nope. Still getting antenna violations.
Meinhard Kissich 2025-12-06 4:36 p.m.
Were you able to resolve the antenna violations? I quit the checker run after 10h+ to make a small adaptions and start a new one; so I'm not too sure how many trials I have 😄
Avatar
Down to 5 violations on 2 nets
Avatar
Meinhard Kissich 2025-12-06 4:40 p.m.
Which settings did you adapt? DRT_ANTENNA_REPAIR_ITERS and DRT_ANTENNA_MARGIN or anything else?
Avatar
I had DRC errors
4:42 p.m.
The antenna violations I’m getting are not noticed by LibreLane
4:42 p.m.
So I’ve been playing with INSERT_ECO_DIODES
4:42 p.m.
Basically firing blindly hoping I hit something.
4:42 p.m.
It only needs to work twice
Avatar
Avatar
Jonathan
Switching to the development version of librelane might be worth a try to see if something changes. I had similar issues with antenna violations within the macros of our design. You could try to get the librelane dev version with nix shell github:librelane/librelane/dev and then run the synthesis flow with librelane librelane/config.yaml --pdk ${PDK} --pdk-root ${PDK_ROOT}. Set PDK_ROOT to some directory and then Librelane should download the PDK. At least for me this yielded better results that helped me debug the design (edited)
@Jonathan and I are using the same PDK (currently 1.4.1) for both. However, for building the macros we are using the dev branch of LibreLane and the "classic" flow. For the top-level build, we are using the LibreLane version from the nix-shell and the "chip" flow. From our POV this seems to work better for the macros in terms of timing and antenna violations. However, tbh, we do not really understand why. But there is nothing against this approach, right? 😅 (edited)
Avatar
As long as no DRC is violated, its at least manufacturable.
👍 1
Avatar
Meinhard Kissich 2025-12-06 5:08 p.m.
Ok, thanks. Let's see what it looks like when the next checker runs finishes 🙂
Avatar
I made it worse
5:28 p.m.
What’s going on here? Why is LibreLane not fixing these?
Avatar
Can you post updated gds and klayout xml report ?
Avatar
Avatar
tnt
Can you post updated gds and klayout xml report ?
6:25 p.m.
Haven’t looked at it myself yet, though
Avatar
Ok, I'll take a look at it, but will be later tonight. Some tips to help though would be to move pins of your modules to Met3/Met4 instead of Met2/Met3 so the pins acts as antenna straps. And also try to avoid routing on Met5.
Avatar
My guess is that it actually can’t see the port diodes inside the macros.
6:31 p.m.
I think I could test this by running antenna checks on a fully flattened GDSII
Avatar
It most definitely can see them. But diodes are also not magic. Some of those nets are huge and one diode might not be enough.
Avatar
But alright. I’ll find the configuration variable for changing the pin layers.
6:34 p.m.
Interesting that there is no antenna violations on lines going to my DACs, since those have no input diodes at all.
Avatar
@Tholin : Small revision to the DFF I made for your standard cell library: Because I put a via on top of the set pin (SN), OpenROAD will put other vias too close to it if it's not aware that there's a via blockage there. I generally have the LEF writer not add via blockages (I probably should rethink that), but in this case it's needed. I added it to the OBS list: LAYER Via1 RECT 13.645 1.690 13.905 1.950 ; which worked fine (no DRC errors generated during routing). Not sure if it makes more sense to put it under the SN pin PORT record. I think I can have magic output via records where vias are sitting inside a port boundary. Until then, these lines have to be added manually.
Avatar
Cannot find the configuration variable for IO port layers
Avatar
Avatar
Tim Edwards
@Tholin : Small revision to the DFF I made for your standard cell library: Because I put a via on top of the set pin (SN), OpenROAD will put other vias too close to it if it's not aware that there's a via blockage there. I generally have the LEF writer not add via blockages (I probably should rethink that), but in this case it's needed. I added it to the OBS list: LAYER Via1 RECT 13.645 1.690 13.905 1.950 ; which worked fine (no DRC errors generated during routing). Not sure if it makes more sense to put it under the SN pin PORT record. I think I can have magic output via records where vias are sitting inside a port boundary. Until then, these lines have to be added manually.
I could also make this one of the exceptions where I do export the LEF with -pinonly, which can increase routing congestion slightly, but would let you define an area where it is safe to place vias.
7:03 p.m.
I am currently speeding through caracterization at the ff corner, because that is where hold violations happen.
Avatar
@Tholin FP_IO_HLAYER / FP_IO_VLAYER
Avatar
@Tholin Do you have wires going to nowhere ?
9:24 p.m.
I'm looking at io_in[13] and it seems routed to several modules, but them go un-used in several of those ...
Avatar
Yeah, that could be
Avatar
That's causing issues because it ends it with very very long wires to move it around and then going to nowhere, not even a diode to compensate for all that wiring that got added.
Avatar
But just like TinyTapeout, my designs may have unused inputs.
Avatar
Then try at least putting a diode on those.
Avatar
See, I thought it would do this automatically with DIODE_ON_PORTS: both
Avatar
No, because it goes and adds protection diodes near every instance connected to that net ... no instances, no diodes.
9:48 p.m.
I'm not sure why OpenROAD doesn't see the violation though, unless something funk is going on with the LEF of the macros.
9:50 p.m.
Wait no, wtf : pmetal_factor: 0.54 agate: 0.396 ametal_eff: 3451.0752 pmetal: 6390.88 max_ratio_eff: 5324.8 ratio: 8714.83636364 diode_factors: (6000) adiodes: (0.8208) max_ratio: 400
9:52 p.m.
3451.0752 / 0.396 = 8714.83636364 which is what it reports. But it also sees the diodes 0.8208 which is correct for 2 antenna diodes cells connected on that segment. But then the ratio should be 3451.0752 / (0.396 + 15 * 0.8208) = 271.6 which is not an error.
Avatar
Ok, I think I understand.
10:15 p.m.
The check done by klayout doesn't match the PDK.
10:17 p.m.
The DRC rule says ratio = perim_area / (gate_area + MF * diode_area) < 400
10:18 p.m.
But what KLayout checks is : (perim_area / gate_area) < 400 + (400 * MF * diode_area)
10:18 p.m.
Those are not equivalent ...
10:20 p.m.
In the example above what KLayout does is compare the ratio it computed ( 8714.83636364 ) to the max_ratio + (diode_factors * adiodes) = 5324.8 and thus sees it as a violation. (edited)
10:21 p.m.
(cc @Leo Moser (mole99) )
10:22 p.m.
I hope my explanation makes sense 😅
10:27 p.m.
AFAICT from the KLayout doc for antenna_check, there is no way to implement the check as described in the DRM.
Avatar
So is the KLayout check more or less strict than required?
Avatar
@Tim 'mithro' Ansell , the precheck gave out a error_log file but does not contain which rules were violated. Is there a way to get the rdb file to see where the errors are?
Avatar
Avatar
asc
@Tim 'mithro' Ansell , the precheck gave out a error_log file but does not contain which rules were violated. Is there a way to get the rdb file to see where the errors are?
Tim 'mithro' Ansell 2025-12-06 11:21 p.m.
I'm working on that.
👍 1
Avatar
@Tim Edwards I have characterized my SCL at the ff corner and fixed the verilog models. Please update asap as ff is where hold violations like to happen.
👍 1
Avatar
Tim 'mithro' Ansell 2025-12-07 2:38 a.m.
I've updated the platform.wafer.space so it should be running up to 9 checks at once.
2:39 a.m.
I'm not sure it is quite stable, so I'll keep monitoring it.
Avatar
One-day chip: 3.3V SRAM break-out test chip!
blobclap 6
🔥 3
Avatar
Avatar
tnt
AFAICT from the KLayout doc for antenna_check, there is no way to implement the check as described in the DRM.
Egor Lukyanchenko 2025-12-07 4:46 a.m.
Oh, you're right... It might be possible to implement a workaround by extending shapes on diodes layer 15 times in area. It's definitely not a general solution, but should work correctly at least for the antenna cells from the 7t library.
Avatar
Avatar
Tim Edwards
One-day chip: 3.3V SRAM break-out test chip!
Tim 'mithro' Ansell 2025-12-07 6:53 a.m.
Looks great!
Avatar
@Egor Lukyanchenko I don't see how extending the shapes would change anything. I mean you could extend their area and then add them to the "gate" part of the antenna_check and not use the diode function at all ...
7:27 a.m.
@Tholin It's just different ... if the gate area is < 1 um^2 it'll be more strict and if gate area is > 1 um^2 then it's more lenient.
Avatar
Avatar
tnt
@Egor Lukyanchenko I don't see how extending the shapes would change anything. I mean you could extend their area and then add them to the "gate" part of the antenna_check and not use the diode function at all ...
Egor Lukyanchenko 2025-12-07 8:37 a.m.
That is what I've meant
Avatar
@Egor Lukyanchenko But how would you size diode by 15 ? AFAICT there isn't a relative ration .sized operator ... and then you might also end up merging shapes that shouldn't.
9:23 a.m.
The proper way needs to be implemented in KLayout. The related function seem pretty isolated so it's probably not a big job ( actually updating the doc might be half of it 😅 ), but the KLayout maintainer would have to pick the syntax he wants to specify that.
Avatar
The way the antenna computation is done in KLayout cannot implement the actual antenna check that the gf180mcu DRM specifies. In short for diodes/diffusion KLayout can add some value to the maximum...
9:33 a.m.
I'm not sure how applicable it will be for this tapeout because ... time to implement in klayout + time to get binaries in the nix + time to update PDK/template/precheck + time for people to update is probably non negligible and may not fit the timeline.
😮 1
Avatar
In the mean time, from the KLayout error file you can at least check if the reported errors are false positive. It's not however possible to know if there are false negatives.
Avatar
AFAICT magic implements exactly the same method as KLayout and thus can't properly check for antennas either :/ (cc @Tim Edwards ) (edited)
👀 1
Avatar
Leo Moser (mole99) 2025-12-07 10:31 a.m.
So, KLayout changes the ratio limit depending on the diode area, instead of increasing the gate area proportionally. Good catch, that is indeed a problem. In this case, it seems we really need to wait for a fix. Once a patch has been released, I can update the Nix setup in the template quite quickly. The main bottleneck is therefore whether Matthias has time to take a look at this, and the time that is needed for people to fix their designs afterwards.
Avatar
What about OR, does it calculate the antenna sizes correctly?
Avatar
It does the best it can. But AFAIK the LEF contains no information about the metal layers for connectivity of the declared gate/diff area so the check can't be 100%. (edited)
10:38 a.m.
Like pins have only a single line ANTENNAGATEAREA / ANTENNADIFFAREA which I don't see how that could be used to fully evaluate antenna without knowing what internal layers path.
Avatar
Avatar
tnt
@Egor Lukyanchenko But how would you size diode by 15 ? AFAICT there isn't a relative ration .sized operator ... and then you might also end up merging shapes that shouldn't.
Egor Lukyanchenko 2025-12-07 10:38 a.m.
@tnt You're right there seems to be nothing of the sort... So the only options for this tapeout would likely be either to ignore KLayout antenna violations in precheck, or to create a temporary KLayout fork which will perform antenna_check the way gf180mcu requires it.
😮 1
Avatar
Avatar
tnt
Like pins have only a single line ANTENNAGATEAREA / ANTENNADIFFAREA which I don't see how that could be used to fully evaluate antenna without knowing what internal layers path.
Egor Lukyanchenko 2025-12-07 10:41 a.m.
But it should work correctly for the flat design, right?
Avatar
For any internal node that doesn't connect to a macro it should be correct. But anything that connect to a macro where the only info is from a LEF could be a problem.
10:44 a.m.
Now this would include IO pads, but AFAICT the io pads have protection diodes and they did take care of having them connected through metal1/metal2 only so that should be fine.
10:46 a.m.
For Tiny Tapeout we also have no signal routing on Metal5 and have all the user signal pins on Metal4 so this will work too because pins then act as antenna strap. This was done on purpose exactly for that reason.
10:48 a.m.
diff --git a/src/db/db/dbLayoutToNetlist.cc b/src/db/db/dbLayoutToNetlist.cc index 043f1629c..041b51b06 100644 --- a/src/db/db/dbLayoutToNetlist.cc +++ b/src/db/db/dbLayoutToNetlist.cc @@ -1934,6 +1934,7 @@ db::Region LayoutToNetlist::antenna_check (const db::Region &gate, double gate_a } double r = ratio; + double da = 0.0; bool skip = false; adiodes_int.clear (); @@ -1953,7 +1954,7 @@ db::Region LayoutToNetlist::antenna_check (const db::Region &gate, double gate_a skip = true; } } else { - r += adiode_int * dbu * dbu * d->second; + da += adiode_int * dbu * dbu * d->second; } } @@ -1965,7 +1966,7 @@ db::Region LayoutToNetlist::antenna_check (const db::Region &gate, double gate_a compute_area_and_perimeter_of_net_shapes (*cid, *c, layer_of (gate), agate_int, pgate_int); - double agate = 0.0; + double agate = da; if (fabs (gate_area_factor) > 1e-6) { agate += agate_int * dbu * dbu * gate_area_factor; }
👌 1
👀 1
10:49 a.m.
(Although with the patch above, the DRC rule need to be changed, the number passed in the diode check needs to be the Mf, so 15 / 2 and not 6000 / 800 )
Avatar
Avatar
tnt
diff --git a/src/db/db/dbLayoutToNetlist.cc b/src/db/db/dbLayoutToNetlist.cc index 043f1629c..041b51b06 100644 --- a/src/db/db/dbLayoutToNetlist.cc +++ b/src/db/db/dbLayoutToNetlist.cc @@ -1934,6 +1934,7 @@ db::Region LayoutToNetlist::antenna_check (const db::Region &gate, double gate_a } double r = ratio; + double da = 0.0; bool skip = false; adiodes_int.clear (); @@ -1953,7 +1954,7 @@ db::Region LayoutToNetlist::antenna_check (const db::Region &gate, double gate_a skip = true; } } else { - r += adiode_int * dbu * dbu * d->second; + da += adiode_int * dbu * dbu * d->second; } } @@ -1965,7 +1966,7 @@ db::Region LayoutToNetlist::antenna_check (const db::Region &gate, double gate_a compute_area_and_perimeter_of_net_shapes (*cid, *c, layer_of (gate), agate_int, pgate_int); - double agate = 0.0; + double agate = da; if (fabs (gate_area_factor) > 1e-6) { agate += agate_int * dbu * dbu * gate_area_factor; }
Leo Moser (mole99) 2025-12-07 10:50 a.m.
I'll try to patch this through the Nix flake.
❤️ 1
Avatar
Avatar
tnt
For any internal node that doesn't connect to a macro it should be correct. But anything that connect to a macro where the only info is from a LEF could be a problem.
Egor Lukyanchenko 2025-12-07 10:54 a.m.
LibreLane docs recommend supplying netlists for macros if available. But as far as I can tell they are used only in OpenSTA steps. It's probably best to buffer macro pins on the both sides to avoid antenna problems.
👀 1
Avatar
Yeah, netlist wouldn't help for the physical layout, it would need to look at the DEF or GDS of the macro and I don't think it does that. I haven't dug a lot into the OR source code, but AFAIK it only looks at the LEF and that just doesn't have enough info to be correct all the time AFAIU.
Avatar
Egor Lukyanchenko 2025-12-07 11:20 a.m.
OR can only use LEF abstract + Liberty for macros and OpenSTA is able use Verilog netlists + SPEFs instead for more precise timing. But you're right, even if it would be possible to load netlists into OR, it wouldn't help antenna analysis anyway. So the only ways to reliably avoid antennas on wires going through the macro ports seem to be either to locate them on the top routing layer or to buffer them on both sides.
Avatar
Leo Moser (mole99) 2025-12-07 12:47 p.m.
👍 2
12:50 p.m.
@Tholin can you verify that this resolves the false positives?
Avatar
FWIW, I ran the chip_top that @Tholin posted yesterday through locally patched KLayout / PDK and it's not reporting any violations.
Avatar
Avatar
tnt
FWIW, I ran the chip_top that @Tholin posted yesterday through locally patched KLayout / PDK and it's not reporting any violations.
Leo Moser (mole99) 2025-12-07 2:03 p.m.
No violations at all? That's great! Well, hopefully we do get violations if they are above the limit 😄
2:03 p.m.
Could you perhaps post your patch in the KLayout issue as a quick starting point for Matthias?
Avatar
Yeah, knowing if there are actual violations or not is harder 😅 Although TBH, given the massive multiplier of 15, it'd be quite challenging to get a violation when any diode is involved. On 3v3 designs, that'd be more likely so maybe Tim will see some in his designs.
2:07 p.m.
How is the filler update doing ? It's the last expected fix right ?
Avatar
Leo Moser (mole99) 2025-12-07 2:12 p.m.
It's going well: https://github.com/wafer-space/gf180mcu/commits/filler-generation/ The last commit should fix all remaining DPF.1 violations. Then, we'll see if we can still meet the density limits for all designs...
2:17 p.m.
Another issue is that some designs take multiple hours for the KLayout antenna check. I think there's something going wrong. I checked the connectivity setup for potential shorts, but I don't see how this can happen for some designs but not for others.
Avatar
Avatar
Leo Moser (mole99)
No violations at all? That's great! Well, hopefully we do get violations if they are above the limit 😄
Egor Lukyanchenko 2025-12-07 2:18 p.m.
@Leo Moser (mole99) I'll experiment with disabling Antenna fixing stages in LibreLane for my design and see if I'll get matching antenna violations in KLayout.
👍 1
Avatar
Avatar
Leo Moser (mole99)
Another issue is that some designs take multiple hours for the KLayout antenna check. I think there's something going wrong. I checked the connectivity setup for potential shorts, but I don't see how this can happen for some designs but not for others.
I was wondering how long this might take - admittedly this is on my laptop but Executing rule ANT.16_i_ANT.2 has taken over an hour when all of the flow up to that point took ~20 mins
2:19 p.m.
(this is on a quarter slot design)
Avatar
Each step is progressively longer 😅
Avatar
Avatar
Leo Moser (mole99)
Another issue is that some designs take multiple hours for the KLayout antenna check. I think there's something going wrong. I checked the connectivity setup for potential shorts, but I don't see how this can happen for some designs but not for others.
Egor Lukyanchenko 2025-12-07 2:21 p.m.
Antenna runtime depends very much on the ammount of routing, especially on upper layers. So obviously high density designs will take several times longer to verify.
Avatar
Egor Lukyanchenko 2025-12-07 2:28 p.m.
My design takes ~4 hours to verify locally, this is why I was pursuing even relatively small antenna runtime optimizations I had in my PR.
Avatar
4h for just for the antenna or the whole precheck ?
Avatar
Egor Lukyanchenko 2025-12-07 2:41 p.m.
Just antenna. My old Xeon workstation is rather slow in single thread, but it still should take a couple of hours on fast machine I think. KLayout DRC takes another ~3 hours locally.
Avatar
2025-12-07 06:25:53 +0000: Memory Usage (4133788K) : Executing rule ANT.16_ii_ANT.4 so, that's about 8h30m elapsed time on one antenna rule so far :p
😅 1
Avatar
Avatar
Egor Lukyanchenko
Antenna runtime depends very much on the ammount of routing, especially on upper layers. So obviously high density designs will take several times longer to verify.
Leo Moser (mole99) 2025-12-07 2:57 p.m.
Yes, but it still feels too long. Extracting full connectivity in KLayout DRC for a complex design now takes ~15min. Of course, the actual antenna check goes on top. Still, I can't believe that querying the geometry and calculating the ratios has to take several hours (e.g. for the last antenna check). Last time I checked with Matthias regarding the connectivity in the DRC deck, it paid off :)
Avatar
Did you check on magic how long it takes ?
3:02 p.m.
"88 KLayout density errors found."
3:02 p.m.
😢
3:02 p.m.
(using new filler gen)
Avatar
Avatar
tnt
"88 KLayout density errors found."
Leo Moser (mole99) 2025-12-07 3:06 p.m.
Hm, why so many violations? Shouldn't it create a single marker for each violated layer? (It's a global density check, not stepped.)
3:08 p.m.
And can you show me the ratios for all layers? Should be in the logs.
Avatar
It's window density ...
3:08 p.m.
M2 layer only ... for basically every where in the chip 😅
3:09 p.m.
Avatar
Leo Moser (mole99) 2025-12-07 3:12 p.m.
Oh right, it's in tiled mode. However, the ratio should still be calculated across the whole chip, it's only the markers that are tiled.
3:12 p.m.
The problem is that there's Metal1 inside all standard cells. That means that almost no dummy Metal2 can be placed...
Avatar
Yeah, there is metal2 ... nowhere ...
Avatar
Avatar
Leo Moser (mole99)
The problem is that there's Metal1 inside all standard cells. That means that almost no dummy Metal2 can be placed...
Why not?
Avatar
GF has this rulel that you can't place dummy if there is real metal in adjacent layers ...
😫 1
Avatar
Avatar
tnt
Yeah, there is metal2 ... nowhere ...
Leo Moser (mole99) 2025-12-07 3:15 p.m.
Well, there should be some outside of the padring. Else it might be a bug?
Avatar
Yes, there is some outside the pad ring and between module but ... meeting 30% with that will be impossible ...
3:15 p.m.
Or maybe making it solid metal2 dummy rather than little squares ..
Avatar
Avatar
urish
Why not?
Leo Moser (mole99) 2025-12-07 3:15 p.m.
That's the DRC rule. If there is active metal above or below, you can't place any dummy. It's a stupid rule, that's why we initially decided to ignore it.
Avatar
Do we know why this rule exists? I can't make sense if it
Avatar
It's kind of annoying it doesn't report the actual density so we can now how far we are.
Avatar
Avatar
tnt
Or maybe making it solid metal2 dummy rather than little squares ..
Leo Moser (mole99) 2025-12-07 3:16 p.m.
No, there's another rule for that...
Avatar
@urish Probably to avoid affecting capacitance of nearby nets. (edited)
👍 1
Avatar
Avatar
tnt
It's kind of annoying it doesn't report the actual density so we can now how far we are.
Leo Moser (mole99) 2025-12-07 3:16 p.m.
It should be in the log.
Avatar
29.238749553369797
3:17 p.m.
😑
Avatar
Avatar
tnt
@urish Probably to avoid affecting capacitance of nearby nets. (edited)
But wouldn't the same issue arise with non fill metal as well?
Avatar
@urish Of course, but the idea is that if you run simulation without fill, adding the fill shouldn't change/affect the results.
Avatar
Do you need some metal 2 smiley macros to throw around in the tt-mux?
Avatar
@urish Maybe copy the logo to Metal2 layer 🙂
Avatar
With pleasure will copy to layer
Avatar
Leo Moser (mole99) 2025-12-07 3:19 p.m.
I can update the wafer.space logo as well.
Avatar
Running the fill in non-tiled mode might also help because there are gaps in the fill at the tile boundary
Avatar
Leo Moser (mole99) 2025-12-07 3:21 p.m.
Yes, there is. But there's currently no solution for that afaik. You will always have filler cells at the tile boundary and KLayout doesn't cut them, but instead remove them.
Avatar
But you can run it non-tiled right ?
Avatar
Leo Moser (mole99) 2025-12-07 3:22 p.m.
Yes.
Avatar
That will take longer of course but at this point I'll take anything that can help get some metal2.
Avatar
Leo Moser (mole99) 2025-12-07 3:23 p.m.
Well, yeah. But it's not only you. There will be other designs that won't meet density with an even larger margin.
Avatar
It only the area inside the seal ring considered ?
Avatar
Leo Moser (mole99) 2025-12-07 3:23 p.m.
No the whole chip as specified in the docs.
Avatar
I know, but running non-tiled will always lead to more fill, so it's pretty much always good. Sure, that'll only work if you're close but ...
3:25 p.m.
Could we make a fill / decap cell that has enough space between the met1 power rails to allow Metal2 filler ?
Avatar
Leo Moser (mole99) 2025-12-07 3:25 p.m.
Yeah, of course. Every little bit helps :)
3:26 p.m.
To be honest, that rule is really stupid and there's a solution to all of that: active dummy metal fill 😈
⚡ 1
Avatar
Egor Lukyanchenko 2025-12-07 3:27 p.m.
Is there anything in DRM forbidding performing fill using regular non-fill metal layer if it's impossible to reach density with dummy layer?
Avatar
Sure, I mean, you'd have to do that during fab submission ... copy the dummy layer to drawing layer and be done with it.
3:28 p.m.
Because for all the dev process and such you want them separate.
👌 1
Avatar
Avatar
Egor Lukyanchenko
Is there anything in DRM forbidding performing fill using regular non-fill metal layer if it's impossible to reach density with dummy layer?
Leo Moser (mole99) 2025-12-07 3:28 p.m.
No, not that I have seen.
3:30 p.m.
I might add an option to the filler script to ignore the previous/subsequent active metal rules. So for analog designs it's still possible to do the fill according to the DRC rules.
3:32 p.m.
Well, that sounds like a plan. Thanks for giving the script a try and for all the feedback!
Avatar
Too bad the standard cells don't have a marker layer, it'd have been nice to have a flag to just ignore met1 of stdcell ...
Avatar
Leo Moser (mole99) 2025-12-07 3:40 p.m.
Yes, but we would still get DRC violations when submitting to the foundry. Except if we added those shapes as active metal...
Avatar
Oh yeah, of course, it was just to make it easier to deal with mixed analog/digital stuff.
👍 1
Avatar
Ah, the klayout patch is no good ...
Avatar
Can standard fill cells be easily identified at the point the fill is run? If so maybe could always add “active” metal above them (if there’s nothing else there) (edited)
Avatar
Avatar
RebelMike
Can standard fill cells be easily identified at the point the fill is run? If so maybe could always add “active” metal above them (if there’s nothing else there) (edited)
Leo Moser (mole99) 2025-12-07 4:09 p.m.
Sylvain had the same idea just a few messages above 😁 Unfortunately, there's no easy way...
Avatar
I was wondering if limiting it to just fill cells, rather than all standard cells, might make it easier
4:11 p.m.
Eg is there any record of the cell name at that point, or could a marker be added just to those cells?
Avatar
Leo Moser (mole99) 2025-12-07 4:16 p.m.
I see what you mean. It would be possible, but not really straightforward. Since we need to add dummy metal as active metal anyways, at this point we can just convert all dummy I would say.
👍 1
Avatar
@Leo Moser (mole99) I updated the patch on the issue. Here's also a copy.
5:06 p.m.
5:07 p.m.
The previous one had a logic error because I added the diode area to gate area too early. First need to check if there is any gate area else you end up testing wires that are only connected to diodes ...
5:08 p.m.
It wasn't a huge deal on Tholin design because the MF multiplier is so big for 5V devices. But if you have any 3v3 devices, then the 3v3 rule are run and you get false positives.
Avatar
Avatar
tnt
@Leo Moser (mole99) I updated the patch on the issue. Here's also a copy.
Leo Moser (mole99) 2025-12-07 5:48 p.m.
Thanks Sylvain! I'll update the template branch shortly.
Avatar
@Tholin : Your latest update is breaking my LibreLane flow. . . You added references to PAD_CELL_LIBRARY in the librelane setup. If I add that to my local config.yaml file, it doesn't do anything useful. If I hack it in to your setup file for the standard cell library, then LibreLane just gives me an error "Unknown key 'PAD_CELL_LIBRARY' provided." (though I can't see why that should be considered an error). I'm not even doing anything with pads for this LibreLane run. . .
Avatar
Avatar
Tim Edwards
@Tholin : Your latest update is breaking my LibreLane flow. . . You added references to PAD_CELL_LIBRARY in the librelane setup. If I add that to my local config.yaml file, it doesn't do anything useful. If I hack it in to your setup file for the standard cell library, then LibreLane just gives me an error "Unknown key 'PAD_CELL_LIBRARY' provided." (though I can't see why that should be considered an error). I'm not even doing anything with pads for this LibreLane run. . .
I'm just copying lines from the fd_sc library's config. It also runs on my end with the wafer.space template's nix-shell.
Avatar
Avatar
tnt
FWIW, I ran the chip_top that @Tholin posted yesterday through locally patched KLayout / PDK and it's not reporting any violations.
Very good. I guess I just wait until that patch hits main, then?
Avatar
hurray, I timed out while doing antenna check >.<
Avatar
Tim 'mithro' Ansell 2025-12-08 1:27 a.m.
How are things going this morning?
Avatar
Just waiting for patches now so my antenna violations go away.
Avatar
Avatar
Tim 'mithro' Ansell
@SecurityBrahh - Just so you have the right expectations, any "bitcoin miner" accelerator on GF180MCU is not going to be competitive in any way against the current miner ASICs that are available (I doubt it would even beat a modern CPU). If you are doing it as an academic/learning exercise or for prototyping or otherwise, it could still make sense to do. Also doing a bitcoin miner isn't an easy task, I would not recommend it be your first ASIC or tapeout. You are not going to do a full miner with Tiny Tapeout (but you might be able to test some small parts of it with Tiny Tapeout). Start with something small and easy.
The antminer/bitmain stuff is probably 2nm TSMC type shit?
Avatar
Tim 'mithro' Ansell 2025-12-08 2:48 a.m.
@Leo Moser (mole99) - Could we just use fill to add extra capacitance on the power rails?
Avatar
Avatar
SecurityBrahh
The antminer/bitmain stuff is probably 2nm TSMC type shit?
Tim 'mithro' Ansell 2025-12-08 2:48 a.m.
Google's AI says: Bitmain's Antminer models use increasingly advanced semiconductor process nodes, moving from 7nm for older models like the S19 series to cutting-edge 5nm and even 3nm nodes for their latest, highly efficient machines like the S21 (5nm) and rumored S23 (3nm), leveraging foundries like TSMC for fabrication to achieve higher performance (hashrates) and lower power consumption (J/TH).
Avatar
Tim 'mithro' Ansell 2025-12-08 2:58 a.m.
| ID | Project | Docker | Max Mem GB | Runtime Hrs | Date | |---:|---------------------------------------------|--------|-----------:|------------:|------------| | 48 | BreakingTTAPs | 0f9e5 | 11.09 | 13.67 | 2025-12-07 | | 39 | FA25_Engn2912e_Saligane_Brown | 0f9e5 | 16.15 | 4.19 | 2025-12-06 | | 9 | FABulous FPGA | 739cb | 14.41 | 3.02 | 13 | FazyRV Hachure | 739cb | 14.12 | 7.39 | 2025-12-03 | | 32 | FOSSi open-source replacement for Z80 CPU | 0f9e5 | 14.82 | 4.28 | 2025-12-06 | | 50 | FOSSi open-source replacement for Z80 CPU | 0f9e5 | 13.06 | 5.79 | 2025-12-07 | | 28 | gf180mcu-jku-atbs-adc | 64e7f | 12.18 | 3.46 | 2025-12-05 | | 29 | gf180mcu-jku-projects | 64e7f | 15.65 | 10.90 | 2025-12-05 | | 45 | gf180mcu-project-trident-teststructure | 0f9e5 | 5.97 | 2.18 | 2025-12-07 | | 6 | ISHI-KAI's Multiple Users Project | 739cb | 16.38 | 5.03 | 2025-12-02 | | 41 | MOSbiusV3 | 0f9e5 | 7.66 | 2.61 | 2025-12-06 | | 51 | ocd_sram_test | 0f9e5 | 5.57 | 3.24 | 2025-12-07 | | 12 | Tiny Tapeout GF 0.2 | 739cb | 14.21 | 4.74 | 2025-12-03 | | 11 | Tiny Tapeout GF 0p2 - Power Gated Variant | 739cb | 14.38 | 4.56 | 2025-12-03 | | 19 | TinyQV - Crowdsourced Risc-V SoC | 64e7f | 6.11 | 4.85 | 2025-12-05 | | 18 | TinyQV - Crowdsourced Risc-V SoC (0.5x1) | 0f9e5 | 9.71 | 8.56 | 2025-12-07 | | 17 | TinyQV - Crowdsourced Risc-V SoC (1x0.5) | 0f9e5 | 13.11 | 7.92 | 2025-12-07 |
Avatar
@Egor Lukyanchenko How's the runtime of the evaluate_nets version vs the native antenna_check version ?
Avatar
Avatar
tnt
@Egor Lukyanchenko How's the runtime of the evaluate_nets version vs the native antenna_check version ?
Egor Lukyanchenko 2025-12-08 7:44 a.m.
For my test design it looks to be more or less the same.
Avatar
And does it also report the raw values ( perimeters / gate area / diode area and such as details in each violation ) ?
Avatar
Egor Lukyanchenko 2025-12-08 7:50 a.m.
For now version in the PR only marks the violating gates, no nets even. AFAIU all raw values could be made available in GDS properties, but I'm not sure how to output them to lyrdb. Do you suggest to save them always, or just to create some "debug mode"?
Avatar
I would always put them in the lyrdb, it's just useful to have when you have violation to know if you're way off and just slighly off and to know if a single diode is ok, or more extensive rework.
Avatar
Egor Lukyanchenko 2025-12-08 7:52 a.m.
Ok, I'll look into how to add them.
Avatar
I'd hope that using put to put properties on the output shapes would also result in them being in the lyrdb.
Avatar
Egor Lukyanchenko 2025-12-08 8:05 a.m.
Yes, this is what I'm going to check first.
Avatar
Egor Lukyanchenko 2025-12-08 8:15 a.m.
Seems to work, I'll update PR now. Currently I'm saving gate area, diodes area, antenna perimeter and resulting ratio, that's enough I guess? (edited)
👌 1
Avatar
I think so yes.
Avatar
Egor Lukyanchenko 2025-12-08 9:32 a.m.
I've done a couple of quick tests trying to find a way to mark whole violated net in lyrdb, not only a gate, but failed. So I've updated the PR only with raw parameters saving.
👌 1
Avatar
@Egor Lukyanchenko I think that's fine. I'm running the update check now to confirm I get the same results as previously.
👍 1
Avatar
My top level fails to route if I don’t let it use Metal5 for routing.
10:27 a.m.
And moving the IO layers of the macros to Metal3/Metal4 caused DRC errors.
10:28 a.m.
Running out of things to try for fixing the antenna violations.
Avatar
Ok, the fail to route, I could see that on dense designs. But moving pins shouldn't cause DRC errors ... (edited)
10:30 a.m.
But then again, the chip top you had posted last was actually clean from an Antenna PoV when using the fixed antenna check.
Avatar
All I changed was move the pins, and suddenly I’m getting Metal3 clearance violations.
Avatar
So you jus set FP_IO_VLAYER to 'Metal4' ?
Avatar
Avatar
Tholin
All I changed was move the pins, and suddenly I’m getting Metal3 clearance violations.
@Tholin density errors? I wonder if the obstruction layer in the lef file is causing that. Would adding fill manually in the macro solve the problem?
Avatar
No, clearance
👍 1
Avatar
Avatar
tnt
So you jus set FP_IO_VLAYER to 'Metal4' ?
And FP_IO_HLAYER to Metal3
Avatar
@Egor Lukyanchenko Yup works perfectly and matches the hacked up klayout version. Runtime is basically the same too.
👍 1
Avatar
Egor Lukyanchenko 2025-12-08 11:39 a.m.
You should probably close the KLayout issue :).
Avatar
I was just doing that right after posting the above 😁
Avatar
@Tholin Well it shouldn't happen, so it's definitely a bug, but I'd obviously need way more details to know what's going on 😅
Avatar
Unfortunately, I already deleted the files
11:56 a.m.
But I remember the DRC errors were in the power grid
11:57 a.m.
Two parallel, vertical straps on Metal4 were interrupted by a macro and generated Metal3 rects at the end, going to nowhere. And those were too close together.
11:57 a.m.
No idea what was going on there.
Avatar
Oh ... mm, yeah, the template pdn is quite custom, maybe there is some config there messing things up.
12:01 p.m.
But in any case, you should just retry with the new antenna check and see how things turn out now.
12:02 p.m.
(Either pull it in manually or wait for it to be merged)
Avatar
Seems like the last update of the pdk causes some false positive on space to wide rules on klayout
12:16 p.m.
Is it me misunderstanding the rules or an actual error of the pdk?
Avatar
Definitely looks like a false positive to me
Avatar
Avatar
tnt
Definitely looks like a false positive to me
Seems like "without_touching_edges" should be enabled at the separation check. I'll make a PR.
Avatar
Avatar
Tholin
Two parallel, vertical straps on Metal4 were interrupted by a macro and generated Metal3 rects at the end, going to nowhere. And those were too close together.
Leo Moser (mole99) 2025-12-08 1:46 p.m.
I think you're hitting this issue: https://github.com/The-OpenROAD-Project/OpenROAD/issues/8868 Unfortunately, I don't want to risk updating OpenROAD so close to the tapeout. However, there is a workaround that I used for the project template. You can set the PDN halo around the macros slightly smaller than the halo size for cutting the rows.
Describe the bug It seems that there is an issue with PDN generation on gf180mcu when a strap almost, but not quite, overlaps with the stdcell rail. This leads to DRC errors. Observation: Normally,...
Avatar
Avatar
Clyde Laforge
Seems like "without_touching_edges" should be enabled at the separation check. I'll make a PR.
Leo Moser (mole99) 2025-12-08 1:46 p.m.
Thanks a lot, Clyde. I'll take a look at the PR!
Avatar
I was bored and made a 5V dynamic DFF, though I don’t think I will tape anything out with it.
👀 1
😮 1
2:27 p.m.
It may be super unstable and I am out of space on my die anyways.
Avatar
Avatar
Tholin
I was bored and made a 5V dynamic DFF, though I don’t think I will tape anything out with it.
I've been trying to build a domino logic standard cell library, so this might be useful to study at least.
😮 1
Avatar
Avatar
Tim 'mithro' Ansell
| ID | Project | Docker | Max Mem GB | Runtime Hrs | Date | |---:|---------------------------------------------|--------|-----------:|------------:|------------| | 48 | BreakingTTAPs | 0f9e5 | 11.09 | 13.67 | 2025-12-07 | | 39 | FA25_Engn2912e_Saligane_Brown | 0f9e5 | 16.15 | 4.19 | 2025-12-06 | | 9 | FABulous FPGA | 739cb | 14.41 | 3.02 | 13 | FazyRV Hachure | 739cb | 14.12 | 7.39 | 2025-12-03 | | 32 | FOSSi open-source replacement for Z80 CPU | 0f9e5 | 14.82 | 4.28 | 2025-12-06 | | 50 | FOSSi open-source replacement for Z80 CPU | 0f9e5 | 13.06 | 5.79 | 2025-12-07 | | 28 | gf180mcu-jku-atbs-adc | 64e7f | 12.18 | 3.46 | 2025-12-05 | | 29 | gf180mcu-jku-projects | 64e7f | 15.65 | 10.90 | 2025-12-05 | | 45 | gf180mcu-project-trident-teststructure | 0f9e5 | 5.97 | 2.18 | 2025-12-07 | | 6 | ISHI-KAI's Multiple Users Project | 739cb | 16.38 | 5.03 | 2025-12-02 | | 41 | MOSbiusV3 | 0f9e5 | 7.66 | 2.61 | 2025-12-06 | | 51 | ocd_sram_test | 0f9e5 | 5.57 | 3.24 | 2025-12-07 | | 12 | Tiny Tapeout GF 0.2 | 739cb | 14.21 | 4.74 | 2025-12-03 | | 11 | Tiny Tapeout GF 0p2 - Power Gated Variant | 739cb | 14.38 | 4.56 | 2025-12-03 | | 19 | TinyQV - Crowdsourced Risc-V SoC | 64e7f | 6.11 | 4.85 | 2025-12-05 | | 18 | TinyQV - Crowdsourced Risc-V SoC (0.5x1) | 0f9e5 | 9.71 | 8.56 | 2025-12-07 | | 17 | TinyQV - Crowdsourced Risc-V SoC (1x0.5) | 0f9e5 | 13.11 | 7.92 | 2025-12-07 |
13hrs for mine, ouch. what hardware is this running on? took ~4hrs on Ryzen 9950 here, wonder if it got stuck or something on the wafer.space platform. I had one error out that I canceled and restarted too
Avatar
@Tholin : If you're bored then I've got a long list of things you can be doing. . .
Avatar
Are there still problems with my SCL?
9:56 p.m.
I know there is some config issues
9:57 p.m.
I referenced the fd_sc configs from the wafer.space PDK branch, which might’ve been a mistake.
9:57 p.m.
Definitely caused us some confusion.
Avatar
I somehow managed to get an antenna-clean chip_top build with the broken antenna checker lol
12:02 a.m.
I optimized the macro pin orders to get more optimized top-level routing.
12:02 a.m.
I guess that helped
12:02 a.m.
But 48 magic DRC errors.
12:03 a.m.
Metal3 spacing
12:04 a.m.
I will try mole99’s trick
Avatar
Well, it looks like I’m all good to go
1:08 a.m.
I’m not going to change anything on my layout anymore
Avatar
Avatar
Tholin
I was bored and made a 5V dynamic DFF, though I don’t think I will tape anything out with it.
Tim 'mithro' Ansell 2025-12-09 1:42 a.m.
I guess I don't understand what the dynamic means verse async verse "normal"
Avatar
Avatar
BreakingTaps
13hrs for mine, ouch. what hardware is this running on? took ~4hrs on Ryzen 9950 here, wonder if it got stuck or something on the wafer.space platform. I had one error out that I canceled and restarted too
Tim 'mithro' Ansell 2025-12-09 1:44 a.m.
The machine is running 9 other prechecks at the same time. It's also an older machine because I'm cheap.
Avatar
Avatar
Tim 'mithro' Ansell
The machine is running 9 other prechecks at the same time. It's also an older machine because I'm cheap.
ah ok, makes sense. apologies for eating a slot so long!
Avatar
Avatar
BreakingTaps
ah ok, makes sense. apologies for eating a slot so long!
Tim 'mithro' Ansell 2025-12-09 2:13 a.m.
No apologies needed! You are actually paying for one, not like all these other free loaders 😉
😁 1
2:18 a.m.
@Leo Moser (mole99) - Which are the exactly weird / strange fill rule DRCs about active avoidance?
Avatar
Avatar
Tim 'mithro' Ansell
@Leo Moser (mole99) - Which are the exactly weird / strange fill rule DRCs about active avoidance?
Tim 'mithro' Ansell 2025-12-09 2:25 a.m.
I assume @Leo Moser (mole99) is probably asleep at this moment. Anyone else recall / remember which ones they were?
Avatar
Tim 'mithro' Ansell 2025-12-09 2:36 a.m.
I got the AI to update it's recommendation around "cloud machines" for EDA development with @BreakingTaps addition -> https://claude.ai/public/artifacts/44717da0-d032-4bb2-9763-87dcfbb66a8a (edited)
Compare 25+ dedicated servers optimized for single-threaded EDA workloads like KLayout/Magic DRC. Find the best price/performance under $100/month.
Avatar
Avatar
Tim 'mithro' Ansell
I assume @Leo Moser (mole99) is probably asleep at this moment. Anyone else recall / remember which ones they were?
Tim 'mithro' Ansell 2025-12-09 2:41 a.m.
Avatar
Avatar
Tim 'mithro' Ansell
I assume @Leo Moser (mole99) is probably asleep at this moment. Anyone else recall / remember which ones they were?
Egor Lukyanchenko 2025-12-09 3:44 a.m.
Avatar
Tim 'mithro' Ansell 2025-12-09 3:45 a.m.
And the general problem is meeting metal density rules while avoiding fill above/below active metal?
Avatar
Egor Lukyanchenko 2025-12-09 3:53 a.m.
As far as I get it yes. The main problem is Metal2 in digital designs, cause there always is Metal1 in std cells, even in fillers, at least in rails.
Avatar
Tim 'mithro' Ansell 2025-12-09 5:05 a.m.
Avatar
Avatar
Tim 'mithro' Ansell
@Leo Moser (mole99) - Which are the exactly weird / strange fill rule DRCs about active avoidance?
Leo Moser (mole99) 2025-12-09 7:22 a.m.
DPF.12, DPF.13, DM.4_DM.6 and DM.5_DM.7. However, DM.5_DM.7 causes the most issues due the Metal1 in all standard cells.
Avatar
Avatar
Leo Moser (mole99)
DPF.12, DPF.13, DM.4_DM.6 and DM.5_DM.7. However, DM.5_DM.7 causes the most issues due the Metal1 in all standard cells.
Tim 'mithro' Ansell 2025-12-09 7:24 a.m.
Morning! Okay - I sent them an email asking what form they would like questions about these DRC rules.
Avatar
I'd be curious to check the data from GFMPW0/1 and if the fill was compliant with those rules 😅
Avatar
IIRC the filled ones were never published
Avatar
Avatar
tnt
I'd be curious to check the data from GFMPW0/1 and if the fill was compliant with those rules 😅
Egor Lukyanchenko 2025-12-09 8:20 a.m.
I doubt it :). Also there were definitely a lot of antenna errors, at least in my design for sure :).
😁 1
Avatar
Still DRC errors
Avatar
@Tim Edwards Could you please give me a comprehensive list of issues and shortcomings you still see with my SCL? Depending on how long that list is, I can’t promise I’ll get to all of it, but I can try.
Avatar
@Tholin : Honestly, the standard cell library is great. As far as I know, my only issue with it right now is that you were using variable PAD_CELL_LIBRARY in your librelane setup file, which is apparently incompatible with the dev version of librelane. I was able to work around it by deleting those lines from the setup file (I'm not including pad cells in my synthesis anyway, for now), but it needs some future-proof fix. Apart from that, I assume I could get a better synthesis if I had additional cells like a half-adder, full-adder, 4-input basic logic gates, and more variations of OAI cells. And a slow corner liberty file would be good. But the library is usable as-is.
Avatar
Never said I was done adding cells. I think I added the last of the AOI cells recently.
2:48 p.m.
I’m taking a RISC-approach. I ran synthesis on a big RISC-V core with sky130_fd_sc_hd back when I was doing my sky130 SCL and looked only at cells that got used more than 100 times.
Avatar
Avatar
Tim Edwards
@Tholin : Honestly, the standard cell library is great. As far as I know, my only issue with it right now is that you were using variable PAD_CELL_LIBRARY in your librelane setup file, which is apparently incompatible with the dev version of librelane. I was able to work around it by deleting those lines from the setup file (I'm not including pad cells in my synthesis anyway, for now), but it needs some future-proof fix. Apart from that, I assume I could get a better synthesis if I had additional cells like a half-adder, full-adder, 4-input basic logic gates, and more variations of OAI cells. And a slow corner liberty file would be good. But the library is usable as-is.
I assume I could get a better synthesis if I had additional cells like a half-adder, full-adder
probably not. these cells are not inferable because they have multiple outputs.
2:49 p.m.
A vlsiffra backend for my SCL is the only thing that those would be good for.
Avatar
and honestly, if you're gonna design custom cells to accelerate arithmetic, something targeted towards a more efficient parallel-prefix adder would be best, I think
Avatar
But a full-adder is actually just one maj3 and one xor3 cell jammed together. So if I add xor3, that’d also work.
Avatar
@Lofty : I was assuming that full adders and half adders would come with mapping files for yosys.
Avatar
Avatar
Tim Edwards
@Lofty : I was assuming that full adders and half adders would come with mapping files for yosys.
I would advise against such an approach
Avatar
I’ve never seen yosys synthesize adder cells
Avatar
the default structure for an adder in Yosys is Brent-Kung
Avatar
Okay, if I add xor3 and oai33, I can add my SCL as a technology backend to vlsiffra.
2:54 p.m.
I am actually almost there.
Avatar
might be interesting to think about a csa42, but
Avatar
I don’t know what csa42 is
Avatar
4:2 compressor for a carry-save adder
2:55 p.m.
full adders are 3:2 compressors, as such
Avatar
The main things I saw that were missing were DFFEs and flops with sync set/clear (the latter being useful for absorbing an OR or ANDN on non-reset datapath flops) (edited)
2:57 p.m.
Also ICGs, but I don't think many people are using clock gates, partly because our CTS doesn't balance through them very well
Avatar
Wow, I looked up how fd_sc did its xor3 because I thought "there has to be a more elegant solution than concatenating two xor2 cells" but nope. Its just two xor2 cells slapped together.
Avatar
@Lofty : I do analog stuff mostly. I'm generally happy with whatever yosys synthesizes, because I'm not doing for ultra high performance digital.
Avatar
well, unfortunately, it is my job to improve "whatever yosys synthesises" ^^;
Avatar
@Tholin : Don't look for inspiration from the foundry libraries, or you'll be disappointed.
Avatar
But I’m looking at the boolean logic and I don’t see a better way with less transistors either.
3:00 p.m.
XOR is just weird
3:00 p.m.
It eats into your transistor count no matter what you do
Avatar
@Lofty : Understood. I was just explaining why elegant adder solutions are not on my priorities list. : )
Avatar
Avatar
Tholin
XOR is just weird
(I find it interesting that in domino logic structures a xor2 is isomorphic to a mux2)
Avatar
My todo list is quite small now. It turns out that aoi cells already cover most of what yosys needs for efficient outputs. I just need oai21 and oai22 and I’m done.
3:08 p.m.
And oa33 if I want to add that vlsiffra backend.
Avatar
Avatar
Tholin
A vlsiffra backend for my SCL is the only thing that those would be good for.
Tim 'mithro' Ansell 2025-12-09 3:49 p.m.
I was working on vlsiffra for gf180mcu and other technologies at the time I left Google
3:50 p.m.
Create fast and efficient standard cell based adders, multipliers and multiply-adders. - Branches · mithro/vlsiffra
Avatar
I used vlsiffra during my tapeout here
Avatar
Avatar
Tholin
I’ve never seen yosys synthesize adder cells
ReJ aka Renaldas Zioma 2025-12-09 4:56 p.m.
You have to tell it to use them: SYNTH_ADDER_TYPE: FA
Avatar
silly newbie question: so yosys has a collection of default strategies/cells to synthesize math and logic, but you can swap in other cells (potentially higher performance but more area, other tradeoffs, etc) and yosys will instead generate with those? Is there a way to tell it which parts of the design to use which cells? Or would you have to generate/harden individual blocks and use those in a larger design to guarantee what cells are used?
Avatar
Avatar
BreakingTaps
silly newbie question: so yosys has a collection of default strategies/cells to synthesize math and logic, but you can swap in other cells (potentially higher performance but more area, other tradeoffs, etc) and yosys will instead generate with those? Is there a way to tell it which parts of the design to use which cells? Or would you have to generate/harden individual blocks and use those in a larger design to guarantee what cells are used?
okay, here's some rough yosys internals. Yosys represents your netlist as a bunch of relatively high-level cells; e.g. an adder is a $add cell. synthesis is the job of taking these high-level concept cells and lowering them into concrete implementations. one way you can do that is with the techmap command, which takes in a "mapping" Verilog file, and replaces a cell with the contents of that mapping for the cell. the "different strategies" generally amount to passing a techmap file to map the cell however you want it before the default mapping is applied
❤️ 1
5:45 p.m.
and yes, you can ask techmap to apply only on certain parts of the design. but this is, admittedly, somewhat fragile, and librelane doesn't really expose this
Avatar
gotcha, thanks for the details!
5:46 p.m.
i see that things are / can be much more complicated than just hitting the "build" button and accepting whatever is spit out 🙂
Avatar
if they aren't, users will complain :p
😁 1
Avatar
at a higher workflow level, I assume larger projects like to prebuild and harden smaller units to make the project easier to manage (and optimize)? Instead of letting ALU, LSU, etc all regenerate each time, it'd probably make sense to bake those into small IP blocks and just drop them into the final design?
Avatar
Avatar
BreakingTaps
at a higher workflow level, I assume larger projects like to prebuild and harden smaller units to make the project easier to manage (and optimize)? Instead of letting ALU, LSU, etc all regenerate each time, it'd probably make sense to bake those into small IP blocks and just drop them into the final design?
It depends. in a lot of ways this can actually result in a worse end product than if you throw the whole thing at it
Avatar
yeah fair, easier to manage but harder to actually optimize since each block is independent
Avatar
a lot of optimisations become impossible because of the opaqueness of other blocks
5:55 p.m.
and, well, Yosys does relatively okay, runtime/scalability-wise
5:56 p.m.
e.g. my 112k gate design takes 7 minutes to synthesise, which I think is okay.
5:57 p.m.
Most people do not have designs that big, I think
Avatar
it's all the downstream steps that end up slow though right? all the routing/timing stuff (i.e. on my machine it's like an hour or two)? I assumed that would get baked into each block and speed up the final build process
Avatar
It's not like that stuff goes away even when you bake things into macros.
Avatar
ah, nevermind then 🙂 I really need to dig into how these tools work more so I have a better intuition about what's going on
5:59 p.m.
big ol' blackbox for me right now. feed verilog, get chip 😂
Avatar
It's a dangerous path to go down :p
🙈 1
6:01 p.m.
smiles One day your life may be an iceberg with &mfs, aiger vs xaiger flops and nldm vs ccs at the bottom
6:01 p.m.
:3
Avatar
I will enjoy my ignorance of those commands while I can 😄
Avatar
I did a bit of work in this with different adder topologies: https://www.zerotoasiccourse.com/post/instrumenting-hardware-adders/
Following my interview with Teo on optimising hardware adders, I thought it would be a great project to tapeout on MPW6. I wrote about the process on twitter: I'm working on putting @td_ene 's adder work onto MPW6. Work in progress repo here: https://t.co/OBg8jQG1HJ It was very easy to generate the adders, but I'm getting stuck on instrumenting ...
👀 1
7:16 p.m.
I should get round to publishing the results
7:18 p.m.
7:18 p.m.
Interesting takeaway is that ripple adders are the fastest if you only need 8 bits
7:19 p.m.
Behavioural is yosys default
Avatar
Avatar
Matt Venn
Click to see attachment 🖼️
I'd love to see the area tradeoff for each!
Avatar
Tim 'mithro' Ansell 2025-12-09 11:06 p.m.
Before NVIDIA stole Teo, he was working on a whole bunch of adder analysis stuff
Avatar
yeah, I remember talking to him about his adder tree stuff
Avatar
Tim 'mithro' Ansell 2025-12-10 4:15 a.m.
I believe I have the changes which mean I can use multiple machines to run precheck commands (and also update the server code without killing currently running prechecks). I have picked up a couple of EX63 hetzner servers with Intel Core Ultra 7 265 Arrow Lake and 192GB memory to run the prechecks. AI says they are 4,663 single threaded performance compared to the current 1,200 single threaded performance. I'm just working on testing everything with test-platform.wafer.space before deploying it to the production platform.wafer.space
Avatar
Tim 'mithro' Ansell 2025-12-10 4:24 a.m.
I'll have an update about the deadline in the #announcements and to the mailing list shortly.
💜 1
Avatar
I apparently can’t have both no antenna violations and no Metal3 clearance violations from that bug.
12:07 p.m.
And there is only 48 of the clearance violations.
12:07 p.m.
So imma just go in with klayout -e and remove them by hand.
Avatar
Tim 'mithro' Ansell 2025-12-10 12:28 p.m.
👍 1
Avatar
Avatar
Tholin
But I’m looking at the boolean logic and I don’t see a better way with less transistors either.
There is this cursed thing. The PMOS sources are floating but I think that would still be manufacturable on P-substrate? 🤔 from: https://pubs.aip.org/aip/acp/article-pdf/1324/1/346/11503305/346_1_online.pdf
3:02 p.m.
There are also GDI gates but I don't think you can do those on GF180MCU
Avatar
I tried building alternative XOR layouts before, but they’re all super slow and have terrible logic high and/or logic low output levels.
👍 1
3:04 p.m.
You can do two transistor pair XOR if you want it to have nanosecond long transition times and 1V logic low, 4V logic high on the output.
Avatar
Yeah I figured it would need extra buffering but that the ratio might tip in its favour for larger XOR cells
3:10 p.m.
Guess it is on me to go prove that 😅
Avatar
@Tholin : The verilog for the set-reset flop got kind of scrambled. It should be: module gf180mcu_as_sc_mcu7t3v3__dfsrtp_2( input VPW, input VNW, input VDD, input VSS, input CLK, input D, input RN, input SN, output Q ); reg state; wire sr; assign sr = ~(RN & SN); assign Q = state; always @(posedge CLK or posedge sr) begin if (sr == 1'b1) begin if (RN == 1'b0) begin state <= 1'b0; end else if (SN == 1'b0) begin state <= 1'b1; end end else begin state <= D; end end endmodule
Avatar
Avatar
Tim Edwards
@Tholin : The verilog for the set-reset flop got kind of scrambled. It should be: module gf180mcu_as_sc_mcu7t3v3__dfsrtp_2( input VPW, input VNW, input VDD, input VSS, input CLK, input D, input RN, input SN, output Q ); reg state; wire sr; assign sr = ~(RN & SN); assign Q = state; always @(posedge CLK or posedge sr) begin if (sr == 1'b1) begin if (RN == 1'b0) begin state <= 1'b0; end else if (SN == 1'b0) begin state <= 1'b1; end end else begin state <= D; end end endmodule
this simulation model is not IEEE 1364.1 compliant, as far as I can tell
9:32 p.m.
module gf180mcu_as_sc_mcu7t3v3__dfsrtp_2( input VPW, input VNW, input VDD, input VSS, input CLK, input D, input RN, input SN, output Q ); reg state; assign Q = state; always @(posedge CLK or negedge RN or negedge SN) begin if (RN == 1'b0) begin state <= 1'b0; end else if (SN == 1'b0) begin state <= 1'b1; end else begin state <= D; end end endmodule
Avatar
@Lofty : That one was my quick one-minute don't-think-about-it solution to getting some simulations to run. Ultimately, the code has to deal somehow with the fact that RN and SN both going low at the same time is an invalid state. Usually that's done with truth tables, not behavioral code. At any rate, what got into the repo yesterday was not just non-compliant, it was just wrong.
Avatar
Tim 'mithro' Ansell 2025-12-11 12:30 a.m.
Morning -- I'm finishing up the plan to do the upgrade of platform.wafer.space today which will bring the fast precheck workers online.
12:30 a.m.
I haven't had a chance to look over all my email or discord messages yet. If there is something that should get my attention - please @ me.
Avatar
@Tim 'mithro' Ansell What's the earliest we can submit a design for tapeout? Is it going to be next april?
Avatar
Avatar
chvsnaveen12
@Tim 'mithro' Ansell What's the earliest we can submit a design for tapeout? Is it going to be next april?
Tim 'mithro' Ansell 2025-12-11 9:00 a.m.
I assume you mean for the next tapeout?
Avatar
I meant the next tapeout, but being curious would it be possible to submit for this one? (edited)
Avatar
Tim 'mithro' Ansell 2025-12-11 9:15 a.m.
Do you want a free slot or are you willing to pay for it?
Avatar
Tim 'mithro' Ansell 2025-12-11 9:28 a.m.
@chvsnaveen12: You can create a design on platform.wafer.space right now and see if it passes the precheck runs. When we finish doing shuttle slot assignments there might be empty space that something which is manufacturable on the platform would end up getting put into. Paying obviously gets you ahead of the queue when slot assignments happen. At the moment there /may/ be some 1×0.5 (Half Height) slots that we end up looking for things to put in. There is also the chance that some people don't end up delivering manufacturable stuff which means we have more open slots which need to be filled.
Avatar
Avatar
Tim 'mithro' Ansell
Do you want a free slot or are you willing to pay for it?
Alright, could you let me know both of the options? If there is a free slot available and if I have to pay for a full/half slot how much would that be?
Avatar
Tim 'mithro' Ansell 2025-12-11 9:37 a.m.
@chvsnaveen12 - Currently payment is $7k / $8.5k USD for a slot and kind of needs to have been done yesterday. CrowdSupply might be willing to make that happen for you. There is currently no way to "pay" for a half slot. Basically you need to have something on the platform.wafer.space site which is manufacturable at the time of assignment. (edited)
Avatar
Oh alright. Thanks for the info. Given the scenario, We'll try to put our design on the platform right now for half a slot. Probably for the next shuttle we'll purchase a full slot.
Avatar
Tim 'mithro' Ansell 2025-12-11 9:42 a.m.
@chvsnaveen12 - That is great to hear!
9:42 a.m.
With the number of people saying they are looking to purchase slots on the second shuttle, I'm starting to wonder if we might actually sell out.....
👏 1
Avatar
Hey, seems like the pdk's run_drc.py` (klayout) does not run dummy checks for DRC. I don't quite understand how precheck runs the klayout drc. Could this be a problem?
Avatar
Do you do freepdk-45 or sky90?
Avatar
Avatar
Tim 'mithro' Ansell
@chvsnaveen12: You can create a design on platform.wafer.space right now and see if it passes the precheck runs. When we finish doing shuttle slot assignments there might be empty space that something which is manufacturable on the platform would end up getting put into. Paying obviously gets you ahead of the queue when slot assignments happen. At the moment there /may/ be some 1×0.5 (Half Height) slots that we end up looking for things to put in. There is also the chance that some people don't end up delivering manufacturable stuff which means we have more open slots which need to be filled.
Let's hypothetically say that you guys choose to manufacture the design, how much would I need to pay for the bonded dies to PCBs?
Avatar
Avatar
Clyde Laforge
Hey, seems like the pdk's run_drc.py` (klayout) does not run dummy checks for DRC. I don't quite understand how precheck runs the klayout drc. Could this be a problem?
Leo Moser (mole99) 2025-12-11 9:48 a.m.
The precheck runs DRC through LibreLane, including dummy checks, so that is not a problem. However, we should update the run_drc.py in this case.
Avatar
Avatar
Leo Moser (mole99)
The precheck runs DRC through LibreLane, including dummy checks, so that is not a problem. However, we should update the run_drc.py in this case.
Good! II guess we could integrate the dummy checks in the feol checks rather than keep this switch
Avatar
Avatar
chvsnaveen12
Let's hypothetically say that you guys choose to manufacture the design, how much would I need to pay for the bonded dies to PCBs?
Tim 'mithro' Ansell 2025-12-11 9:55 a.m.
I haven't quite figured out what I'm doing regarding COB stuff for the free slots yet....
Avatar
Avatar
Clyde Laforge
Good! II guess we could integrate the dummy checks in the feol checks rather than keep this switch
Leo Moser (mole99) 2025-12-11 10:00 a.m.
Yes, that was done in this PR: https://github.com/wafer-space/gf180mcu/pull/1 But we can move it to any other.
Avatar
Avatar
Tim 'mithro' Ansell
I haven't quite figured out what I'm doing regarding COB stuff for the free slots yet....
Alright, if there's any update do let me know. We'll be willing to pay for the packaging and other charges if it proceeds to manufacturing.
Avatar
Avatar
Tim 'mithro' Ansell
I haven't quite figured out what I'm doing regarding COB stuff for the free slots yet....
Tim 'mithro' Ansell 2025-12-11 10:16 a.m.
I'm currently planning on the idea that people who have done designs that we have manufactured for free end up with something useful for them without having to pay. The exact details are still unknown and depends on lots of different things and unclear if it is even worth the hassle for there to be options to pay something to get more and such.
10:16 a.m.
First step is to get the stuff to GF for manufacturing 🙂
Avatar
Avatar
SecurityBrahh
Do you do freepdk-45 or sky90?
FreePDK45 is explicitly not manufacturable, and sky90 doesn't exist.
Avatar
Tim 'mithro' Ansell 2025-12-11 3:39 p.m.
Is somewhere here "meiniki" working on FazyRV ?
Avatar
that's @Meinhard Kissich
Avatar
Avatar
Tim 'mithro' Ansell
Is somewhere here "meiniki" working on FazyRV ?
Leo Moser (mole99) 2025-12-11 3:53 p.m.
He's listed in the spreadsheet
Avatar
Tim 'mithro' Ansell 2025-12-11 3:55 p.m.
@Meinhard Kissich - FYI - I cancelled the check you started on test-platform.wafer.space
Avatar
Avatar
Tim 'mithro' Ansell
@Meinhard Kissich - FYI - I cancelled the check you started on test-platform.wafer.space
Meinhard Kissich 2025-12-11 4:15 p.m.
I had remembered to upload to both instances, but that information is likely outdated. Thanks for pointing out 🙂 (edited)
Avatar
Tim 'mithro' Ansell 2025-12-11 4:22 p.m.
You got a sneak preview of the updates I'm trying to deploy to platform.wafer.space 🙂
🚀 1
Avatar
I had a check that was a minute away from completing flop
Avatar
Avatar
Lofty
yeah, I remember talking to him about his adder tree stuff
ReJ aka Renaldas Zioma 2025-12-11 5:23 p.m.
I have related question - I am looking for the smallest possible area population count circuits (populations are 128 bits and higher).
5:24 p.m.
So far I found that adder tree made out FA cells gives me the best result.
5:24 p.m.
It ends up being approximately 1 FA cell per 1 input bit.
Avatar
Avatar
ReJ aka Renaldas Zioma
I have related question - I am looking for the smallest possible area population count circuits (populations are 128 bits and higher).
oh, popcount is fun. I assume you want a combinational approach :p
Avatar
Nevermind. I reloaded the page and
🎉 5
🥳 4
5:25 p.m.
First time in weeks. I can finally rest now.
Avatar
Avatar
Lofty
oh, popcount is fun. I assume you want a combinational approach :p
ReJ aka Renaldas Zioma 2025-12-11 5:25 p.m.
Yes, purely combinational.
5:26 p.m.
Speed is comparatively not important for me.
5:26 p.m.
Minimizing the area is the main goal. (edited)
Avatar
Avatar
ReJ aka Renaldas Zioma
So far I found that adder tree made out FA cells gives me the best result.
do you remember me talking about compressors?
Avatar
ReJ aka Renaldas Zioma 2025-12-11 5:28 p.m.
4:2 one?
Avatar
yes, but a full adder is itself a 3:2 compressor
Avatar
ReJ aka Renaldas Zioma 2025-12-11 5:29 p.m.
Or did I ask you about popcount already? 🙂 (edited)
Avatar
no, you didn't :p
Avatar
ReJ aka Renaldas Zioma 2025-12-11 5:30 p.m.
FA = 3:2 compressor, I understand that part.
Avatar
a FA feeding into a FA is one way to implement a 4:2 compressor
5:31 p.m.
I feel like an adder tree probably is the most optimal way to implement this, but I'll have a think
Avatar
ReJ aka Renaldas Zioma 2025-12-11 5:32 p.m.
Right now I am building a wide FA array that feeds into another smaller FA array... and on like that
Avatar
I assume you're adding triplets of bits for the first layer with FAs?
👍 1
Avatar
Avatar
Lofty
I assume you're adding triplets of bits for the first layer with FAs?
ReJ aka Renaldas Zioma 2025-12-11 5:34 p.m.
Yes
Avatar
(would be nice if we could use 4:2 compressors here)
Avatar
ReJ aka Renaldas Zioma 2025-12-11 5:38 p.m.
I use patterns like that which build from smaller components hierarchically: module PopCount128 ( input [127:0] data, output [7:0] count // 8 bits to hold from 0 to 128 (inclusive) ); wire [43:0] bit0_stage1; wire [15:0] bit0_stage2; wire [ 5:0] bit0_stage3; wire [ 1:0] bit0_stage4; wire [41:0] bit1_stage1; wire [13:0] bit1_stage2; wire [ 4:0] bit1_stage3; wire [ 1:0] bit1_stage4; wire bit1_stage5; Add128 ad0(.data(data), .sum(bit0_stage1), .carry(bit1_stage1)); // 42 Add44 add1(.data(bit0_stage1), .sum(bit0_stage2), .carry(bit1_stage2)); // 14 Add16 add3(.data(bit0_stage2), .sum(bit0_stage3), .carry(bit1_stage3)); // 5 Add6 add4(.data(bit0_stage3), .sum(bit0_stage4), .carry(bit1_stage4)); // 2 Add2 add5(.data(bit0_stage4), .sum(count[0]), .carry(bit1_stage5)); // 0.625 wire [63:0] pop64 = {bit1_stage1, bit1_stage2, bit1_stage3, bit1_stage4, bit1_stage5}; PopCount64 count64(.data(pop64), .count(count[7:1])); endmodule
5:38 p.m.
compressor 128=>44 =>16
Avatar
What's your use case for this, out of curiosity?
Avatar
ReJ aka Renaldas Zioma 2025-12-11 5:39 p.m.
neural networks 🙂
5:41 p.m.
either 1) neural nets with (stationary) ternary weights or b) summation at the end of the Logic Gate Networks (LGN aka differentiable logic)
5:42 p.m.
It works well with SKY130 PDK FA/HA cells, but not sure what is the best for GF180
5:43 p.m.
In GF180 atm I am using $popcount() in combination with SYNTH_ADDER_TYPE: FA instead. (edited)
5:46 p.m.
(there are of course no FA cells in GF180 PDK, but it seems to produce slightly smaller area this way... maybe just a coincidence... also seems to synthesise/route faster) (edited)
Avatar
Okay, that changes things
5:50 p.m.
what do you get if you literally do data[0] + data[1] + ...?
Avatar
@ReJ aka Renaldas Zioma Given the application, I'm wondering if approximation are ok ?
👍 1
Avatar
Avatar
tnt
@ReJ aka Renaldas Zioma Given the application, I'm wondering if approximation are ok ?
ReJ aka Renaldas Zioma 2025-12-11 5:51 p.m.
Approximations are OK.
Avatar
Avatar
Lofty
what do you get if you literally do data[0] + data[1] + ...?
ReJ aka Renaldas Zioma 2025-12-11 5:52 p.m.
That usually does not work as well. Definitely worse (in terms of area) on SKY130 than FA/HA solution and worse than $popcount() for GF180.
Avatar
yosys has...no handling for $popcount that I can find?
Avatar
Avatar
Lofty
yosys has...no handling for $popcount that I can find?
ReJ aka Renaldas Zioma 2025-12-11 5:55 p.m.
I don't get any errors and tests run. Gate level gives me weirds results though 😉
Avatar
are you using slang?
Avatar
ReJ aka Renaldas Zioma 2025-12-11 5:55 p.m.
Not at the moment.
Avatar
Avatar
tnt
@ReJ aka Renaldas Zioma Given the application, I'm wondering if approximation are ok ?
ReJ aka Renaldas Zioma 2025-12-11 6:18 p.m.
Actually I wanted to use analog summation, but I don't feel that I can make a one that works reliably with more than 10 inputs 😉
Avatar
@ReJ aka Renaldas Zioma Yeah that's what I was thinking, just summing some unit currents and then use some form of flash adc to convert to binary.
Avatar
Avatar
tnt
@ReJ aka Renaldas Zioma Yeah that's what I was thinking, just summing some unit currents and then use some form of flash adc to convert to binary.
ReJ aka Renaldas Zioma 2025-12-11 6:39 p.m.
Actually it is even better, I don’t even need the binary values. What I need is to compare either 2 or 10 currents and just pick the index of the largest one.
6:39 p.m.
I need argmax operation essentially
6:40 p.m.
So maybe comparator would be enough instead of ADC (edited)
Avatar
Oh yeah, that makes it easier,.
Avatar
Tim 'mithro' Ansell 2025-12-12 3:24 a.m.
Now here hoping I haven't screwed something up which makes the system thing non-clean things are clean!
Avatar
Congrats, you're popular enough to spam 🙂
3:15 p.m.
Need more moderators 😅
💜 3
Avatar
It’s probably also time to make some channels restricted posting, to limit the noise. Eg, having an “announcements” or “rules” channel that anyone can post in (or allowing general discussion in “announcements”), rather defeats the purpose of having separate channels for announcements. Most servers limit posting in those types of channels to a small set of pre-approved users. Which also avoids getting spam in those channels. (edited)
Avatar
Avatar
tnt
Congrats, you're popular enough to spam 🙂
Tim 'mithro' Ansell 2025-12-13 12:03 a.m.
Where?
Avatar
Avatar
ewen
It’s probably also time to make some channels restricted posting, to limit the noise. Eg, having an “announcements” or “rules” channel that anyone can post in (or allowing general discussion in “announcements”), rather defeats the purpose of having separate channels for announcements. Most servers limit posting in those types of channels to a small set of pre-approved users. Which also avoids getting spam in those channels. (edited)
Tim 'mithro' Ansell 2025-12-13 12:05 a.m.
@Andrew Wingate - You seem to understand discord enough to make that happen?
Avatar
Avatar
Tim 'mithro' Ansell
@Andrew Wingate - You seem to understand discord enough to make that happen?
I banned them and cleaned it up. Not much you can do to stop them from happining.
Avatar
Avatar
Andrew Wingate
I banned them and cleaned it up. Not much you can do to stop them from happining.
Tim 'mithro' Ansell 2025-12-13 12:06 a.m.
@ewen was mentioning converting the announcement and rules channels?
Avatar
Specifically making the "admin"-like channels (eg, #announcements and #welcome-and-rules ) limited to admins (and other specifically approved people) to post. That'd also avoid announcements turning into a discussion channel, obscuring the announcements (which has happened at least once already).
Avatar
Andrew Wingate 2025-12-13 1:53 a.m.
Yeah, I had mentioned making announcements admin only so important things don't get pushed off. It won't keep spammers from doing things though
Avatar
It does reduce the blast radius a bit though 😀
Avatar
Tim 'mithro' Ansell 2025-12-13 4:05 a.m.
BTW @ewen - You the ewen who I know through LCA and a bunch of past FPGA stuff?
Avatar
Tim 'mithro' Ansell 2025-12-13 4:12 a.m.
@Andrew Wingate - I deputize you to do what is needed 🙂
💜 1
Avatar
Tim 'mithro' Ansell 2025-12-13 5:56 a.m.
FYI - I'm not going to be available on Monday (15th Dec), which is Sunday for most people in the US.
Avatar
Avatar
Tim 'mithro' Ansell
BTW @ewen - You the ewen who I know through LCA and a bunch of past FPGA stuff?
Yes! (My actual Discord username is slightly more identifying, but for better or worse my display name became what I use on IRC.)
Avatar
Avatar
ewen
Yes! (My actual Discord username is slightly more identifying, but for better or worse my display name became what I use on IRC.)
Tim 'mithro' Ansell 2025-12-13 8:08 a.m.
Going to do an ASIC now? 😛
❤️ 1
Avatar
Definitely not this time! But maybe eventually.... 🤔
8:10 a.m.
(Mostly just here as "interesting topic, know some of the people, should vaguely pay attention")
Avatar
Tim 'mithro' Ansell 2025-12-14 2:00 a.m.
How is everyone today?
🎉 1
Avatar
Avatar
Tim 'mithro' Ansell
How is everyone today?
asic destroyer 2025-12-14 3:29 p.m.
🚴‍♂️ 2
3:29 p.m.
Today bmx only
Avatar
Avatar
Tim 'mithro' Ansell
I'm currently planning on the idea that people who have done designs that we have manufactured for free end up with something useful for them without having to pay. The exact details are still unknown and depends on lots of different things and unclear if it is even worth the hassle for there to be options to pay something to get more and such.
I'd be very happy to pay something to get some TinyQV chips, if you do end up making and bonding them! I might also be interested in a pack of boards with chips of different public designs, were such a thing to be available. But I appreciate the focus is on getting stuff to GF for now 🙂
Leo Moser (mole99) started a thread. 2025-12-15 7:46 a.m.
Avatar
Tim 'mithro' Ansell 2025-12-15 11:49 p.m.
Morning everyone, hopefully everyone had a productive and/or fun weekend!
Avatar
Tim 'mithro' Ansell 2025-12-16 1:15 a.m.
@ReJ aka Renaldas Zioma & @LukeW - I could use your feedback on the following AI generated output -> https://github.com/mithro/gf180mcu-sram-forge/pull/35
Summary Complete research on 5V/3.3V SRAM parts (historical and current) for sram-forge external interface compatibility Identify de-facto standard interfaces for 8-bit, 16-bit, and 32-bit widths ...
😮 1
Avatar
What’s with the duplicating log lines?
Avatar
Avatar
Tholin
What’s with the duplicating log lines?
it's weird, but equally, I think it's kind of a confidence tick that something is happening and it hasn't disconnected or got stuck.
Avatar
I don’t like that there’s two empty lines in-between. That looks quite ugly.
Avatar
Tim 'mithro' Ansell 2025-12-16 4:02 p.m.
I actually think it's an error in how my code is handling the docker log outputs.
Avatar
@Leo Moser (mole99) @Tim 'mithro' Ansell I think the default compile scripts for magic and netgen have optimization turned off. I wonder how much of a speed up you'd get with optimization turned on. Be warned that I think I got conflicting results with optimization on.
Avatar
Avatar
bailey
@Leo Moser (mole99) @Tim 'mithro' Ansell I think the default compile scripts for magic and netgen have optimization turned off. I wonder how much of a speed up you'd get with optimization turned on. Be warned that I think I got conflicting results with optimization on.
Tim 'mithro' Ansell 2025-12-17 3:07 a.m.
It would be nice if we could have nix install both the optimized and non-optimized version side-by-side and let us run a direct comparison with the same input data....
Avatar
I keep the compile optimizations turned off because (1) I want to be able to debug immediately if anything goes wrong, and (2) I have not found much difference between running with and without optimization. Maybe now that the tapeout is done and I'm done with the 3.3V SRAM development for now, I can work on some code development (finally---way too many items on that "to do" list).
😆 1
Avatar
Avatar
Tim Edwards
I keep the compile optimizations turned off because (1) I want to be able to debug immediately if anything goes wrong, and (2) I have not found much difference between running with and without optimization. Maybe now that the tapeout is done and I'm done with the 3.3V SRAM development for now, I can work on some code development (finally---way too many items on that "to do" list).
CVC-RV has a 3-4x speed up on sky130 tinytapeout with optimazation, but it's written in C++. I think I remember over a 2x gain with magic/netgen.
Avatar
@bailey : I haven't run a comparison recently. It's possible that I have now knocked down enough of the truly horrible chokepoints in the code that the performance provided by compiler optimization is actually significant. . .
👍 1
Avatar
Tim 'mithro' Ansell 2025-12-17 10:28 p.m.
@Tim Edwards - Compilers have gotten a lot better over the years. Also you can generate pretty good debugging symbols for optimized code these days.
Avatar
Tim 'mithro' Ansell 2025-12-18 4:35 a.m.
How is everyone feeling with the countdown looming?
Avatar
All good 🙂 Have a design ready that passed the 1.5.5 precheck on the platform. Currently running a slightly adapted version (improved timing) to see if it still passes. If not, can I just select the prior (successfully checked) version when pressing "Submit for Manufacturing" or do I have to re-run it?
Avatar
Tim 'mithro' Ansell 2025-12-18 8:01 a.m.
@Thorben - In theory you should be able to submit an old version which has passed precheck, but I'm not sure that functionality actually works.
8:02 a.m.
@Thorben - It seems the precheck did something weird on your last run, so I restarted it.
Avatar
Thanks, the new one had antenna violations anyway, so I put the old one back in and pressed submit.
8:51 a.m.
It is now checking the old file again for which the test already passed (see matching hashes). Feel free to stop the current run if it's not needed for you to proceed.
Avatar
Does GF specify anywhere what they use for passivation? some kind of nitride? Only reference I could find was the bump specs, everywhere else it just says "passivation layer"
Avatar
Avatar
BreakingTaps
Does GF specify anywhere what they use for passivation? some kind of nitride? Only reference I could find was the bump specs, everywhere else it just says "passivation layer"
🙏 1
Avatar
oh nice find, spent ages looking for a chart like that. Saving for future reference thanks!
Avatar
This is one of the things on my die. I don’t know what compelled me to do this, I just did it.
👍🏻 1
8:55 p.m.
Oops, little mistake there. 6510 is the one with the GPIO port.
Avatar
For the people doing legacy components, just came across this Ben Eater video where he's talking about SID (Sound Interface Device) like those used on the Commodore. May be interesting. @ReJ aka Renaldas Zioma https://www.youtube.com/watch?v=nooPmXxO6K0
❤️ 1
Avatar
Avatar
Andrew Wingate
For the people doing legacy components, just came across this Ben Eater video where he's talking about SID (Sound Interface Device) like those used on the Commodore. May be interesting. @ReJ aka Renaldas Zioma https://www.youtube.com/watch?v=nooPmXxO6K0
ReJ aka Renaldas Zioma 2025-12-20 9:52 p.m.
SID is absolutely the best audio chip from the 8-bit times. SID is pretty much The Holy Grail when it comes to replicas. Relatively 😉 large demand, relatively expensive and hard to emulate correctly. SID has bunch of analog components inside - amps, filters and DACs. All with pretty unique characteristics. GF180 is prefect for such a replica!
9:54 p.m.
Once TinyTapeout opens support for analog designs with GF180 - it will be great for prototyping and validating all the analog components in separation. Wafer.Space will be ideal for the whole chip tapeout.
9:55 p.m.
... and I think @Tholin already started work on it 🙂
💜 1
Avatar
Avatar
ReJ aka Renaldas Zioma
SID is absolutely the best audio chip from the 8-bit times. SID is pretty much The Holy Grail when it comes to replicas. Relatively 😉 large demand, relatively expensive and hard to emulate correctly. SID has bunch of analog components inside - amps, filters and DACs. All with pretty unique characteristics. GF180 is prefect for such a replica!
Haha nice! Kind of figured as much, but still thought it was worth posting about. Thanks for all the extra info!
Avatar
I taped out a SID clone this week
💜 2
11:01 p.m.
I also taped out the SID 2. A custom creation.
11:02 p.m.
Its backwards-compatible with the SID, but adds a sine wave option to each voice and extends it all with some FM Synthesis features.
waferspace 2
Avatar
👋 Hi! I heard there are a bunch of cool projects trying to make combinational designs of AI inference models. That's something I've been thinking a lot about in the past years as well and I would love to know more about it and if there's any progress. (edited)
Avatar
@lromor One of my designs implemented a 32x32 output stationary systolic array (an AI accelerator). I had to make quite a few architecture choices to get it to fit on GF180.
💜 1
Avatar
Tim 'mithro' Ansell 2025-12-24 9:34 a.m.
Despite the Commodore 64 having been out of production for probably longer than many Hackaday readers have been alive, its SID audio chip remains a very popular subject of both retrocomputing and m…
Avatar
Avatar
Trevor Peyton
@lromor One of my designs implemented a 32x32 output stationary systolic array (an AI accelerator). I had to make quite a few architecture choices to get it to fit on GF180.
Interesting. I imagine you are targeting inference and exploding each network GEMM into an array like that? Or are you reusing most of the components?
Avatar
I chucked a MAC, tanh and xorshift into my processor so that it could (maybe) do some light reservoir computing inference. but those were an afterthought more than a design goal 🙂
Avatar
Avatar
BreakingTaps
I chucked a MAC, tanh and xorshift into my processor so that it could (maybe) do some light reservoir computing inference. but those were an afterthought more than a design goal 🙂
Interesting! You made a dedicated instruction for those? Are you supporting IEEE 754 floats?
Avatar
Yep, sorta! My processor is a transport-triggered architecture, so it's relatively easy to bolt on additional functional units (just adds a new move destination/result to the bus). iirc the tanh is set to use Q1.15 fixed point, and I think the MAC is just simple wrapping integer (edit: yep) (edited)
🤩 1
10:34 p.m.
those particular FUs got basically zero testing and were thrown in the last week, so dunno if they work 🤷 😅
😆 1
10:38 p.m.
(I'm using Spade HDL and did zero optimization here, so it's also just whatever the transpiler spit out and then yosys generated using defaults. i'm sure they are horrible at the transistor level 🫣 )
Avatar
Hey, we're not that awful :p
😁 1
❤️ 2
10:41 p.m.
It's kind of funny to think of my chess move generator in CPU terms :p
10:41 p.m.
I'm not entirely sure it counts as a TTA, but it has things that could be considered such
Avatar
definitely seems to be a bit of a spectrum imo. sorta like functional languages... hard to be "pure" once you interact with the real world. I had to cheat a little when it came to handling the program counter and conditionals.
10:49 p.m.
did give me a better appreciation of RISC vs CISC etc
Avatar
Tim 'mithro' Ansell 2025-12-25 2:33 a.m.
Merry Xmas and Happy Holidays to everyone!
💜 2
🎄 9
❤️ 2
Avatar
How is the reticle doing ?
9:06 a.m.
Stiched ? Approved by GF ? That would be a good xmas present 😁
🎉 1
Avatar
Avatar
tnt
Stiched ? Approved by GF ? That would be a good xmas present 😁
Leo Moser (mole99) 2025-12-26 3:24 p.m.
We stitched the reticle and sent it to GF on Monday. However, we received a number of violations. The next step is to sort through them, to see which ones can be waived, and which ones need to be fixed. Due to the holidays, things are moving a bit slowly at the moment, though :)
😢 5
💜 1
Avatar
No hurry... actually if there are any for TT the longer the better because I wouldn't even start looking at them for 2 weeks 😅
😢 2
Avatar
Avatar
lromor
Interesting. I imagine you are targeting inference and exploding each network GEMM into an array like that? Or are you reusing most of the components?
Inference was the target yes. You can do GEMM, CNN, and some other common ops with a systolic array. If you do the right numerical representation (fixed/float) you can do training by just doing a second multiplication pass for the gradients/backprop - at least that was my understanding, I've never done it as inference has been my priority.
Avatar
Avatar
BreakingTaps
I chucked a MAC, tanh and xorshift into my processor so that it could (maybe) do some light reservoir computing inference. but those were an afterthought more than a design goal 🙂
That's cool! I'd love to see a comparison. I looked into an xorshift but went with the systolic array instead. I'm curious to see the potential power/area differences you can get in performance!
Avatar
Avatar
Trevor Peyton
Inference was the target yes. You can do GEMM, CNN, and some other common ops with a systolic array. If you do the right numerical representation (fixed/float) you can do training by just doing a second multiplication pass for the gradients/backprop - at least that was my understanding, I've never done it as inference has been my priority.
I see, so you have a lot of synchronous parts. Is your target representation float/fixed point?
Avatar
Avatar
lromor
I see, so you have a lot of synchronous parts. Is your target representation float/fixed point?
The entire array is synchronous. I went with ternary weights, 8-bit activations to fit on chip. FP multipliers are huge, so I stuck with int space.
Exported 763 message(s)
Timezone: UTC+0