mirror of https://github.com/KLayout/klayout.git
LEF/DEF: preparations for FILLS support, UI rearrangement.
This commit is contained in:
parent
7f7a3324d9
commit
96e3570c6d
|
|
@ -97,6 +97,9 @@ GenericReaderOptions::GenericReaderOptions ()
|
|||
m_lefdef_produce_lef_pins = load_options.get_option_by_name ("lefdef_config.produce_lef_pins").to_bool ();
|
||||
m_lefdef_lef_pins_suffix = load_options.get_option_by_name ("lefdef_config.lef_pins_suffix_str").to_string ();
|
||||
m_lefdef_lef_pins_datatype = load_options.get_option_by_name ("lefdef_config.lef_pins_datatype_str").to_string ();
|
||||
m_lefdef_produce_fills = load_options.get_option_by_name ("lefdef_config.produce_fills").to_bool ();
|
||||
m_lefdef_fills_suffix = load_options.get_option_by_name ("lefdef_config.fills_suffix_str").to_string ();
|
||||
m_lefdef_fills_datatype = load_options.get_option_by_name ("lefdef_config.fills_datatype_str").to_string ();
|
||||
m_lefdef_produce_obstructions = load_options.get_option_by_name ("lefdef_config.produce_obstructions").to_bool ();
|
||||
m_lefdef_obstruction_suffix = load_options.get_option_by_name ("lefdef_config.obstructions_suffix").to_string ();
|
||||
m_lefdef_obstruction_datatype = load_options.get_option_by_name ("lefdef_config.obstructions_datatype").to_int ();
|
||||
|
|
@ -500,6 +503,20 @@ GenericReaderOptions::add_options (tl::CommandLineOptions &cmd)
|
|||
"The LEF pin geometry generation and layer mapping is designed in the same way than via geometry mapping. "
|
||||
"See '--" + m_long_prefix + "lefdef-produce-via-geometry' for a description of the mapping scheme.\n"
|
||||
)
|
||||
<< tl::arg (group +
|
||||
"#!--" + m_long_prefix + "lefdef-dont-produce-fills", &m_lefdef_produce_fills, "Skips fills when producing geometry",
|
||||
"If this option is given, no fill geometry will be produced."
|
||||
)
|
||||
<< tl::arg (group +
|
||||
"#--" + m_long_prefix + "lefdef-fills-suffix", &m_lefdef_fills_suffix, "Specifies the fill geometry layer suffix in pattern-based mode",
|
||||
"The fill geometry generation and layer mapfillg is designed in the same way than via geometry mapfillg. "
|
||||
"See '--" + m_long_prefix + "lefdef-via-geometry-suffix' for a description of the mapfillg scheme.\n"
|
||||
)
|
||||
<< tl::arg (group +
|
||||
"#--" + m_long_prefix + "lefdef-fills-datatype", &m_lefdef_fills_datatype, "Specifies the fill geometry layer datatype in pattern-based mode",
|
||||
"The fill geometry generation and layer mapfillg is designed in the same way than via geometry mapfillg. "
|
||||
"See '--" + m_long_prefix + "lefdef-produce-via-geometry' for a description of the mapfillg scheme.\n"
|
||||
)
|
||||
<< tl::arg (group +
|
||||
"#!--" + m_long_prefix + "lefdef-dont-produce-routing", &m_lefdef_produce_routing, "Skips routing when producing geometry",
|
||||
"If this option is given, no routing geometry will be produced."
|
||||
|
|
|
|||
|
|
@ -161,6 +161,9 @@ private:
|
|||
bool m_lefdef_produce_lef_pins;
|
||||
std::string m_lefdef_lef_pins_suffix;
|
||||
std::string m_lefdef_lef_pins_datatype;
|
||||
bool m_lefdef_produce_fills;
|
||||
std::string m_lefdef_fills_suffix;
|
||||
std::string m_lefdef_fills_datatype;
|
||||
bool m_lefdef_produce_obstructions;
|
||||
std::string m_lefdef_obstruction_suffix;
|
||||
int m_lefdef_obstruction_datatype;
|
||||
|
|
|
|||
|
|
@ -1426,10 +1426,12 @@ DEFImporter::do_read (db::Layout &layout)
|
|||
take ();
|
||||
}
|
||||
} else if (test ("FILLS")) {
|
||||
|
||||
// read over FILLS statements
|
||||
while (! test ("END") || ! test ("FILLS")) {
|
||||
take ();
|
||||
}
|
||||
|
||||
} else if (test ("SCANCHAINS")) {
|
||||
// read over SCANCHAINS statements
|
||||
while (! test ("END") || ! test ("SCANCHAINS")) {
|
||||
|
|
|
|||
|
|
@ -82,6 +82,7 @@ private:
|
|||
void read_regions (std::map<std::string, std::vector<db::Polygon> > ®ions, double scale);
|
||||
void read_groups (std::list<DEFImporterGroup> &groups, double scale);
|
||||
void read_blockages (db::Layout &layout, db::Cell &design, double scale);
|
||||
void read_fills (db::Layout &layout, db::Cell &design, double scale);
|
||||
void read_nets (db::Layout &layout, db::Cell &design, double scale, bool specialnets);
|
||||
void read_vias (db::Layout &layout, db::Cell &design, double scale);
|
||||
void read_pins (db::Layout &layout, db::Cell &design, double scale);
|
||||
|
|
|
|||
|
|
@ -425,6 +425,9 @@ LEFDEFReaderOptions::LEFDEFReaderOptions ()
|
|||
m_produce_lef_pins (true),
|
||||
m_lef_pins_suffix (".PIN"),
|
||||
m_lef_pins_datatype (2),
|
||||
m_produce_fills (true),
|
||||
m_fills_suffix (".FILL"),
|
||||
m_fills_datatype (5),
|
||||
m_produce_obstructions (true),
|
||||
m_obstructions_suffix (".OBS"),
|
||||
m_obstructions_datatype (3),
|
||||
|
|
@ -489,6 +492,11 @@ LEFDEFReaderOptions &LEFDEFReaderOptions::operator= (const LEFDEFReaderOptions &
|
|||
m_lef_pins_suffixes = d.m_lef_pins_suffixes;
|
||||
m_lef_pins_datatype = d.m_lef_pins_datatype;
|
||||
m_lef_pins_datatypes = d.m_lef_pins_datatypes;
|
||||
m_produce_fills = d.m_produce_fills;
|
||||
m_fills_suffix = d.m_fills_suffix;
|
||||
m_fills_suffixes = d.m_fills_suffixes;
|
||||
m_fills_datatype = d.m_fills_datatype;
|
||||
m_fills_datatypes = d.m_fills_datatypes;
|
||||
m_produce_obstructions = d.m_produce_obstructions;
|
||||
m_obstructions_suffix = d.m_obstructions_suffix;
|
||||
m_obstructions_datatype = d.m_obstructions_datatype;
|
||||
|
|
@ -711,6 +719,30 @@ LEFDEFReaderOptions::lef_pins_datatype_str () const
|
|||
return get_datatypes (this, &LEFDEFReaderOptions::lef_pins_datatype, &LEFDEFReaderOptions::lef_pins_datatype_per_mask, max_mask_number ());
|
||||
}
|
||||
|
||||
void
|
||||
LEFDEFReaderOptions::set_fills_suffix_str (const std::string &s)
|
||||
{
|
||||
set_suffixes (this, &LEFDEFReaderOptions::clear_fills_suffixes_per_mask, &LEFDEFReaderOptions::set_fills_suffix, &LEFDEFReaderOptions::set_fills_suffix_per_mask, s);
|
||||
}
|
||||
|
||||
std::string
|
||||
LEFDEFReaderOptions::fills_suffix_str () const
|
||||
{
|
||||
return get_suffixes (this, &LEFDEFReaderOptions::fills_suffix, &LEFDEFReaderOptions::fills_suffix_per_mask, max_mask_number ());
|
||||
}
|
||||
|
||||
void
|
||||
LEFDEFReaderOptions::set_fills_datatype_str (const std::string &s)
|
||||
{
|
||||
set_datatypes (this, &LEFDEFReaderOptions::clear_fills_datatypes_per_mask, &LEFDEFReaderOptions::set_fills_datatype, &LEFDEFReaderOptions::set_fills_datatype_per_mask, s);
|
||||
}
|
||||
|
||||
std::string
|
||||
LEFDEFReaderOptions::fills_datatype_str () const
|
||||
{
|
||||
return get_datatypes (this, &LEFDEFReaderOptions::fills_datatype, &LEFDEFReaderOptions::fills_datatype_per_mask, max_mask_number ());
|
||||
}
|
||||
|
||||
void
|
||||
LEFDEFReaderOptions::set_routing_suffix_str (const std::string &s)
|
||||
{
|
||||
|
|
@ -835,6 +867,8 @@ LEFDEFReaderState::read_map_file (const std::string &path, db::Layout &layout)
|
|||
std::map<std::string, LayerPurpose> purpose_translation;
|
||||
purpose_translation ["LEFPIN"] = LEFPins;
|
||||
purpose_translation ["PIN"] = Pins;
|
||||
purpose_translation ["FILL"] = Fills;
|
||||
purpose_translation ["FILLOPC"] = FillsOPC;
|
||||
purpose_translation ["LEFOBS"] = Obstructions;
|
||||
purpose_translation ["SPNET"] = SpecialRouting;
|
||||
purpose_translation ["NET"] = Routing;
|
||||
|
|
@ -1091,6 +1125,10 @@ static std::string purpose_to_name (LayerPurpose purpose)
|
|||
return "LABEL";
|
||||
case Pins:
|
||||
return "PIN";
|
||||
case Fills:
|
||||
return "FILL";
|
||||
case FillsOPC:
|
||||
return "FILLOPC";
|
||||
case LEFPins:
|
||||
return "LEFPIN";
|
||||
case Obstructions:
|
||||
|
|
@ -1262,6 +1300,10 @@ std::set<unsigned int> LEFDEFReaderState::open_layer_uncached(db::Layout &layout
|
|||
case Pins:
|
||||
produce = mp_tech_comp->produce_pins ();
|
||||
break;
|
||||
case Fills:
|
||||
case FillsOPC:
|
||||
produce = mp_tech_comp->produce_fills ();
|
||||
break;
|
||||
case LEFPins:
|
||||
produce = mp_tech_comp->produce_lef_pins ();
|
||||
break;
|
||||
|
|
@ -1303,6 +1345,11 @@ std::set<unsigned int> LEFDEFReaderState::open_layer_uncached(db::Layout &layout
|
|||
name_suffix = mp_tech_comp->pins_suffix_per_mask (mask);
|
||||
dt = mp_tech_comp->pins_datatype_per_mask (mask);
|
||||
break;
|
||||
case Fills:
|
||||
case FillsOPC:
|
||||
name_suffix = mp_tech_comp->fills_suffix_per_mask (mask);
|
||||
dt = mp_tech_comp->fills_datatype_per_mask (mask);
|
||||
break;
|
||||
case LEFPins:
|
||||
name_suffix = mp_tech_comp->lef_pins_suffix_per_mask (mask);
|
||||
dt = mp_tech_comp->lef_pins_datatype_per_mask (mask);
|
||||
|
|
|
|||
|
|
@ -476,6 +476,72 @@ public:
|
|||
set_per_mask_value (m_lef_pins_datatypes, mask, s);
|
||||
}
|
||||
|
||||
bool produce_fills () const
|
||||
{
|
||||
return m_produce_fills;
|
||||
}
|
||||
|
||||
void set_produce_fills (bool f)
|
||||
{
|
||||
m_produce_fills = f;
|
||||
}
|
||||
|
||||
const std::string &fills_suffix () const
|
||||
{
|
||||
return m_fills_suffix;
|
||||
}
|
||||
|
||||
void set_fills_suffix (const std::string &s)
|
||||
{
|
||||
m_fills_suffix = s;
|
||||
}
|
||||
|
||||
int fills_datatype () const
|
||||
{
|
||||
return m_fills_datatype;
|
||||
}
|
||||
|
||||
void set_fills_datatype (int s)
|
||||
{
|
||||
m_fills_datatype = s;
|
||||
}
|
||||
|
||||
void set_fills_suffix_str (const std::string &s);
|
||||
std::string fills_suffix_str () const;
|
||||
|
||||
void set_fills_datatype_str (const std::string &s);
|
||||
std::string fills_datatype_str () const;
|
||||
|
||||
void clear_fills_suffixes_per_mask ()
|
||||
{
|
||||
m_fills_suffixes.clear ();
|
||||
}
|
||||
|
||||
void clear_fills_datatypes_per_mask ()
|
||||
{
|
||||
m_fills_datatypes.clear ();
|
||||
}
|
||||
|
||||
const std::string &fills_suffix_per_mask (unsigned int mask) const
|
||||
{
|
||||
return per_mask_value (m_fills_suffixes, m_fills_suffix, mask);
|
||||
}
|
||||
|
||||
void set_fills_suffix_per_mask (unsigned int mask, const std::string &s)
|
||||
{
|
||||
set_per_mask_value (m_fills_suffixes, mask, s);
|
||||
}
|
||||
|
||||
int fills_datatype_per_mask (unsigned int mask) const
|
||||
{
|
||||
return per_mask_value (m_fills_datatypes, m_fills_datatype, mask);
|
||||
}
|
||||
|
||||
void set_fills_datatype_per_mask (unsigned int mask, int s)
|
||||
{
|
||||
set_per_mask_value (m_fills_datatypes, mask, s);
|
||||
}
|
||||
|
||||
bool produce_obstructions () const
|
||||
{
|
||||
return m_produce_obstructions;
|
||||
|
|
@ -707,6 +773,8 @@ public:
|
|||
get_max_mask_number (mm, m_pins_datatypes);
|
||||
get_max_mask_number (mm, m_lef_pins_suffixes);
|
||||
get_max_mask_number (mm, m_lef_pins_datatypes);
|
||||
get_max_mask_number (mm, m_fills_suffixes);
|
||||
get_max_mask_number (mm, m_fills_datatypes);
|
||||
get_max_mask_number (mm, m_routing_suffixes);
|
||||
get_max_mask_number (mm, m_routing_datatypes);
|
||||
get_max_mask_number (mm, m_special_routing_suffixes);
|
||||
|
|
@ -841,6 +909,11 @@ private:
|
|||
int m_lef_pins_datatype;
|
||||
std::map<unsigned int, std::string> m_lef_pins_suffixes;
|
||||
std::map<unsigned int, int> m_lef_pins_datatypes;
|
||||
bool m_produce_fills;
|
||||
std::string m_fills_suffix;
|
||||
int m_fills_datatype;
|
||||
std::map<unsigned int, std::string> m_fills_suffixes;
|
||||
std::map<unsigned int, int> m_fills_datatypes;
|
||||
bool m_produce_obstructions;
|
||||
std::string m_obstructions_suffix;
|
||||
int m_obstructions_datatype;
|
||||
|
|
@ -875,6 +948,8 @@ enum LayerPurpose
|
|||
{
|
||||
Routing = 0, // from DEF only
|
||||
Pins, // from DEF
|
||||
Fills, // from DEF
|
||||
FillsOPC, // from DEF
|
||||
SpecialRouting, // from DEF only
|
||||
LEFPins, // from LEF
|
||||
ViaGeometry, // from LEF+DEF
|
||||
|
|
|
|||
|
|
@ -339,6 +339,13 @@ class LEFDEFFormatDeclaration
|
|||
// new:
|
||||
tl::make_member (&LEFDEFReaderOptions::lef_pins_suffix_str, &LEFDEFReaderOptions::set_lef_pins_suffix_str, "special-lef_pins-suffix-string") +
|
||||
tl::make_member (&LEFDEFReaderOptions::lef_pins_datatype_str, &LEFDEFReaderOptions::set_lef_pins_datatype_str, "special-lef_pins-datatype-string") +
|
||||
tl::make_member (&LEFDEFReaderOptions::produce_fills, &LEFDEFReaderOptions::set_produce_fills, "produce-fills") +
|
||||
// for backward compatibility
|
||||
tl::make_member (&LEFDEFReaderOptions::set_fills_suffix, "special-fills-suffix") +
|
||||
tl::make_member (&LEFDEFReaderOptions::set_fills_datatype, "special-fills-datatype") +
|
||||
// new:
|
||||
tl::make_member (&LEFDEFReaderOptions::fills_suffix_str, &LEFDEFReaderOptions::set_fills_suffix_str, "special-fills-suffix-string") +
|
||||
tl::make_member (&LEFDEFReaderOptions::fills_datatype_str, &LEFDEFReaderOptions::set_fills_datatype_str, "special-fills-datatype-string") +
|
||||
tl::make_member (&LEFDEFReaderOptions::produce_obstructions, &LEFDEFReaderOptions::set_produce_obstructions, "produce-obstructions") +
|
||||
tl::make_member (&LEFDEFReaderOptions::obstructions_suffix, &LEFDEFReaderOptions::set_obstructions_suffix, "obstructions-suffix") +
|
||||
tl::make_member (&LEFDEFReaderOptions::obstructions_datatype, &LEFDEFReaderOptions::set_obstructions_datatype, "obstructions-datatype") +
|
||||
|
|
|
|||
|
|
@ -502,6 +502,94 @@ gsi::Class<db::LEFDEFReaderOptions> decl_lefdef_config ("db", "LEFDEFReaderConfi
|
|||
gsi::method ("lef_pins_datatype_str=", &db::LEFDEFReaderOptions::set_lef_pins_datatype_str, gsi::arg ("datatype"),
|
||||
"@hide"
|
||||
) +
|
||||
gsi::method ("produce_fills", &db::LEFDEFReaderOptions::produce_fills,
|
||||
"@brief Gets a value indicating whether fill geometries shall be produced.\n"
|
||||
"See \\produce_via_geometry for details about the layer production rules."
|
||||
"\n\n"
|
||||
"Fill support has been introduced in version 0.27."
|
||||
) +
|
||||
gsi::method ("produce_fills=", &db::LEFDEFReaderOptions::set_produce_fills, gsi::arg ("produce"),
|
||||
"@brief Sets a value indicating whether fill geometries shall be produced.\n"
|
||||
"See \\produce_via_geometry for details about the layer production rules."
|
||||
"\n\n"
|
||||
"Fill support has been introduced in version 0.27."
|
||||
) +
|
||||
gsi::method ("fills_suffix", &db::LEFDEFReaderOptions::fills_suffix,
|
||||
"@brief Gets the fill geometry layer name suffix.\n"
|
||||
"See \\produce_via_geometry for details about the layer production rules."
|
||||
"\n\n"
|
||||
"Fill support has been introduced in version 0.27."
|
||||
) +
|
||||
gsi::method ("fills_suffix=", &db::LEFDEFReaderOptions::set_fills_suffix, gsi::arg ("suffix"),
|
||||
"@brief Sets the fill geometry layer name suffix.\n"
|
||||
"See \\produce_via_geometry for details about the layer production rules."
|
||||
"\n\n"
|
||||
"Fill support has been introduced in version 0.27."
|
||||
) +
|
||||
gsi::method ("fills_datatype", &db::LEFDEFReaderOptions::fills_datatype,
|
||||
"@brief Gets the fill geometry layer datatype value.\n"
|
||||
"See \\produce_via_geometry for details about the layer production rules."
|
||||
"\n\n"
|
||||
"Fill support has been introduced in version 0.27."
|
||||
) +
|
||||
gsi::method ("fills_datatype=", &db::LEFDEFReaderOptions::set_fills_datatype, gsi::arg ("datatype"),
|
||||
"@brief Sets the fill geometry layer datatype value.\n"
|
||||
"See \\produce_via_geometry for details about the layer production rules."
|
||||
"\n\n"
|
||||
"Fill support has been introduced in version 0.27."
|
||||
) +
|
||||
gsi::method ("clear_fills_suffixes_per_mask", &db::LEFDEFReaderOptions::clear_fills_suffixes_per_mask,
|
||||
"@brief Clears the fill layer name suffix per mask.\n"
|
||||
"See \\produce_via_geometry for details about this property.\n"
|
||||
"\n\n"
|
||||
"Mask specific rules have been introduced in version 0.27."
|
||||
) +
|
||||
gsi::method ("clear_fill_datatypes_per_mask", &db::LEFDEFReaderOptions::clear_fills_datatypes_per_mask,
|
||||
"@brief Clears the fill layer datatypes per mask.\n"
|
||||
"See \\produce_via_geometry for details about this property.\n"
|
||||
"\n\n"
|
||||
"Mask specific rules have been introduced in version 0.27."
|
||||
) +
|
||||
gsi::method ("fills_suffix_per_mask", &db::LEFDEFReaderOptions::fills_suffix_per_mask, gsi::arg ("mask"),
|
||||
"@brief Gets the fill geometry layer name suffix per mask.\n"
|
||||
"See \\produce_via_geometry for details about the layer production rules."
|
||||
"The mask number is a zero-based mask index (0: MASK 1, 1: MASK 2 ...)."
|
||||
"\n\n"
|
||||
"Mask specific rules have been introduced in version 0.27."
|
||||
) +
|
||||
gsi::method ("set_fills_suffix_per_mask", &db::LEFDEFReaderOptions::set_fills_suffix_per_mask, gsi::arg ("mask"), gsi::arg ("suffix"),
|
||||
"@brief Sets the fill geometry layer name suffix per mask.\n"
|
||||
"See \\produce_via_geometry for details about the layer production rules."
|
||||
"The mask number is a zero-based mask index (0: MASK 1, 1: MASK 2 ...)."
|
||||
"\n\n"
|
||||
"Mask specific rules have been introduced in version 0.27."
|
||||
) +
|
||||
gsi::method ("fills_datatype", &db::LEFDEFReaderOptions::fills_datatype_per_mask,
|
||||
"@brief Gets the fill geometry layer datatype value per mask.\n"
|
||||
"See \\produce_via_geometry for details about the layer production rules."
|
||||
"The mask number is a zero-based mask index (0: MASK 1, 1: MASK 2 ...)."
|
||||
"\n\n"
|
||||
"Mask specific rules have been introduced in version 0.27."
|
||||
) +
|
||||
gsi::method ("set_fills_datatype_per_mask", &db::LEFDEFReaderOptions::set_fills_datatype_per_mask, gsi::arg ("mask"), gsi::arg ("datatype"),
|
||||
"@brief Sets the fill geometry layer datatype value.\n"
|
||||
"See \\produce_via_geometry for details about the layer production rules."
|
||||
"The mask number is a zero-based mask index (0: MASK 1, 1: MASK 2 ...)."
|
||||
"\n\n"
|
||||
"Mask specific rules have been introduced in version 0.27."
|
||||
) +
|
||||
gsi::method ("fills_suffix_str", &db::LEFDEFReaderOptions::fills_suffix_str,
|
||||
"@hide"
|
||||
) +
|
||||
gsi::method ("fills_suffix_str=", &db::LEFDEFReaderOptions::set_fills_suffix_str, gsi::arg ("suffix"),
|
||||
"@hide"
|
||||
) +
|
||||
gsi::method ("fills_datatype_str", &db::LEFDEFReaderOptions::fills_datatype_str,
|
||||
"@hide"
|
||||
) +
|
||||
gsi::method ("fills_datatype_str=", &db::LEFDEFReaderOptions::set_fills_datatype_str, gsi::arg ("datatype"),
|
||||
"@hide"
|
||||
) +
|
||||
gsi::method ("produce_obstructions", &db::LEFDEFReaderOptions::produce_obstructions,
|
||||
"@brief Gets a value indicating whether obstruction markers shall be produced.\n"
|
||||
"See \\produce_via_geometry for details about the layer production rules."
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -354,6 +354,7 @@ LEFDEFReaderOptionsEditor::LEFDEFReaderOptionsEditor (QWidget *parent)
|
|||
connect (produce_via_geometry, SIGNAL (stateChanged (int)), this, SLOT (checkbox_changed ()));
|
||||
connect (produce_pins, SIGNAL (stateChanged (int)), this, SLOT (checkbox_changed ()));
|
||||
connect (produce_lef_pins, SIGNAL (stateChanged (int)), this, SLOT (checkbox_changed ()));
|
||||
connect (produce_fills, SIGNAL (stateChanged (int)), this, SLOT (checkbox_changed ()));
|
||||
connect (produce_obstructions, SIGNAL (stateChanged (int)), this, SLOT (checkbox_changed ()));
|
||||
connect (produce_blockages, SIGNAL (stateChanged (int)), this, SLOT (checkbox_changed ()));
|
||||
connect (produce_routing, SIGNAL (stateChanged (int)), this, SLOT (checkbox_changed ()));
|
||||
|
|
@ -493,6 +494,9 @@ LEFDEFReaderOptionsEditor::commit (db::FormatSpecificReaderOptions *options, con
|
|||
data->set_produce_lef_pins (produce_lef_pins->isChecked ());
|
||||
data->set_lef_pins_suffix_str (tl::to_string (suffix_lef_pins->text ()));
|
||||
data->set_lef_pins_datatype_str (tl::to_string (datatype_lef_pins->text ()));
|
||||
data->set_produce_fills (produce_fills->isChecked ());
|
||||
data->set_fills_suffix_str (tl::to_string (suffix_fills->text ()));
|
||||
data->set_fills_datatype_str (tl::to_string (datatype_fills->text ()));
|
||||
data->set_produce_obstructions (produce_obstructions->isChecked ());
|
||||
data->set_obstructions_suffix (tl::to_string (suffix_obstructions->text ()));
|
||||
data->set_obstructions_datatype (datatype_obstructions->text ().toInt ());
|
||||
|
|
@ -556,6 +560,9 @@ LEFDEFReaderOptionsEditor::setup (const db::FormatSpecificReaderOptions *options
|
|||
produce_lef_pins->setChecked (data->produce_lef_pins ());
|
||||
suffix_lef_pins->setText (tl::to_qstring (data->lef_pins_suffix_str ()));
|
||||
datatype_lef_pins->setText (tl::to_qstring (data->lef_pins_datatype_str ()));
|
||||
produce_fills->setChecked (data->produce_fills ());
|
||||
suffix_fills->setText (tl::to_qstring (data->fills_suffix_str ()));
|
||||
datatype_fills->setText (tl::to_qstring (data->fills_datatype_str ()));
|
||||
produce_obstructions->setChecked (data->produce_obstructions ());
|
||||
suffix_obstructions->setText (tl::to_qstring (data->obstructions_suffix ()));
|
||||
datatype_obstructions->setText (QString::number (data->obstructions_datatype ()));
|
||||
|
|
@ -604,6 +611,7 @@ LEFDEFReaderOptionsEditor::checkbox_changed ()
|
|||
suffix_via_geometry->setEnabled (produce_via_geometry->isChecked ());
|
||||
suffix_pins->setEnabled (produce_pins->isChecked ());
|
||||
suffix_lef_pins->setEnabled (produce_lef_pins->isChecked ());
|
||||
suffix_fills->setEnabled (produce_fills->isChecked ());
|
||||
suffix_obstructions->setEnabled (produce_obstructions->isChecked ());
|
||||
suffix_blockages->setEnabled (produce_blockages->isChecked ());
|
||||
suffix_routing->setEnabled (produce_routing->isChecked ());
|
||||
|
|
@ -612,6 +620,7 @@ LEFDEFReaderOptionsEditor::checkbox_changed ()
|
|||
datatype_via_geometry->setEnabled (produce_via_geometry->isChecked ());
|
||||
datatype_pins->setEnabled (produce_pins->isChecked ());
|
||||
datatype_lef_pins->setEnabled (produce_lef_pins->isChecked ());
|
||||
datatype_fills->setEnabled (produce_fills->isChecked ());
|
||||
datatype_obstructions->setEnabled (produce_obstructions->isChecked ());
|
||||
datatype_blockages->setEnabled (produce_blockages->isChecked ());
|
||||
datatype_routing->setEnabled (produce_routing->isChecked ());
|
||||
|
|
|
|||
|
|
@ -752,6 +752,16 @@ TEST(119_multimapping)
|
|||
)
|
||||
}
|
||||
|
||||
TEST(120_simplefill)
|
||||
{
|
||||
run_test (_this, "fill", "lef:simple.lef+def:simple.def+map:simple.map", "simple_au.oas.gz", default_options (), false);
|
||||
}
|
||||
|
||||
TEST(121_fillwithmask)
|
||||
{
|
||||
run_test (_this, "fill", "lef:with_mask.lef+def:with_mask.def+map:with_mask.map", "with_mask_au.oas.gz", default_options (), false);
|
||||
}
|
||||
|
||||
TEST(200_lefdef_plugin)
|
||||
{
|
||||
db::Layout ly;
|
||||
|
|
|
|||
Loading…
Reference in New Issue