Hello everyone, I am trying to implement SRAM macr...
# sky130
b
Hello everyone, I am trying to implement SRAM macros inside caravel user area. Everything works fine until DRC step. In the DRC step, I get this error message.
Copy code
[ERROR]: during executing: "magic -noconsole -dnull -rcfile /home/burak/openmpw4_tools/pdk/sky130A/libs.tech/magic/sky130A.magicrc /openlane/scripts/magic/drc.tcl </dev/null |& tee >&@stdout /home/burak/openmpw4_tools/caravel_user_project/openlane/user_project_wrapper/runs/user_project_wrapper/logs/finishing/31-drc.log"
[ERROR]: Exit code: 1
[ERROR]: Last 10 lines:
child killed: kill signal

[ERROR]: Flow failed.
When I look at the 31-drc.log, I see these error messages.
Copy code
...
Reading "sky130_fd_bd_sram__openram_dp_cell_cap_row".
Error while reading cell "sky130_fd_bd_sram__openram_dp_cell_cap_row" (byte position 2620068): Unknown layer/datatype in boundary, layer=33 type=42
Error while reading cell "sky130_fd_bd_sram__openram_dp_cell_cap_row" (byte position 2620772): Unknown layer/datatype in boundary, layer=33 type=43
Error while reading cell "sky130_fd_bd_sram__openram_dp_cell_cap_row" (byte position 2621732): Unknown layer/datatype in boundary, layer=22 type=21
...
I think these messages cause the error. But I don't know how to solve this. Reproducibles and log files can be downloaded here. I also opened a github issue in OpenLane repository. For more explanation, you can see the github issue here.
m
You can ignore the unknown layer messages. Check your memory usage: sram can use a lot.
d
@User If your design has SRAM, then better to bypass the Magic DRC check. This is known Magic DRC issue. Make sure that you use only SRAM's available inside the PDK setup. Tapeout Pre-check scripts automatically excludes the SRAM instance available inside PDK during Magic DRC Run's.
b
@User hi again, I generated SRAMs with OpenRAM and implemented it in caravel user area. And obviously precheck did not pass because of DRC issues. Am I not able to use the generated SRAM in my project or is there a workaround to get rid of this issues? By the way thank you both a lot, and apologizing for not writing back for a long time 🙂
d
@User MPW tapeout wise you can only use SRAM available inside PDK folder : $PDK_ROOT/sky130A/libs.ref/sky130_sram_macros/ 1. sram_1rw1r_32_256_8_sky130 2. sky130_sram_2kbyte_1rw1r_32x512_8 3. sky130_sram_1kbyte_1rw1r_8x1024_8 4. sky130_sram_1kbyte_1rw1r_32x256_8 Efabless Tapeout pre-check scripts cross-check these SRAM in user project and exclude the Magic DRC check You don't need to re-generate these SRAM in your user area, you can directly link to $PDK folder
b
The generated SRAM was 8 kB. I am trying to add even more RAM, nearly 30-40 kB, so it is almost impossible to implement it with 2 kB SRAMs. Thus I wonder if there is a way to implement generated SRAMs properly. I think adding the generated SRAMs into PDK folder may fix it, but I am not sure if it is safe.
d
@User You can cross-check with efabless team on allowing user generated SRAM in tapeout. As per last discussion user are allowed to use only SRAM available inside PDK_ROOT @User @User
b
Thanks a lot. I hope there is a chance for me to add SRAMs freely.