Ellen Wood
11/09/2023, 10:41 AMTOP_digital
), then instantiated this into a mixed signal design which gets incorporated into the user_project_wrapper. The strange behaviours are these:
1. Openlane appears to have generated FEOL DRCs during the hardening process of TOP_digital
. All of the FEOL DRCs are associated with this macro which Openlane previously made.
2. Whats more bizzare, is that the precheck for user_project_wrapper, sometimes it flags up these DRCs, and sometimes it doesn't. Because TOP_digital
doesn't get re-hardened or regenerated during the user_project_wrapper build, I don't understand where this inconsistency is coming from.Mitch Bailey
11/10/2023, 12:58 AMGRT_OBS
in their config.json
files. Do you have GRT_OBS
in your config.json
?Ellen Wood
11/10/2023, 9:23 AMEllen Wood
11/10/2023, 9:23 AMEllen Wood
11/10/2023, 9:24 AMTOP_digital.mag
which Openlane has made, and instantate this as a cell in Magic, alongside the Analog cell:Ellen Wood
11/10/2023, 9:24 AMEllen Wood
11/10/2023, 9:30 AMuser_project_wrapper
with the below config.json. It seems to work okay, but during pre-check, the TOP_digital cell contains Klayout FEOL which seem to change with each hardening of user_project_wrapper
. Do you think it could be something to do with the TOP_digital.mag file being used, and then re-written to GDS? Maybe some errors creep in during this process? On your last point, neither of the config.json files have GRT_OBS
, but the parent heirarchies might not be right, would you mind having a look?Mitch Bailey
11/10/2023, 4:24 PMGDS_FILE
property of TOP_digital
. You can do this by editing the TOP_digital.mag
file. I think when you originally create the file in openlane, it has the GDS_FILE
property, but when you edit it, the property disappears. @Tim Edwards Is my understanding correct?
So the first time, after you place TOP_digital
in TOP_mixed
and then write the gds, the TOP_digital
gds created from openlane is used.
However, if you edit TOP_digital
in magic and then write the data as gds, the openlane gds data is ignored and the magic data is converted to gds. This might cause some differences. Do you need to make changes to TOP_digital
?Ellen Wood
11/10/2023, 5:00 PMTOP_mixed.mag
and write out the GDS, FEOL errors are generated in TOP_digital
and they change slightly each time. We've made no changes to TOP_digital
lately (and nor do we need to going forward) - but other small changes elsewhere in the design, then re-harden user_project_wrapper
. Perhaps some sort of rounding error is happening in the gds write
process in Magic, to explain the slight differences in errors each time?Ellen Wood
11/10/2023, 5:01 PMTOP_mixed.mag
- (note - TOP_digital hasn't been touched each time)Ellen Wood
11/10/2023, 5:02 PMEllen Wood
11/10/2023, 5:04 PMGDS_FILE
property will help stablise the errors for TOP_digital
at least? I'm also using the gds write
command, is there a better way perhaps? The errors themselves seem easy to solve by editing the user_project_wrapper.gds
, but I think they will get generated every time we make small changes to the layout (for LVS etc). I haven't fixed them yet for this reason, but it means we haven't been able to submit a design to the Efabless repo for the Tapeout Job, because it can't get past the FEOL stage of the precheckEllen Wood
11/10/2023, 5:15 PMTOP_digital.gds
, instead of TOP_digital.mag
, would help? Or make things worse?Mitch Bailey
11/10/2023, 10:56 PMTim Edwards
11/11/2023, 1:03 AMnsdm
and psdm
width and spacing. There are two settings involved; one is the GDS_FILE
in the standard cells. You want the standard cells to be written exactly as-is. I expect it's the other problem, though, which is that openlane writes out GDS of digital blocks using cif *hier write disable
. What that does is it prevents magic from checking whether neighboring or overlapping cells are causing DRC violations from interacting layers. Then it goes and adds extra layers to fix up those errors. The standard cells are designed specifically so that they can fill a tiled area of standard cell sites without causing any interactions and without needing any repairs. So the hierarchical checks and repair are just wasted time for standard cells (and it can be a lot of time for a large digital block). But if you have a mixed-signal design with analog blocks being written from .mag files and you use cif *hier write disable
then you are very likely going to end up with FEOL errors.
I think the best thing to do is to make sure that all large blocks being assembled on the top level (1) have complete and DRC clean generated layout, are abstracted, and have a GDS_FILE pointer pointing to the known-good GDS, and (2) blocks are assembled in the top level with enough space in between so that they will not have any interactions that would cause DRC errors (a few microns distance is probably sufficient unless they have deep nwell structures close to the edges, in which case probably about 10 micron spacing is sufficient).Ellen Wood
11/11/2023, 3:09 PMEllen Wood
11/11/2023, 6:24 PM.mag
file, is it okay to instantiate a .gds
cell (in amongst other instances of .mag
cells)? Or should all the cell instances be the same file type?Ellen Wood
11/11/2023, 6:25 PMTOP_digital.gds
instead of the TOP_digital.mag
. Openlane made both, but I'm hoping there's no errors in the GDS due to the design of the standard cells which you mentioned!Tim Edwards
11/11/2023, 10:11 PM.mag
files. However, you can do this:
gds readonly true
gds read <filename>
writeall
The "readonly" option means that you will get a .mag
version of what's in the GDS but when magic writes out GDS it will include the cell directly from the original GDS file it came from, which I think is what you are looking for.Mitch Bailey
11/11/2023, 11:37 PMTOP_mixed.mag
file already contains TOP_digital
and TOP_analog
.
Will this overwrite the TOP_digital
cell in memory?
gds readonly true
gds read TOP_digital.gds
Tim Edwards
11/12/2023, 1:24 AMgds readonly true; gds read TOP_digital.gds; writeall force TOP_digital
separately from everything else, and with a fresh run of magic; that's a standalone operation that is meant to generate a TOP_digital.mag
file that has a GDS pointer to TOP_digital.gds
. You would not do that while something is already loaded in memory.Ellen Wood
11/12/2023, 1:21 PMTOP_digital.mag
pointing to a clean GDS for TOP_digital. Will try tomorrow.Ellen Wood
11/13/2023, 10:17 AMTOP_digital
! 🎉 FYI - as you probably know, Openlane generates both TOP_digital.gds
(into the caravel_user_project/gds
directory) and a TOP_digital.mag
(into caravel_user_project/mag
directory). I was using the TOP_digital.mag
straight from that directory, but have realised that this file is not generated with any GDS_FILE
property in it! So when it was getting written to GDS, I'm guessing the errors were generated? Reading in the GDS instead with readonly true
appears to have fixed the problem.Ellen Wood
11/13/2023, 10:18 AMnsd
and psd
blocks which it wanted me to manually merge.