From c1aecc05e6cad977423a15905f6bd4f5f33b53c8 Mon Sep 17 00:00:00 2001 From: Nilay Vaish Date: Sat, 11 Oct 2014 16:16:00 -0500 Subject: ext: dsent: adds a Python interface, drops C++ one This patch extensively modifies DSENT so that it can be accessed using Python. To access the Python interface, DSENT needs to compiled as a shared library. For this purpose a CMakeLists.txt file has been added. Some of the code that is not required is being removed. --- ext/dsent/tech/TechModel.cc | 44 +++++++++++++++++++++++------- ext/dsent/tech/TechModel.h | 29 ++++++++++++++++++-- ext/dsent/tech/tech_models/Bulk22LVT.model | 20 ++++++++++++++ ext/dsent/tech/tech_models/Bulk32LVT.model | 20 ++++++++++++++ ext/dsent/tech/tech_models/Bulk45LVT.model | 20 ++++++++++++++ ext/dsent/tech/tech_models/Photonics.model | 20 ++++++++++++++ ext/dsent/tech/tech_models/TG11LVT.model | 20 ++++++++++++++ 7 files changed, 161 insertions(+), 12 deletions(-) (limited to 'ext/dsent/tech') diff --git a/ext/dsent/tech/TechModel.cc b/ext/dsent/tech/TechModel.cc index 5922177ad..67ffbbc97 100644 --- a/ext/dsent/tech/TechModel.cc +++ b/ext/dsent/tech/TechModel.cc @@ -1,3 +1,24 @@ +/* Copyright (c) 2012 Massachusetts Institute of Technology + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #include "tech/TechModel.h" #include @@ -7,12 +28,17 @@ namespace DSENT { TechModel::TechModel() - : Config(), m_std_cell_lib_(NULL), m_available_wire_layers_(NULL) + : m_std_cell_lib_(NULL), m_available_wire_layers_(NULL) {} TechModel::~TechModel() {} + const String& TechModel::get(const String &key_) const + { + return params.at(key_); + } + void TechModel::setStdCellLib(const StdCellLib* std_cell_lib_) { m_std_cell_lib_ = std_cell_lib_; @@ -32,17 +58,16 @@ namespace DSENT void TechModel::readFile(const String& filename_) { // Read the main technology file - LibUtil::Config::readFile(filename_); + LibUtil::readFile(filename_, params); // Search for "INCLUDE" to include more technology files - StringMap::ConstIterator it; - for(it = begin(); it != end(); ++it) + for (const auto &it : params) { - const String& key = it->first; + const String& key = it.first; if(key.compare(0, 8, "INCLUDE_") == 0) { - const String& include_filename = it->second; - LibUtil::Config::readFile(include_filename); + const String& include_filename = it.second; + LibUtil::readFile(include_filename, params); } } @@ -53,7 +78,6 @@ namespace DSENT { m_available_wire_layers_->insert(available_wire_layer_vector[i]); } - return; } //------------------------------------------------------------------------- @@ -314,7 +338,7 @@ namespace DSENT //------------------------------------------------------------------------- TechModel::TechModel(const TechModel& tech_model_) - : Config(tech_model_), m_std_cell_lib_(tech_model_.m_std_cell_lib_) + : m_std_cell_lib_(tech_model_.m_std_cell_lib_), + params(tech_model_.params) {} } // namespace DSENT - diff --git a/ext/dsent/tech/TechModel.h b/ext/dsent/tech/TechModel.h index 92e5a30ac..a4578f168 100644 --- a/ext/dsent/tech/TechModel.h +++ b/ext/dsent/tech/TechModel.h @@ -1,3 +1,24 @@ +/* Copyright (c) 2012 Massachusetts Institute of Technology + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #ifndef __DSENT_TECH_TECH_MODEL_H__ #define __DSENT_TECH_TECH_MODEL_H__ @@ -15,7 +36,7 @@ namespace DSENT using std::vector; using LibUtil::String; - class TechModel : public LibUtil::Config + class TechModel { public: typedef std::set::const_iterator ConstWireLayerIterator; @@ -25,6 +46,9 @@ namespace DSENT virtual ~TechModel(); public: + // Get the value_ corresponding to the key_ + const String& get(const String& key_) const; + // Set the pointer to a standard cell library void setStdCellLib(const StdCellLib* std_cell_lib_); // Get the pointer to the standard cell library @@ -64,8 +88,9 @@ namespace DSENT const StdCellLib* m_std_cell_lib_; // A set of available wire layers std::set* m_available_wire_layers_; + // A map of model's parameters + std::map params; }; // class TechModel } // namespace DSENT #endif // __DSENT_TECH_TECH_MODEL_H__ - diff --git a/ext/dsent/tech/tech_models/Bulk22LVT.model b/ext/dsent/tech/tech_models/Bulk22LVT.model index e2087a12d..d1cdb93ec 100644 --- a/ext/dsent/tech/tech_models/Bulk22LVT.model +++ b/ext/dsent/tech/tech_models/Bulk22LVT.model @@ -1,3 +1,23 @@ +# Copyright (c) 2012 Massachusetts Institute of Technology +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + # WARNING: Most commercial fabs will not be happy if you release their exact # process information! If you derive these numbers through SPICE models, # the process design kit, or any other confidential material, please round-off diff --git a/ext/dsent/tech/tech_models/Bulk32LVT.model b/ext/dsent/tech/tech_models/Bulk32LVT.model index 9a90bdaf9..2514407db 100644 --- a/ext/dsent/tech/tech_models/Bulk32LVT.model +++ b/ext/dsent/tech/tech_models/Bulk32LVT.model @@ -1,3 +1,23 @@ +# Copyright (c) 2012 Massachusetts Institute of Technology +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + # WARNING: Most commercial fabs will not be happy if you release their exact # process information! If you derive these numbers through SPICE models, # the process design kit, or any other confidential material, please round-off diff --git a/ext/dsent/tech/tech_models/Bulk45LVT.model b/ext/dsent/tech/tech_models/Bulk45LVT.model index d8015c522..2398d781d 100644 --- a/ext/dsent/tech/tech_models/Bulk45LVT.model +++ b/ext/dsent/tech/tech_models/Bulk45LVT.model @@ -1,3 +1,23 @@ +# Copyright (c) 2012 Massachusetts Institute of Technology +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + # WARNING: Most commercial fabs will not be happy if you release their exact # process information! If you derive these numbers through SPICE models, # the process design kit, or any other confidential material, please round-off diff --git a/ext/dsent/tech/tech_models/Photonics.model b/ext/dsent/tech/tech_models/Photonics.model index 335e1e832..9e33c710d 100644 --- a/ext/dsent/tech/tech_models/Photonics.model +++ b/ext/dsent/tech/tech_models/Photonics.model @@ -1,3 +1,23 @@ +# Copyright (c) 2012 Massachusetts Institute of Technology +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + # This file contains the model for photonic devices/circuits PhotonicsName = Photonics diff --git a/ext/dsent/tech/tech_models/TG11LVT.model b/ext/dsent/tech/tech_models/TG11LVT.model index 292e40ab0..f1cb7eeae 100644 --- a/ext/dsent/tech/tech_models/TG11LVT.model +++ b/ext/dsent/tech/tech_models/TG11LVT.model @@ -1,3 +1,23 @@ +# Copyright (c) 2012 Massachusetts Institute of Technology +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + # WARNING: Most commercial fabs will not be happy if you release their exact # process information! If you derive these numbers through SPICE models, # the process design kit, or any other confidential material, please round-off -- cgit v1.2.3