{"id":18520103,"url":"https://github.com/thomashirtz/pytaurus","last_synced_at":"2025-08-21T13:32:54.977Z","repository":{"id":114669948,"uuid":"305977087","full_name":"thomashirtz/pytaurus","owner":"thomashirtz","description":"Repository that provide a wrapper to use the software TCAD Sentaurus with Python.","archived":false,"fork":false,"pushed_at":"2024-07-04T20:53:44.000Z","size":208,"stargazers_count":41,"open_issues_count":2,"forks_count":7,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-12-07T16:34:11.184Z","etag":null,"topics":["plt","plt-file","python","sdevice","semiconductor","sentaurus","sprocess","tcad"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thomashirtz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-10-21T09:42:13.000Z","updated_at":"2024-11-04T20:22:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"7e41e4bd-55d2-48e1-b1d5-e58a19394a76","html_url":"https://github.com/thomashirtz/pytaurus","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomashirtz%2Fpytaurus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomashirtz%2Fpytaurus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomashirtz%2Fpytaurus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomashirtz%2Fpytaurus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thomashirtz","download_url":"https://codeload.github.com/thomashirtz/pytaurus/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230516191,"owners_count":18238353,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["plt","plt-file","python","sdevice","semiconductor","sentaurus","sprocess","tcad"],"created_at":"2024-11-06T17:18:37.039Z","updated_at":"2024-12-20T00:08:43.199Z","avatar_url":"https://github.com/thomashirtz.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pytaurus\nRepository that provide a wrapper to use the software [Sentaurus TCAD](www.synopsys.com) with Python. \u003cimg align=\"right\" width=\"350\"  src=\"finfet.png\"\u003e\n\n\n## Projects\n\n### Basics\nImport the library and create an instance\n```python\nfrom pytaurus import Project\n\npath = '/path/to/TCAD/project'\nproject = Project(path)\n```\n\n### Running simulations\nRunning a simple simulation:\n```python\nexit_code = project.gsub()\n```\n\nIt is also possible to choose the nodes to simulate by giving a list of integer:\n```python\nexit_code = project.gsub(nodes=[1, 2, 3])\n```\n\n### Cleaning project\n```python\nexit_code = project.gcleanup()\n```\n\n### Custom environment\nWhen remotely calling subprocess call, it can happen that issue related to the environment variable arise.\n\nsuch error include and are not limited to:\n```\nJob failed\nError: set ISEDB environment variable\ngjob exits with status 1\n```\n\nIf such error arises, it is possible to manually set needed environment variables for the smooth running of the\nsimulation.\n```python\nfrom pytaurus import Project\n\npath = '/path/to/TCAD/project'\nproject = Project(path)\n\ntcad_path = '/usr/synopsys/L_2016/bin'\nscl_path = '/usr/synopsys/SCL/linux64/bin'\nlicense_path = '/usr/synopsys/SCL/admin/license/license.dat'\nstdb_path = '/home/user/STDB'\n\nproject.set_environment(\n    tcad_path=tcad_path,\n    scl_path=scl_path,\n    license_path=license_path,\n    stdb_path=stdb_path\n)\n\nexit_code = project.gsub()\n```\nThe environment can also be passed directly when creating the instance:\n```python\nproject = Project(path, environment=custom_environment)\n```\nOr when cleaning or running the project:\n```python\ngsub_exit_code = project.gsub(environment=custom_environment)\ngclean_exit_code = project.gcleanup(environment=custom_environment)\n```\n\n**Note:** When calling subprocess, the argument `shell` is set to `True`. It does implicate [security considerations](https://docs.python.org/3/library/subprocess.html#security-considerations)\neven if this argument is needed for running simulation (When `shell` is set to `False`, there are issues with environment variables, moreover, it is impossible to use a custom environment if the shell is not invoked)\n\n## PLT Files\nThis repository contains a very simple class to convert \"plt\" file to different formats such as dataframe, csv or dictionary. The class can be easily added to your project. This allows to efficiently process files coming from software such as [Sentarurus TCAD](www.synopsys.com).\n\nA raw plt file is also provided to test the script. The file was downloaded from the [National Tsinghua University website](http://semiconductorlab.iwopop.com/). It is part of the [3D TCAD Simulation for CMOS Nanoeletronic Devices](https://www.springer.com/gp/book/9789811030659) book.\n\n### Basics\nImport the library and create an instance\n```python\nfrom pytaurus import PLTFile\n\nfilepath = 'file.plt'\nplt_file = PLTFile(filepath)\n```\nGetting the keys\n```python\nkeys = plt_file.get_keys()\nprint(keys)\n```\n\n### Conversions\nThe different conversions:\n```python\n# Dataframe\ndataframe = plt_file.to_dataframe()\nprint(dataframe)\n\n# CSV file\npath_csv_file = 'file.csv'\nplt_file.to_csv(path_csv_file)\n\n# Dictionary\ndictionary = plt_file.to_dict()\nprint(dictionary)\n```\n\nIt is also possible to filter the wanted keys during the conversion\n```python\nkeys = ['d_total_current', 'd_inner_voltage']\ndictionary = plt_file.to_dict(keys=keys)\nprint(dictionary)\n```\n\n### Keys and Kwargs\nBy default, the keys in the files are in the form \"D Total Current\", however, to make the name more pythonic, they are converted by default to snake case ex: \"d_total_current\" (by replacing spaces by underscore and removing uppercase). The `snake_case` argument allows to enable and disable this feature (`True` by default).\n\n## Installation\nThis library contains only a few helper functions. It is therefore possible to integrate them directly in your project.\nOtherwise, the command to install the repository via pip is:\n```python\npip install git+https://github.com/thomashirtz/pytaurus#egg=pytaurus\n```\n\n## Citation\n\nIf you use this software in your research, please cite article that led to the creation of this tool :)\n\n```\n@article{hirtz2021framework,\n  title={Framework for TCAD augmented machine learning on multi-I--V characteristics using convolutional neural network and multiprocessing},\n  author={Hirtz, Thomas and Huurman, Steyn and Tian, He and Yang, Yi and Ren, Tian-Ling},\n  journal={Journal of Semiconductors},\n  volume={42},\n  number={12},\n  pages={124101},\n  year={2021},\n  publisher={IOP Publishing}\n}\n```\n\n## License\n\n     Copyright 2021 Thomas Hirtz\n\n     Licensed under the Apache License, Version 2.0 (the \"License\");\n     you may not use this file except in compliance with the License.\n     You may obtain a copy of the License at\n\n         http://www.apache.org/licenses/LICENSE-2.0\n\n     Unless required by applicable law or agreed to in writing, software\n     distributed under the License is distributed on an \"AS IS\" BASIS,\n     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     See the License for the specific language governing permissions and\n     limitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomashirtz%2Fpytaurus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthomashirtz%2Fpytaurus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomashirtz%2Fpytaurus/lists"}