Support schematic driven layout
joamatab opened this issue · comments
Add examples and tests for schematic driven layout to support going from schematic to layout using different schematic capture tools
- from Ansys Lumerical Interconnect @kithminrw
- from Xschem @dquintero @StefanSchippers StefanSchippers/xschem#171
- from Qucs @nikosavola
- from hdl21 @dan-fritchman
This would provide SAX simulation as well for RF, @flaport @tvt173
Btw, related to gdsfactory/gdsfactory#2755, on the hdl21 and gdsfactory integration:
Have been looking into it. Worth mentioning, currently the hdl21-sky130 package has the latest sky130nm PDK primitives, which doesn't map to the current layout components available.
As per gdsfactory/skywater130#63, we need to add the latest PDK layout instances into the gdsfactory sky130nm package in order to be able to link the layout and hdl21 schematic instances inherently. Currently we only have the digital cells in the gdsfactory sky130nm PDK, and I've tested this existing PR and it doesn't quite solve the problem as it depends on the klayout raw instantiation rather than one that is accessible inherently from gdsfactory .
I will try importing the gds directly, but don't know the limitations of the layout parametrization after inputting the params from hdl21 which might be tricky.
So @daquintero - correct me if I'm misunderstanding here:
- GdsFactory has a set of p-cell parameters per transistor, e.g. these
- Hdl21 has its own params for those transistors, e.g. these
- The goal is to have one drive the other (or have some 3rd thing which drives both)
I understand that right?
Hi Dan! Yeah, I guess the idea is to ultimately pseudo-impelment the way the layout editor is generated from a schematic like in Virtuoso as you suggest. So making a schematic and then generating the corresponding layout instances that are edited via gdsfactory. The method required would translate between the hdl21 params implementation and the instance/params schematic-editor implementation within gdsfactory.
As far as I can tell so far there are a few steps to achieve this:
- Map sky130 spice model names to either gds instances/parametrized functions (such as between sky130_hdl21 and sky130 gdsfactory)
- Verify the correct mapping between params
- Test this out in the gplugins schematic/layout editor.
A next stage could be finding a way to map between xschem
and hdl21/vlsir
protos. Maybe you already know if this is possible? Like creating a sky130nm schematic in xschem and exporting that to a vlsir representation/data that we could interact with in vlsir/hdl21 (say specifically for actual module layout rather than testbenches) -> gdsfactory. I don't really know how that would work exactly as have been focused on the specific SPICE hdl21/vlsir-gdsfactory interface first.
What do you think? How could something like this be better implemented since you've written most of these tools?
So thanks Dan for the reference:
- hdl21 have their own schematic editor implementation too https://www.generation-alpha-transistor.com/
I just recently bumped into this:
- https://kwantaekim.github.io/2024/06/18/Glayout/ which uses the gdsfactory pdks