Min metal area ignored by ORFS (DRC error)
Subject
[Stage]: Other. Please describe below.
Describe the bug
I am trying to make a circuit with ORFS but it is not DRC clean and they are many metal stubs.
I also tried to run the example for gcd with ihp-sg13g2 pdk. After the flow is completed successfully, final gds file has many wire stubs (Metal2,etc.) which are smaller than the minimum metal area (0.144um^2). Changing minimum metal area in sg13g2_tech.lef didn't fix the problem.
Expected Behavior
The final design should be DRC clean, no metal stubs smaller than 0.144um^2
Environment
output from /OpenROAD-flow-script/env.sh:
OPENROAD: /OpenROAD-flow-scripts/tools/OpenROAD
To Reproduce
- clone the repo: https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts.git
- run docker: docker run --rm -it -u $(id -u ${USER}):$(id -g ${USER}) -v $(pwd)/flow:/OpenROAD-flow-scripts/flow openroad/flow-ubuntu22.04-builder
- uncomment gcd example in /flow/Makefile
- make
- check 6_final.gds file
Relevant log output
No response
Screenshots
Additional Context
No response
How do you "check 6_final.gds file"?
How do you "check 6_final.gds file"?
You can open the 6_final.gds file with klayout and show only metal2 layer. Then you will notice many wire stubs with small size (some with area < 0.06um2.
p.s. DRC also fails due to this issue. Thanks!
There was an older issue related to M2 minimum area violations: https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/issues/1681
@maliberty I haven't seen this issue with the i2c-gpio-expander but I have another, bigger design that has 12 M2.d violations related to too small vias. How can I send someone the design to take a look?
#1681 said increasing the via size fixes the issue but that sounds like a workaround to me.
If the design is not confidential you can just open an issue and provide a link to the test case in google drive or the like.
ping
@maliberty sorry, a little bit busy right now with other stuff. I can share the GDS. So, will open an issue in the next days. Thanks!
Hi, sorry to ask but are there any updates on this? I've also ran into the same problem with Metal2 on ihp-sg13g2 :)
No as this is still pending a test case. @mole99 can you share one?
Well yes, but on OpenLane and I don't know how to easily create a reproducible. Would the odb/gds already help?
If it helps in any case: reproducible.zip
There are 2 "Min. Metal2 area" violations. The coords for these violations are:
- polygon: (200.785,39.38;200.785,39.58;201.46,39.58;201.46,39.38)
- polygon: (220.81,20.9;220.81,21.1;221.485,21.1;221.485,20.9)
Let me know if I can provide anything else!
@maliberty April tape-out is over and I had to fix 28 M2 violations by hand. So, I'm ready to help getting this issue fixed. Do you need some more stuff except what @mole99 send on the 3rd?
The reproducible is not a running reproducer. It is just an odb & gds file - presumably the results. To see what is going wrong we need a complete setup where we can run the router and see the problem being generated.
@maliberty let me prepare you an ORFS branch with a slightly smaller design. My current design is 6mm2 and takes pretty long to layout.
@maliberty I pushed an example chip here which will generate M2.d errors: https://github.com/dnltz/OpenROAD-flow-scripts/pull/new/WIP/dnltz/elemrv-for-m2d
I also pushed a simple DRC sg13g2_quick_m2d.lydrc to only check this error (takes 30sec to run). Do you know how run DRC?
Do you know how run DRC?
No
Please make a standalone routing test case.
@maliberty is that what you were asking for?
https://fileshare.phytec.com/index.php/s/e6CY8JeEi9d66BW
Thanks, other than needing to change global_route to detail_route in the run script it looks good. @osamahammad21 please look when you can.
package with detail_route: https://fileshare.phytec.com/index.php/s/oJgdBLG4zrYeJe8
This chip has 13 M2.d violations
- (1510.825,1634.96;1510.825,1635.16;1511.5,1635.16;1511.5,1634.96)
- (1470.985,1547.6;1470.985,1547.8;1471.66,1547.8;1471.66,1547.6)
- (1207.465,1544.24;1207.465,1544.44;1208.14,1544.44;1208.14,1544.24)
- (1304.425,1328.36;1304.425,1328.56;1305.1,1328.56;1305.1,1328.36)
- (1567.465,1226.72;1567.465,1226.92;1568.14,1226.92;1568.14,1226.72)
- (572.905,1676.12;572.905,1676.32;573.58,1676.32;573.58,1676.12)
- (772.585,1657.64;772.585,1657.84;773.26,1657.84;773.26,1657.64)
- (764.905,1630.76;764.905,1630.96;765.58,1630.96;765.58,1630.76)
- (750.985,1241.84;750.985,1242.04;751.66,1242.04;751.66,1241.84)
- (738.23,768.92;738.23,769.12;738.905,769.12;738.905,768.92)
- (1021.705,784.04;1021.705,784.24;1022.38,784.24;1022.38,784.04)
- (991.465,768.92;991.465,769.12;992.14,769.12;992.14,768.92)
- (661.585,470.72;661.585,470.92;662.26,470.92;662.26,470.72)
@osamahammad21 any update on that topic? Can I help or test something?