<@U0175T39732> Where can I find a 1KB, DRC clean, ...
# openram
m
@User Where can I find a 1KB, DRC clean, sky130, OpenRAM? When I try to open the
sky130_sram_1kbyte_1rw1r_32x256_8.gds
file in the Magic, nothing happens and I get following errors:
Copy code
...
Error while reading cell "sky130_fd_bd_sram__openram_dp_cell_cap_row" (byte position 112036): Unknown layer/datatype in boundary, layer=33 type=43
Error while reading cell "sky130_fd_bd_sram__openram_dp_cell_cap_row" (byte position 112996): Unknown layer/datatype in boundary, layer=22 type=21
Error while reading cell "sky130_fd_bd_sram__openram_dp_cell_cap_row" (byte position 115364): Unknown layer/datatype in boundary, layer=33 type=42
...
Error while reading cell "sky130_fd_bd_sram__openram_dp_cell_dummy" (byte position 123758): Unknown layer/datatype in boundary, layer=22 type=22
Error while reading cell "sky130_fd_bd_sram__openram_dp_cell_dummy" (byte position 129694): Unknown layer/datatype in boundary, layer=33 type=43
Error while reading cell "sky130_fd_bd_sram__openram_dp_cell_dummy" (byte position 134470): Unknown layer/datatype in boundary, layer=22 type=21
Error while reading cell "sky130_fd_bd_sram__openram_dp_cell_dummy" (byte position 140044): Unknown layer/datatype in boundary, layer=33 type=42
Error while reading cell "sky130_fd_bd_sram__openram_dp_cell_dummy" (byte position 144236): Unknown layer/datatype in boundary, layer=235 type=0
Reading "sky130_fd_bd_sram__openram_dp_cell_replica".
Error while reading cell "sky130_fd_bd_sram__openram_dp_cell_replica" (byte position 150618): Unknown layer/datatype in boundary, layer=22 type=22
Error while reading cell "sky130_fd_bd_sram__openram_dp_cell_replica" (byte position 156746): Unknown layer/datatype in boundary, layer=33 type=43
Error while reading cell "sky130_fd_bd_sram__openram_dp_cell_replica" (byte position 161522): Unknown layer/datatype in boundary, layer=22 type=21
Error while reading cell "sky130_fd_bd_sram__openram_dp_cell_replica" (byte position 167768): Unknown layer/datatype in boundary, layer=33 type=42
Error while reading cell "sky130_fd_bd_sram__openram_dp_cell_replica" (byte position 171960): Unknown layer/datatype in boundary, layer=235 type=0
Reading "sky130_fd_bd_sram__openram_dp_cell".
Error while reading cell "sky130_fd_bd_sram__openram_dp_cell" (byte position 178334): Unknown layer/datatype in boundary, layer=22 type=22
Error while reading cell "sky130_fd_bd_sram__openram_dp_cell" (byte position 184462): Unknown layer/datatype in boundary, layer=33 type=43
Error while reading cell "sky130_fd_bd_sram__openram_dp_cell" (byte position 189238): Unknown layer/datatype in boundary, layer=22 type=21
Error while reading cell "sky130_fd_bd_sram__openram_dp_cell" (byte position 195484): Unknown layer/datatype in boundary, layer=33 type=42
Error while reading cell "sky130_fd_bd_sram__openram_dp_cell" (byte position 199676): Unknown layer/datatype in boundary, layer=235 type=0
...
m
p
@User Are those the same that are installed with pdk? Right now I'm using those installed with PDK and I'm getting 3M+ DRC errors while hardening and 16 violation for precheck after maglef substitution. Is that somehow expected?
m
@User Memories use "core" design rules which are not the same as the user rules. These will not pass DRC using the magic DRC deck
They should be the same as the ones in the PDK
You shouldn't have errors after maglef substition.
p
Is there a way to somehow apply different DRC rules for openram macro than to user area (rest of a project) or just forget about that?
m
@User No, unfortunately
That's a limitation of Magic
p
Ahh, I see, there's some magic missing in magic still 😉
Can you get me some guidance how to cope with precheck violations (after maglef substitution - I hope I'm doing that right)?
m
@User I can't really, sorry. I'm not taping out this MPW so I haven't kept up to date on the changes since MPW2
p
@User Np. Will need to learn more by myself. Thanks!
m
@User I’m still getting the same errors. Do I missing something (e.g. installing a library in the pdk)?
Still nothing loads/reads in/by the Magic…
p
How about klayout?
m
@User I’ll give it a try
@User Did you install any libs from the Google repo?
p
@User In addition I installed sram macros during PDK installation ("make pdk")
Do you have magicrc file beside gds file when trying to open it with magic?
m
@User May I ask how did you exactly do that? I tried different ways with no luck.
p
before "make pdk", you need to "export INSTALL_SRAM=yes" or "export INSTALL_SRAM=<PATH_where_you_want_sram_macros>"
m
NICE! Thank you very much.
p
You can check if you have macros installed in $PDK_ROOT/sky130A/libs.ref/sky130_sram_macros
This is default directory for sram macros
👍 1
Regarding magicrc file for sky130A, that you need to have, it should be somewhere inside PDK
$PDK_ROOT/sky130A/libs.tech/magic/sky130A.magicrc
m
I usually use the -T flag to point to the tech file. Do I also need .magicrc?
p
I was doing it like this: magic -rcfile $PDK_ROOT/sky130A/libs.tech/magic/sky130A.magicrc
m
That was SOOOOO much helpful. Thanks a million! 🙏
p
And I'm also not able to open 1kB sram gds file with magic (with message "Don't know how to read GDS-II: Nothing in "cifinput" section of tech file.") despite being able to do that for my design with sram embedded as a macro
Is that working for you now?
m
I’m working on ur instr. I’ll be right back to u with the results.
m
@User are you able to open any gds file in magic?
This sounds like a magic setup issue.
p
Yes, I'm able to open my hardened project based on caravel_user_project template where I placed 1kB openram as a macro
m
Is it reading your magicrc file for the technology? Sounds like it isn't read
p
I see "Technology: SKY130A" in top bar and non-empty list of layers on the right
This is what I see:
Above was for user_project_wrapper.gds, but this is for sky130_sram_1kbyte_1rw1r_32x256_8.gds:
m
Did you select it (s) and expand (x)?
How did you read it?
p
magic -rc $PDK_ROOT/sky130A/libs.tech/magic/sky130A.magicrc sky13 0_sram_1kbyte_1rw1r_32x256_8.gds
yes, selected and expended (x)
Hmm, this one: sram_1rw1r_32_256_8_sky130.gds is loading:
Umm, crashed
m
What isy our md5sum of the 1kbyte? b9a553e942f9675f70ea32d597624cd4 sky130_sram_1kbyte_1rw1r_32x256_8/sky130_sram_1kbyte_1rw1r_32x256_8.gds
or where did you get it?
@User oh, I have never opened a gds file without using :gds read. I actually didn't even know you could do that
@User all those errors are the DFM layers that probably aren't in the magic CIF input
Confirmed. Those layers aren't in the tech file
m
If I do
load sky130_sram_1kbyte_1rw1r_32x256_8
after loading the gds I can see the cell (despite the unknown layers):
d
@User Do we need to load additional tech file for SRAM in magic tool ?
👍 1
m
@User no, but there are methods to use maglef for performing DRC. This is an OpenLane question though...
@User ah, that's because the PDK moved the macros to be part of the cell library. They are not directly included in the design of gds, probably like cells too
p
@User md5sum sky130_sram_1kbyte_1rw1r_32x256_8.gds 09384e5d6958f53ba22c5ce29a2467ba sky130_sram_1kbyte_1rw1r_32x256_8.gds
I'm currently using 1kB sram macro installed within PDK by "make pdk" under $PDK_ROOT/sky130A/libs.ref/sky130_sram_macros
m
@User oops, that is right. I was looking at an older one. However, Maximo has solved your issue above, I think.
p
@User Yeah, but I wanted to double check I'm using correct version of GDS for 1kB sram. Thanks!
m
(I previously checked my mpw2 submission, but there were updates since then)
p
@User Do you know what is this file sram_1rw1r_32_256_8_sky130.gds and why is it placed with macros?
m
That was the first prototype that is used in the storage array, I believe.
They manually did some edits to it for pre-MPW1 and MPW1
p
Thanks! I'm not using this one, but was just wondering