mirror of https://github.com/KLayout/klayout.git
Merge remote-tracking branch 'upstream/master' into 0.26.2-mac1
This commit is contained in:
commit
9588ce404e
|
|
@ -1347,14 +1347,20 @@ private:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
db::ICplxTrans i1t = i1.complex_trans ();
|
InstanceToInstanceInteraction ii_key;
|
||||||
|
db::ICplxTrans i1t, i2t;
|
||||||
|
|
||||||
|
{
|
||||||
|
i1t = i1element.at_end () ? i1.complex_trans () : i1.complex_trans (*i1element);
|
||||||
db::ICplxTrans tt1 = t1 * i1t;
|
db::ICplxTrans tt1 = t1 * i1t;
|
||||||
|
|
||||||
db::ICplxTrans i2t = i2.complex_trans ();
|
i2t = i2element.at_end () ? i2.complex_trans () : i2.complex_trans (*i2element);
|
||||||
db::ICplxTrans tt2 = t2 * i2t;
|
db::ICplxTrans tt2 = t2 * i2t;
|
||||||
|
|
||||||
db::ICplxTrans tt21 = tt1.inverted () * tt2;
|
db::ICplxTrans tt21 = tt1.inverted () * tt2;
|
||||||
InstanceToInstanceInteraction ii_key (i1.cell_index (), i1.cell_inst ().delegate (), i2.cell_index (), i2.cell_inst ().delegate (), tt21);
|
ii_key = InstanceToInstanceInteraction (i1.cell_index (), (! i1element.at_end () || i1.size () == 1) ? 0 : i1.cell_inst ().delegate (),
|
||||||
|
i2.cell_index (), (! i2element.at_end () || i2.size () == 1) ? 0 : i2.cell_inst ().delegate (),
|
||||||
|
tt21);
|
||||||
|
|
||||||
instance_interaction_cache_type::iterator ii = mp_instance_interaction_cache->find (ii_key);
|
instance_interaction_cache_type::iterator ii = mp_instance_interaction_cache->find (ii_key);
|
||||||
if (ii != mp_instance_interaction_cache->end ()) {
|
if (ii != mp_instance_interaction_cache->end ()) {
|
||||||
|
|
@ -1372,6 +1378,7 @@ private:
|
||||||
return;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// array interactions
|
// array interactions
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -765,6 +765,10 @@ struct InstanceToInstanceInteraction
|
||||||
: ci1 (_ci1), ci2 (_ci2), array1 (_array1), array2 (_array2), t21 (_t21)
|
: ci1 (_ci1), ci2 (_ci2), array1 (_array1), array2 (_array2), t21 (_t21)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
InstanceToInstanceInteraction ()
|
||||||
|
: ci1 (0), ci2 (0), array1 (0), array2 (0)
|
||||||
|
{ }
|
||||||
|
|
||||||
bool operator== (const InstanceToInstanceInteraction &other) const
|
bool operator== (const InstanceToInstanceInteraction &other) const
|
||||||
{
|
{
|
||||||
return ci1 == other.ci1 && ci2 == other.ci2 && t21.equal (other.t21) &&
|
return ci1 == other.ci1 && ci2 == other.ci2 && t21.equal (other.t21) &&
|
||||||
|
|
|
||||||
|
|
@ -329,7 +329,7 @@ Class<db::LayoutToNetlist> decl_dbLayoutToNetlist ("db", "LayoutToNetlist",
|
||||||
gsi::method ("global_net_name", &db::LayoutToNetlist::global_net_name, gsi::arg ("global_net_id"),
|
gsi::method ("global_net_name", &db::LayoutToNetlist::global_net_name, gsi::arg ("global_net_id"),
|
||||||
"@brief Gets the global net name for the given global net ID."
|
"@brief Gets the global net name for the given global net ID."
|
||||||
) +
|
) +
|
||||||
gsi::method ("extract_netlist", &db::LayoutToNetlist::extract_netlist, gsi::arg ("join_net_names", std::string ()), gsi::arg ("include_floating_subcircuits", false),
|
gsi::method ("extract_netlist", &db::LayoutToNetlist::extract_netlist, gsi::arg ("join_net_names", std::string (), "\"\""), gsi::arg ("include_floating_subcircuits", false),
|
||||||
"@brief Runs the netlist extraction\n"
|
"@brief Runs the netlist extraction\n"
|
||||||
"'join_net_names' is a glob expression for labels. Nets on top level carrying the same label which matches this glob "
|
"'join_net_names' is a glob expression for labels. Nets on top level carrying the same label which matches this glob "
|
||||||
"expression will be connected implicitly even if there is no physical connection. This feature is useful to simulate a connection "
|
"expression will be connected implicitly even if there is no physical connection. This feature is useful to simulate a connection "
|
||||||
|
|
@ -359,12 +359,14 @@ Class<db::LayoutToNetlist> decl_dbLayoutToNetlist ("db", "LayoutToNetlist",
|
||||||
"@brief Runs the netlist extraction\n"
|
"@brief Runs the netlist extraction\n"
|
||||||
"This method runs the netlist extraction like the two-parameter version. In addition to the latter, this method "
|
"This method runs the netlist extraction like the two-parameter version. In addition to the latter, this method "
|
||||||
"can be given a per-cell net label joining specification in 'join_net_names_per_cell'. The keys of this array "
|
"can be given a per-cell net label joining specification in 'join_net_names_per_cell'. The keys of this array "
|
||||||
"are cell names or cell names or cell name match expressions (glob style). The values are lable match expressions.\n"
|
"are cell names or cell names or cell name match expressions (glob style). The values are label match expressions.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"If not an empty string, the 'join_net_names' label match expression is applied to the top cell. For all non-top cells "
|
"If not an empty string, the 'join_net_names' label match expression is applied to the top cell. For all non-top cells "
|
||||||
"the per-cell label match expression is applied and determines what labels are joined into single nets. "
|
"the per-cell label match expression is applied and determines what labels are joined into single nets. "
|
||||||
"As the keys of 'join_net_names_per_cell' are glob expressions, a single cell may fall into more than one category. In this "
|
"As the keys of 'join_net_names_per_cell' are glob expressions, a single cell may fall into more than one category. In this "
|
||||||
"case, the label match pattern are combined. In any case, the 'join_net_names' has priority for the top cell."
|
"case, the label match pattern are combined. In any case, the 'join_net_names' has priority for the top cell.\n"
|
||||||
|
"\n"
|
||||||
|
"This variant of 'extract_netlist' has been introduced in version 0.26.2."
|
||||||
) +
|
) +
|
||||||
gsi::method_ext ("internal_layout", &l2n_internal_layout,
|
gsi::method_ext ("internal_layout", &l2n_internal_layout,
|
||||||
"@brief Gets the internal layout\n"
|
"@brief Gets the internal layout\n"
|
||||||
|
|
|
||||||
|
|
@ -1275,3 +1275,9 @@ TEST(118_HierClustersMeanderArrays)
|
||||||
run_hc_test (_this, "meander.gds.gz", "meander_au1.gds");
|
run_hc_test (_this, "meander.gds.gz", "meander_au1.gds");
|
||||||
run_hc_test_with_backannotation (_this, "meander.gds.gz", "meander_au2.gds");
|
run_hc_test_with_backannotation (_this, "meander.gds.gz", "meander_au2.gds");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(119_HierClustersCombArrays)
|
||||||
|
{
|
||||||
|
run_hc_test (_this, "comb.gds", "comb_au1.gds");
|
||||||
|
run_hc_test_with_backannotation (_this, "comb.gds", "comb_au2.gds");
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -796,7 +796,6 @@ method_arguments (const gsi::MethodBase *method, const gsi::ClassBase *cls_obj,
|
||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
r += ",";
|
r += ",";
|
||||||
r += sep;
|
r += sep;
|
||||||
r += " ";
|
|
||||||
}
|
}
|
||||||
r += escape_xml (doc.args [i]);
|
r += escape_xml (doc.args [i]);
|
||||||
}
|
}
|
||||||
|
|
@ -816,7 +815,6 @@ method_arguments (const gsi::MethodBase *method, const gsi::ClassBase *cls_obj,
|
||||||
if (n > 0) {
|
if (n > 0) {
|
||||||
r += ",";
|
r += ",";
|
||||||
r += sep;
|
r += sep;
|
||||||
r += " ";
|
|
||||||
}
|
}
|
||||||
r += type_to_s (*a, linked, false);
|
r += type_to_s (*a, linked, false);
|
||||||
r += " ";
|
r += " ";
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue