-
Notifications
You must be signed in to change notification settings - Fork 867
dpl: avoid improve_placement crashes on no-site macros( improve_placement core dump) #9863
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -22,11 +22,14 @@ void paintInGrid(Grid* grid, Node* node) | |
| { | ||
| const auto grid_x = grid->gridX(DbuX(node->getLeft())); | ||
| const auto grid_y = grid->gridRoundY(DbuY(node->getBottom())); | ||
| odb::dbSite* site = node->getDbInst()->getMaster()->getSite(); | ||
| const auto orientation | ||
| = grid->getSiteOrientation(grid_x, grid_y, site).value(); | ||
| grid->paintPixel(node, grid_x, grid_y); | ||
| node->adjustCurrOrient(orientation); | ||
| auto* site = node->getSite(); | ||
| if (site == nullptr) { | ||
| return; | ||
| } | ||
| if (const auto orientation = grid->getSiteOrientation(grid_x, grid_y, site)) { | ||
| node->adjustCurrOrient(*orientation); | ||
| } | ||
|
Comment on lines
+26
to
+32
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This logic for safely updating a node's orientation is also implemented in References
|
||
| } | ||
|
|
||
| }; // namespace | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,79 @@ | ||
| VERSION 5.8 ; | ||
| DIVIDERCHAR "/" ; | ||
| BUSBITCHARS "[]" ; | ||
| DESIGN no_site_block ; | ||
| UNITS DISTANCE MICRONS 2000 ; | ||
| DIEAREA ( 0 0 ) ( 20000 20000 ) ; | ||
| ROW ROW_0 FreePDK45_38x28_10R_NP_162NW_34O 3800 2800 FS DO 32 BY 1 STEP 380 0 ; | ||
| ROW ROW_1 FreePDK45_38x28_10R_NP_162NW_34O 3800 5600 N DO 32 BY 1 STEP 380 0 ; | ||
| ROW ROW_2 FreePDK45_38x28_10R_NP_162NW_34O 3800 8400 FS DO 32 BY 1 STEP 380 0 ; | ||
| ROW ROW_3 FreePDK45_38x28_10R_NP_162NW_34O 3800 11200 N DO 32 BY 1 STEP 380 0 ; | ||
| TRACKS X 190 DO 52 STEP 380 LAYER metal1 ; | ||
| TRACKS Y 140 DO 70 STEP 280 LAYER metal1 ; | ||
| TRACKS X 190 DO 52 STEP 380 LAYER metal2 ; | ||
| TRACKS Y 140 DO 70 STEP 280 LAYER metal2 ; | ||
| TRACKS X 190 DO 52 STEP 380 LAYER metal3 ; | ||
| TRACKS Y 140 DO 70 STEP 280 LAYER metal3 ; | ||
| TRACKS X 190 DO 35 STEP 560 LAYER metal4 ; | ||
| TRACKS Y 140 DO 35 STEP 560 LAYER metal4 ; | ||
| TRACKS X 190 DO 35 STEP 560 LAYER metal5 ; | ||
| TRACKS Y 140 DO 35 STEP 560 LAYER metal5 ; | ||
| TRACKS X 190 DO 35 STEP 560 LAYER metal6 ; | ||
| TRACKS Y 140 DO 35 STEP 560 LAYER metal6 ; | ||
| TRACKS X 190 DO 12 STEP 1600 LAYER metal7 ; | ||
| TRACKS Y 140 DO 12 STEP 1600 LAYER metal7 ; | ||
| TRACKS X 190 DO 12 STEP 1600 LAYER metal8 ; | ||
| TRACKS Y 140 DO 12 STEP 1600 LAYER metal8 ; | ||
| TRACKS X 190 DO 6 STEP 3200 LAYER metal9 ; | ||
| TRACKS Y 140 DO 6 STEP 3200 LAYER metal9 ; | ||
| TRACKS X 190 DO 6 STEP 3200 LAYER metal10 ; | ||
| TRACKS Y 140 DO 6 STEP 3200 LAYER metal10 ; | ||
| VIAS 3 ; | ||
| - via4_960x2800 + VIARULE Via4Array-0 + CUTSIZE 280 280 + LAYERS metal4 metal5 via4 + CUTSPACING 320 320 + ENCLOSURE 40 60 40 60 + ROWCOL 5 2 ; | ||
| - via5_960x2800 + VIARULE Via5Array-0 + CUTSIZE 280 280 + LAYERS metal5 metal6 via5 + CUTSPACING 320 320 + ENCLOSURE 40 60 40 60 + ROWCOL 5 2 ; | ||
| - via6_960x2800 + VIARULE Via6Array-0 + CUTSIZE 280 280 + LAYERS metal6 metal7 via6 + CUTSPACING 320 320 + ENCLOSURE 340 360 340 360 + ROWCOL 4 1 ; | ||
| END VIAS | ||
| COMPONENTS 1 ; | ||
| - macro1 NO_SITE_BLOCK + PLACED ( 7600 2800 ) N ; | ||
| END COMPONENTS | ||
| PINS 1 ; | ||
| - input + NET input + DIRECTION INPUT + USE SIGNAL + FIXED ( 0 -140 ) N + LAYER metal6 ( -140 -140 ) ( 140 140 ) ; | ||
| END PINS | ||
| SPECIALNETS 2 ; | ||
| - VDD ( * VDD ) + USE POWER | ||
| + ROUTED metal6 0 + SHAPE STRIPE ( 136140 106400 ) via6_960x2800 | ||
| NEW metal5 0 + SHAPE STRIPE ( 136140 106400 ) via5_960x2800 | ||
| NEW metal4 0 + SHAPE STRIPE ( 136140 106400 ) via4_960x2800 | ||
| NEW metal6 0 + SHAPE STRIPE ( 24140 106400 ) via6_960x2800 | ||
| NEW metal5 0 + SHAPE STRIPE ( 24140 106400 ) via5_960x2800 | ||
| NEW metal4 0 + SHAPE STRIPE ( 24140 106400 ) via4_960x2800 | ||
| NEW metal6 0 + SHAPE STRIPE ( 136140 26400 ) via6_960x2800 | ||
| NEW metal5 0 + SHAPE STRIPE ( 136140 26400 ) via5_960x2800 | ||
| NEW metal4 0 + SHAPE STRIPE ( 136140 26400 ) via4_960x2800 | ||
| NEW metal6 0 + SHAPE STRIPE ( 24140 26400 ) via6_960x2800 | ||
| NEW metal5 0 + SHAPE STRIPE ( 24140 26400 ) via5_960x2800 | ||
| NEW metal4 0 + SHAPE STRIPE ( 24140 26400 ) via4_960x2800 | ||
| NEW metal7 2800 + SHAPE STRIPE ( 20140 106400 ) ( 180120 106400 ) | ||
| NEW metal7 2800 + SHAPE STRIPE ( 20140 26400 ) ( 180120 26400 ) | ||
| NEW metal4 960 + SHAPE STRIPE ( 136140 22400 ) ( 136140 179200 ) | ||
| NEW metal4 960 + SHAPE STRIPE ( 24140 22400 ) ( 24140 179200 ) | ||
| NEW metal1 340 + SHAPE FOLLOWPIN ( 3800 14000 ) ( 15960 14000 ) | ||
| NEW metal1 340 + SHAPE FOLLOWPIN ( 3800 8400 ) ( 15960 8400 ) | ||
| NEW metal1 340 + SHAPE FOLLOWPIN ( 3800 2800 ) ( 15960 2800 ) ; | ||
| - VSS ( * VSS ) + USE GROUND | ||
| + ROUTED metal6 0 + SHAPE STRIPE ( 80140 146400 ) via6_960x2800 | ||
| NEW metal5 0 + SHAPE STRIPE ( 80140 146400 ) via5_960x2800 | ||
| NEW metal4 0 + SHAPE STRIPE ( 80140 146400 ) via4_960x2800 | ||
| NEW metal6 0 + SHAPE STRIPE ( 80140 66400 ) via6_960x2800 | ||
| NEW metal5 0 + SHAPE STRIPE ( 80140 66400 ) via5_960x2800 | ||
| NEW metal4 0 + SHAPE STRIPE ( 80140 66400 ) via4_960x2800 | ||
| NEW metal7 2800 + SHAPE STRIPE ( 20140 146400 ) ( 180120 146400 ) | ||
| NEW metal7 2800 + SHAPE STRIPE ( 20140 66400 ) ( 180120 66400 ) | ||
| NEW metal4 960 + SHAPE STRIPE ( 80140 22400 ) ( 80140 179200 ) | ||
| NEW metal1 340 + SHAPE FOLLOWPIN ( 3800 11200 ) ( 15960 11200 ) | ||
| NEW metal1 340 + SHAPE FOLLOWPIN ( 3800 5600 ) ( 15960 5600 ) ; | ||
| END SPECIALNETS | ||
| NETS 1 ; | ||
| - input ( PIN input ) ( macro1 A ) + USE SIGNAL ; | ||
| END NETS | ||
| END DESIGN |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This
usesRowSiteshelper function is also defined insrc/dpl/src/optimization/detailed_manager.cxx. To avoid code duplication, consider moving this logic into a method on theNodeclass itself, for examplebool Node::hasSite() constinObjects.h. This would improve code reuse and maintainability.References