Generalized macro resolution mode options for LEF/DEF reader (UI, buddy tools). Added lefdef-lef-layouts for buddy scripts for providing external layouts for FOREIGN.

This commit is contained in:
Matthias Koefferlein
2021-04-22 23:43:28 +02:00
parent 3db1db831f
commit 05901d767e
6 changed files with 139 additions and 61 deletions
@@ -863,9 +863,9 @@ gsi::Class<db::LEFDEFReaderOptions> decl_lefdef_config ("db", "LEFDEFReaderConfi
"are three modes available:\n"
"\n"
"@ul\n"
" @li 0: produce LEF geometry unless a FOREIGN cell is specified (default) @/li\n"
" @li 0: produce LEF geometry unless a FOREIGN cell is specified @/li\n"
" @li 1: produce LEF geometry always and ignore FOREIGN @/li\n"
" @li 2: Never produce LEF geometry @/li\n"
" @li 2: Never produce LEF geometry and assume FOREIGN always @/li\n"
"@/ul\n"
"\n"
"If substitution layouts are specified with \\macro_layouts, these are used to provide "
@@ -35,7 +35,7 @@
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>2</number>
<number>1</number>
</property>
<widget class="QWidget" name="tab_3">
<attribute name="title">
@@ -255,6 +255,37 @@
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="prefix_via_cellname">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="1" column="1" colspan="2">
<widget class="QCheckBox" name="separate_groups">
<property name="text">
<string>Produce a parent cell per group</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_21">
<property name="text">
<string>Via cell name prefix</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>LEF import into DEF</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="dbu">
<property name="sizePolicy">
@@ -278,7 +309,38 @@
</property>
</widget>
</item>
<item row="0" column="3" rowspan="4">
<item row="1" column="0">
<widget class="QLabel" name="label_22">
<property name="text">
<string>Groups</string>
</property>
</widget>
</item>
<item row="4" column="1" colspan="3">
<widget class="QFrame" name="frame_3">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_6">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
</layout>
</widget>
</item>
<item row="0" column="3" rowspan="3">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
@@ -291,49 +353,23 @@
</property>
</spacer>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_22">
<property name="text">
<string>Groups</string>
</property>
</widget>
</item>
<item row="1" column="1" colspan="2">
<widget class="QCheckBox" name="separate_groups">
<property name="text">
<string>Produce a parent cell per group</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_21">
<property name="text">
<string>Via cell name prefix</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="prefix_via_cellname">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>LEF import into DEF</string>
</property>
</widget>
</item>
<item row="3" column="1" colspan="2">
<widget class="QCheckBox" name="produce_lef_geo">
<property name="text">
<string>Produce LEF geometry</string>
</property>
<item row="3" column="1" colspan="3">
<widget class="QComboBox" name="macro_resolution_mode">
<item>
<property name="text">
<string>Produce LEF geometry unless FOREIGN is used</string>
</property>
</item>
<item>
<property name="text">
<string>Always produce LEF geometry and ignore FOREIGN</string>
</property>
</item>
<item>
<property name="text">
<string>Never produce LEF geometry and assume FOREIGN always</string>
</property>
</item>
</widget>
</item>
</layout>
@@ -1362,7 +1398,6 @@ type ...</string>
<tabstop>dbu</tabstop>
<tabstop>separate_groups</tabstop>
<tabstop>prefix_via_cellname</tabstop>
<tabstop>produce_lef_geo</tabstop>
<tabstop>produce_net_names</tabstop>
<tabstop>net_prop_name</tabstop>
<tabstop>produce_inst_names</tabstop>
@@ -515,7 +515,7 @@ LEFDEFReaderOptionsEditor::commit (db::FormatSpecificReaderOptions *options, con
data->set_separate_groups (separate_groups->isChecked ());
data->set_read_lef_with_def (read_lef_with_def->isChecked ());
data->set_map_file (tl::to_string (mapfile_path->text ()));
data->set_macro_resolution_mode (produce_lef_geo->isChecked () ? 0 : 2);
data->set_macro_resolution_mode (macro_resolution_mode->currentIndex ());
data->clear_lef_files ();
for (int i = 0; i < lef_files->count (); ++i) {
@@ -582,7 +582,7 @@ LEFDEFReaderOptionsEditor::setup (const db::FormatSpecificReaderOptions *options
read_lef_with_def->setChecked (data->read_lef_with_def ());
mapfile_path->setText (tl::to_qstring (data->map_file ()));
layer_map_mode->setCurrentIndex (data->map_file ().empty () ? 1 : 0);
produce_lef_geo->setChecked (data->macro_resolution_mode () == 0);
macro_resolution_mode->setCurrentIndex (data->macro_resolution_mode ());
checkbox_changed ();