Alex Hodges
11/09/2021, 8:59 AMVijayan Krishnan
11/09/2021, 9:16 AMAlex Hodges
11/09/2021, 10:11 AMVijayan Krishnan
11/09/2021, 10:18 AMAlex Hodges
11/09/2021, 10:19 AMVijayan Krishnan
11/09/2021, 10:20 AMAlex Hodges
11/09/2021, 10:21 AMVijayan Krishnan
11/09/2021, 10:23 AMVijayan Krishnan
11/09/2021, 10:24 AMAlex Hodges
11/09/2021, 10:31 AMVijayan Krishnan
11/09/2021, 10:35 AMVijayan Krishnan
11/10/2021, 10:17 AMIndira Iyer
11/10/2021, 6:08 PMAustin Rovinski
11/11/2021, 7:52 AMAlex Hodges
11/11/2021, 9:38 AMAlex Hodges
11/11/2021, 9:41 AMAlex Hodges
11/11/2021, 1:59 PMAustin Rovinski
11/11/2021, 9:30 PMOR_DEFAULT
LEF58_PROPERTY to a specific via. This is because via selection has been "good enough" and hasn't typically been a blocking item for the kits we support, whereas design rule violations and other items have been.
It is rather unusual to have a kit that does not offer single-cut vias, so this issue doesn't even come up that often. In a typical lithographic-aware routing flow (which OpenROAD does not currently have), the strategy is usually to route with single-cut vias until there are no design rule violations, then make a best-effort to swap single-cut vias to double-cut vias without introducing rule violations. I don't have any hard numbers, but from academic designs I've done we usually see a 9:1 or 10:1 ratio of double-cut to single-cut vias after via swapping. Professional designs might be even more than that because it helps with reliability and variation.
Is there a specific problem you encounter when using a tech LEF that only has double-cut vias? What modifications do you have to make?Alex Hodges
11/12/2021, 9:19 AMVIA VIA2_2CUT_E DEFAULT
LAYER METAL1 ;
RECT -0.3 -0.3 0.9 0.3 ;
LAYER VIA2 ;
RECT -0.2 -0.2 0.2 0.2 ;
RECT 0.4 -0.2 0.8 0.2 ;
LAYER METAL2 ;
RECT -0.3 -0.3 0.9 0.3 ;
RESISTANCE 5 ;
END VIA2_2CUT_E
(The exact dimensions and layer names there are changed because I don't want to fall afoul of our NDA with Tower)
However, this failed on the detailed route step with the message
[ERROR DRT-0234] VIA2 does not have single-cut via.
I'm specifically running the openroad command
detailed_route -guide /tmp/route.guide -bottom_routing_layer METAL1 -top_routing_layer METAL3
where route.guide was generated by the global router (you can see the full script I'm using above, but I get exactly the same error if I use the openROAD-flow-scripts approach).
That error comes from line 74, in OpenROAD/src/drt/src/io/io_parser_helper.cpp, which to me looks like something in openroad is misunderstanding which layers the via connects, but I'm not sure.
To fix the issue and run detailed routing, I'm currently using the somewhat kludgy workaround of editing the tech lef to change all my vias into single cut versions. Specifically, I'm just combining the two RECT lines on the VIA2 layer, so that that section reads
LAYER VIA2 ;
RECT -0.2 -0.2 0.8 0.2 ;
(ie I think I'm just taking the bounding box, if I'm reading the LEF specification correctly). That tweak to the vias makes detailed route run happily.Austin Rovinski
11/13/2021, 1:21 AMcutNum
on like 68 to 1 so that it thinks that all vias are single-cut vias.Alex Hodges
12/02/2021, 9:56 AM-disable_via_gen
tag to the detailed route command.
Honestly I'm really impressed with OpenROAD, it's some remarkably capable software you've made. Thanks for helping me out!Austin Rovinski
12/21/2021, 1:40 AMAustin Rovinski
01/15/2022, 7:41 AMLinen is a search-engine friendly community platform. We offer integrations with existing Slack/Discord communities and make those conversations Google-searchable.
Powered by