mirror of
https://github.com/KLayout/klayout.git
synced 2026-09-07 11:31:08 +02:00
Some enhancements
* Device#net_for_terminal with terminal name * Spice writer now dumps all parameters for resistors and caps (also secondary) * Enabled Spice writer delegate in LVS (spice_format(...)) * Device class factories for built-in device extractors
This commit is contained in:
@@ -117,6 +117,7 @@ void NetlistSpiceWriterDelegate::write_device (const db::Device &dev) const
|
||||
os << " ";
|
||||
os << format_name (dev.device_class ()->name ());
|
||||
}
|
||||
os << format_params (dev, db::DeviceClassCapacitor::param_id_C);
|
||||
|
||||
} else if (ind) {
|
||||
|
||||
@@ -129,6 +130,7 @@ void NetlistSpiceWriterDelegate::write_device (const db::Device &dev) const
|
||||
os << " ";
|
||||
os << format_name (dev.device_class ()->name ());
|
||||
}
|
||||
os << format_params (dev, db::DeviceClassInductor::param_id_L);
|
||||
|
||||
} else if (res || res3) {
|
||||
|
||||
@@ -141,6 +143,7 @@ void NetlistSpiceWriterDelegate::write_device (const db::Device &dev) const
|
||||
os << " ";
|
||||
os << format_name (dev.device_class ()->name ());
|
||||
}
|
||||
os << format_params (dev, db::DeviceClassResistor::param_id_R);
|
||||
|
||||
} else if (diode) {
|
||||
|
||||
|
||||
@@ -251,6 +251,24 @@ static void add_other_abstracts (db::Device *device, const db::DeviceAbstractRef
|
||||
device->other_abstracts ().push_back (ref);
|
||||
}
|
||||
|
||||
static const db::Net *net_for_terminal_by_name_const (const db::Device *device, const std::string &name)
|
||||
{
|
||||
if (! device->device_class () || ! device->device_class ()->has_terminal_with_name (name)) {
|
||||
return 0;
|
||||
} else {
|
||||
return device->net_for_terminal (device->device_class ()->terminal_id_for_name (name));
|
||||
}
|
||||
}
|
||||
|
||||
static const db::Net *net_for_terminal_by_name (db::Device *device, const std::string &name)
|
||||
{
|
||||
if (! device->device_class () || ! device->device_class ()->has_terminal_with_name (name)) {
|
||||
return 0;
|
||||
} else {
|
||||
return device->net_for_terminal (device->device_class ()->terminal_id_for_name (name));
|
||||
}
|
||||
}
|
||||
|
||||
Class<db::Device> decl_dbDevice (decl_dbNetlistObject, "db", "Device",
|
||||
gsi::method ("device_class", &db::Device::device_class,
|
||||
"@brief Gets the device class the device belongs to.\n"
|
||||
@@ -337,6 +355,18 @@ Class<db::Device> decl_dbDevice (decl_dbNetlistObject, "db", "Device",
|
||||
"\n\n"
|
||||
"This constness variant has been introduced in version 0.26.8"
|
||||
) +
|
||||
gsi::method_ext ("net_for_terminal", net_for_terminal_by_name_const, gsi::arg ("terminal_name"),
|
||||
"@brief Gets the net connected to the specified terminal.\n"
|
||||
"If the terminal is not connected, nil is returned for the net."
|
||||
"\n\n"
|
||||
"This convenience method has been introduced in version 0.27.3.\n"
|
||||
) +
|
||||
gsi::method_ext ("net_for_terminal", net_for_terminal_by_name, gsi::arg ("terminal_name"),
|
||||
"@brief Gets the net connected to the specified terminal (non-const version).\n"
|
||||
"If the terminal is not connected, nil is returned for the net."
|
||||
"\n\n"
|
||||
"This convenience method has been introduced in version 0.27.3.\n"
|
||||
) +
|
||||
gsi::method ("connect_terminal", &db::Device::connect_terminal, gsi::arg ("terminal_id"), gsi::arg ("net"),
|
||||
"@brief Connects the given terminal to the specified net.\n"
|
||||
) +
|
||||
|
||||
Reference in New Issue
Block a user