@@ -2946,6 +2946,38 @@ Descriptor::Properties DbTechLayerDescriptor::getDBProperties(
29462946 props.push_back ({std::move (title), widths});
29472947 }
29482948
2949+ if (layer->hasTwoWidthsSpacingRules ()) {
2950+ std::vector<std::vector<odb::uint>> spacing_table;
2951+ const int widths = layer->getTwoWidthsSpacingTableNumWidths ();
2952+
2953+ PropertyList spacing_rules;
2954+ for (int i = 0 ; i < widths; i++) {
2955+ const std::string prefix_title = Property::convert_dbu (
2956+ layer->getTwoWidthsSpacingTableWidth (i), true );
2957+ const std::string prl_title
2958+ = layer->getTwoWidthsSpacingTableHasPRL (i)
2959+ ? " - PRL "
2960+ + Property::convert_dbu (
2961+ layer->getTwoWidthsSpacingTablePRL (i), true )
2962+ : " " ;
2963+
2964+ for (int j = 0 ; j < widths; j++) {
2965+ std::string title = prefix_title + " - "
2966+ + Property::convert_dbu (
2967+ layer->getTwoWidthsSpacingTableWidth (j), true )
2968+ + prl_title;
2969+ spacing_rules.emplace_back (
2970+ title,
2971+ Property::convert_dbu (layer->getTwoWidthsSpacingTableEntry (i, j),
2972+ true ));
2973+ }
2974+ }
2975+
2976+ if (!spacing_rules.empty ()) {
2977+ props.push_back ({" Two width spacing rules" , spacing_rules});
2978+ }
2979+ }
2980+
29492981 PropertyList cutclasses;
29502982 for (auto * cutclass : layer->getTechLayerCutClassRules ()) {
29512983 std::string text
0 commit comments