From 16aba12a84575175f220d8844c5ecb4c88a341fe Mon Sep 17 00:00:00 2001 From: Thomas Ferreira de Lima Date: Wed, 11 Nov 2020 22:33:51 -0500 Subject: [PATCH] Adding clarification on GDS properties in cell, instance, shape and layout. --- src/db/db/gsiDeclDbCell.cc | 2 ++ src/db/db/gsiDeclDbLayout.cc | 3 ++- src/db/db/gsiDeclDbShape.cc | 1 + src/lay/lay/doc/programming/database_api.xml | 7 +++++++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/db/db/gsiDeclDbCell.cc b/src/db/db/gsiDeclDbCell.cc index 1ca13c811..5c051852e 100644 --- a/src/db/db/gsiDeclDbCell.cc +++ b/src/db/db/gsiDeclDbCell.cc @@ -1491,6 +1491,7 @@ Class decl_Cell ("db", "Cell", "If no property with that key exists, it will create one. Using that method is more " "convenient than creating a new property set with a new ID and assigning that properties ID.\n" "This method may change the properties ID. " + "Note: GDS only supports integer keys. OASIS supports numeric and string keys. " "\n" "This method has been introduced in version 0.23." ) + @@ -3453,6 +3454,7 @@ Class decl_Instance ("db", "Instance", "If no property with that key exists, it will create one. Using that method is more " "convenient than creating a new property set with a new ID and assigning that properties ID.\n" "This method may change the properties ID. " + "Note: GDS only supports integer keys. OASIS supports numeric and string keys. " "Calling this method may invalidate any iterators. It should not be called inside a " "loop iterating over instances.\n" "\n" diff --git a/src/db/db/gsiDeclDbLayout.cc b/src/db/db/gsiDeclDbLayout.cc index 79574277b..2e85264b4 100644 --- a/src/db/db/gsiDeclDbLayout.cc +++ b/src/db/db/gsiDeclDbLayout.cc @@ -1028,11 +1028,12 @@ Class decl_Layout ("db", "Layout", "This method has been introduced in version 0.24." ) + gsi::method_ext ("set_property", &set_layout_property, gsi::arg ("key"), gsi::arg ("value"), - "@brief Set the user property with the given key to the given value\n" + "@brief Sets the user property with the given key to the given value\n" "This method is a convenience method that sets the property with the given key to the given value. " "If no property with that key exists, it will create one. Using that method is more " "convenient than creating a new property set with a new ID and assigning that properties ID.\n" "This method may change the properties ID. " + "Note: GDS only supports integer keys. OASIS supports numeric and string keys. " "\n" "This method has been introduced in version 0.24." ) + diff --git a/src/db/db/gsiDeclDbShape.cc b/src/db/db/gsiDeclDbShape.cc index b0ae59e3b..1062c1374 100644 --- a/src/db/db/gsiDeclDbShape.cc +++ b/src/db/db/gsiDeclDbShape.cc @@ -1283,6 +1283,7 @@ Class decl_Shape ("db", "Shape", "If no property with that key exists, it will create one. Using that method is more " "convenient than creating a new property set with a new ID and assigning that properties ID.\n" "This method may change the properties ID. " + "Note: GDS only supports integer keys. OASIS supports numeric and string keys. " "Calling this method will invalidate any iterators. It should not be called inside a " "loop iterating over shapes.\n" "\n" diff --git a/src/lay/lay/doc/programming/database_api.xml b/src/lay/lay/doc/programming/database_api.xml index 152ac2bff..07fe4b06a 100644 --- a/src/lay/lay/doc/programming/database_api.xml +++ b/src/lay/lay/doc/programming/database_api.xml @@ -473,6 +473,13 @@ shape.set_property(1, "NewValue") and "delete_property" also are provided for cells and cell instances ( and ).

+

+ Note: The GDS format does not have string names for properties. As a result GDS only supports numeric property keys. + OASIS, on the other hand, can handle string and numeric property "names". When saving layouts in GDS format, KLayout tries + to convert the properties' names into numbers if possible (i.e. if it sees that the string is a number). If it can't, then + the property is not saved. When the layout is read by KLayout upon opening, it gets converted to integer. +

+

The LayerInfo class