Somewhat blunt question: how incredibly unsophisti...
# shuttle
a
Somewhat blunt question: how incredibly unsophisticated can a project be and still qualify for submission? Given there's a week until submission, my verilog skillset is somewhere around "userspace contains wishbone-addressable register latching a single word, that when read returns that register xor `0xaaaaaaaa`". This would perhaps be a waste of a tapeout. On the other hand, https://fossi-foundation.org/2020/06/30/skywater-pdk extensively discusses "open source, no further strings attached" and "democratizing hardware design, a chip for everyone", and in those terms I am perhaps the ideal program participant. Certainly if Google and SkyWater are gracious enough to fund effectively a hands-on self-study course on chip design, in exchange for incidental platform/toolchain beta testing, I will jump on the opportunity :)
a
@User there are a few people doing "mega-chips" with several different projects multiplexed together (with wishbone and I/O provided to each) - it may be more efficient to try to see if one of those would accept your project, perhaps?
a
That does make sense! Could you point me to any further information on those? I'm not seeing any other hits in slack search for "mega" or "megachip"
a
@Matt Venn is doing one
I may also have some space left over in my design where I'd be able to fit experimental wishbone-accessible logic, but I won't be sure until I get all the little details integrated
(few days or so)
a
Sweet. I think my rough plan right now it to check out @Kunal's course to see if I'm in way over my head, and maybe try to get the tooling running locally in the interim On a scale of 1 to 10, how would you rate the accuracy of the following statement: if I clone https://github.com/efabless/caravel and put my experimental logic there, and it passes prechecks etc, a git merge with your or matt's or other megachip project will result in the build either succeeding with the combined result, or failing cleanly with "not enough mm²"?
a
For the megachip, the approach would be more of building the core directly with openlane as its own macro, and then copying the GDS/LEF and verilog (the main concerns with the precheck is just making sure all the licensing is good in that case) into the mega-project, where it can then be manually placed and connected to the rest of the design.
But yes, if your design is able to work inside the caravel (replacing the
user_project_example
logic), and the size isn't too large, then it should be fairly easy to get it integrated into a mega-project as long as there is enough space
t
@Anton Dyudin The verilog is just a tiny part ... at the current state of things, going from working (fpga tested / simulated) verilog to something passing in OpenLane is still a massive amount of work.
m
a
@Anton Dyudin ^
m
thanks @Anish I meant to @Anton Dyudin
k
@tnt can you mention some of the steps that are a "massive amount of work" regarding openlane?
t
When (and if( I figure them out, I will ...
but I have working (simulated / fpga tested) verilog and 1 week later still don't have a design running without error through the flow
k
@tnt I did get stuck with openlane crashing during converting the caravel example user project
t
crashes (segfault) / placement errors / routing not finishing / disconnected power / LVS errors / DRC errros / Antenna Errors ... I think I've have a lot of different stuff.
✔️ 1
The placement errors are the most weird / surprising ... I mean the damn thing is 75% empty and it goes and place a cell right in the middle of a macro ? like WTF ? How hard is it to not place a cell in the middle of a giant square in the lower right corner.
k
Alright, that is kind of disturbing. Good info.
Are you generally having to tweak openlane settings, or changing your design to work around these issues? (if they are worked around at all)
t
Now to be clear, I already find it amazing that it works at all given the relatively short amount of time this has been done in and the complexity of those issues. I know the devs are working hard on it and it's definitely come a long way. I'm just trying to highlight that if you want to submit something, the time to work on the verilog alone was ... in the past and that by now you should be working on getting it through the flow if you want something.
Usually it's tweak openlane, though it's not just settings, I had to patch things in OpenLane iteself or in the underlying software it uses (like OpenRoad, etc ...).
a
What version of openlane are you using?
and what all changes have you had to make
t
develop
branch.
👀 1
I have a PR open on openlane with some of the changes.
a
ahh
m
my own experiience has been that all my designs apart from the tiniest have gotten me finished gds files with no fatal errors
the problems I have now are to do with compiling multiple designs together into one bigger one
a
@Matt Venn what issues have you been having with the combining designs?
t
@Matt Venn That's probably because I'm using macros, so I end up hitting all the issues you're having now right from the start.
m
yep
t
Do you actually get down to 0 DRC errors and 0 Antenna violations (both with Magic and OR antenna checks) ? The flow doesn't actually error out on those, they're just burried in the logs ...
m
oh btw, I only just learnt about this file: runs/xxxx/reports/final_summary_report
and the answer is no, I have never yet got a completely clean report
image.png
a
huh, I've been able to get 0 DRC and 0 LVS pretty reliably (at least when not pushing the density too hard) but always end up with ~50-100 antenna violations (mostly on ~1.5 sqmm designs, although never gotten down to 0)
there was a thread discussing severity of antenna violations, let me see if I can find it
t
Yeah LVS is not too hard. If it fails, it usually has good reasons. DRC ... the router keeps doing weird stuff to me with one of the FF resulting in a DRC violation, but it's not too frequent (I get maybe 4 / 5 of them) and they're easily fixable by hand. Antenna ... much more issues and some are hard to fix by hand. Also by default it only runs the OR antenna check. Doing the magic antenna check, I get other violations (which ... look real when looking at the final GDS).
a
oh yikes
also how are you feeding the hand-patched gds back into the flow after fixing drc violations?
t
I don't patch the GDS, I usually edit the DEF. I have a custom
tcl
script that does the flow only up to routing. Then I fixup the
DEF
, then I have another script that does the rest of the flow.
a
ah ok, is this script on GH by any chance?
t
It's not. But it's really just the
flow.tcl
but with in first place with everything before/after the
global_routing
step commented out.
a
I'm now imagining a
git rebase
like flow, opens up
$EDITOR
in the middle to let you patch things…
t
yeah, being able to either hook custom step or replace functions or "pause" until you can go fix things would be useful.
I'm writing some OpenDB python stuff to do some of the patching automatically for me ATM, so I don't have to do it each time.
a
Yeah, it'll need to be reproducible for the final precheck anyway right?
t
Don't think so no.
a

https://youtu.be/gsbAk2fzmz8?t=3494

has some differences of opinion, but sounds like "commit the final fixups as a patch" at minimum At least in theory :P
t
Yeah, I asked here if having to manually patch things was acceptable and was told it's fine.
The goal is to be reproducible ... it's not there yet ...
a
I suppose similarly to the goal being for the router to produce results that don't need patching, fair enough!