文章

面向未来的TCAD仿真环境——Python

众所周知,Sentaurus从2022版本开始加入了Python的api,到202409版本时已经实现了不少功能,据说是tcad团队招了不少搞ai的人,那自然不可避免的得和Python打交道,可预见的,在未来,sentaurus里的各类工具都会用Python api重新写一遍(也不算重新写吧,比如目前版本的sdevice的就是python转换成原来的tcl,相当于又加了一层转译),届时通过TCAD做一些和AI相关的工作会更加方便。

既然用了Python,那用什么IDE就可以五花八门了(不过用什么IDE都比原来的jedit环境更好就是了)。下面提供一个个人感觉比较舒服的开发环境。

TCAD云开发环境:Code-Server

考虑到TCAD本身需要用到GUI的地方主要是swb和svisual,大量的开发时间其实还是在码代码上(不对,应该是等待仿真完成的过程😭),而传统的jedit开发环境需要先通过VNC远程控制服务器的GUI,再从GUI去打开jedit。由于传输的是图像,jedit的代码都是模糊的,会看的比较累,最重要的点是jedit基本没有代码补全和函数提示的能力,如果忘了什么函数的参数,就得去翻manual,甚是烦人。

因此可以设想一个理想的开发环境:传统对GUI的操作(swb,svisual)不变,但是把代码开发环境从原来的jedit搬到云上,即在TCAD服务器上再部署一个云端开发服务,然后直接通过Web来访问这个开发环境。

而这个云端开发服务就可以是Code-Server。Code-Server可以认为是一个VSCode的Web版本,VSCode的生态,那比jedit不知道高到哪里去了。这样进行TCAD仿真时,就可以打开两个界面:一个浏览器+一个远程访问服务器的GUI软件,不用GUI的话甚至打开一个浏览器就能完成TCAD仿真(随时随地都能搬砖了,可喜可贺)。

安装过程+效果展示

我的TCAD服务器运行的是CentOS Stream 8,演示的安装过程对于CentOS/Almalinux/Rockylinux应该都适用。

下载和安装Code-Server

参考教程

release页面下载code-server-xxx-amd64.rpm到服务器。

切换到root用户,安装,并为某用户名为tcadusername的用户开启code-server自启动:

[root@Cent8-TCAD2409SP1 ~]# ls
code-server-4.103.1-amd64.rpm
[root@Cent8-TCAD2409SP1 ~]# rpm -i ./code-server-4.103.1-amd64.rpm 
[root@Cent8-TCAD2409SP1 ~]# systemctl enable --now code-server@tcadusername
Created symlink /etc/systemd/system/default.target.wants/code-server@tcadusername.service ? /usr/lib/systemd/system/code-server@.service.

现在打开服务器内的浏览器访问http://127.0.0.1:8080,输入~/.config/code-server/config.yaml下面自动生成的密码(修改密码也在这里进行,如果要内网穿透,记得把ip改成0.0.0.0),能正常登录就没问题。

安装python插件

如果你的TCAD服务器可以联网,那就直接在web端的插件市场里安装python插件以及其他你想要的插件即可;否则需要手动安装离线插件包,然而万恶的微软在官方的插件市场关闭了.vsix文件的下载,这里推荐一个第三方网站,可以去这里下载离线插件包。

然后以tcadusername的用户安装离线插件包:

code-server --install-extension ./ms-python.python-2025.4.0.vsix 

环境设置

找到gpythonsh的路径(取决于sentaurus的安装位置)

[tcadusername@Cent8-TCAD2409SP1 ~]$ which gpythonsh 
/usr/synopsys/sentaurus/W-2024.09-SP1/bin/gpythonsh

打开web的vscode,在设置里点remote后搜索interpreter,并设置成上述路径:

Snipaste_2025-08-24_13-02-04.png

至于其他的默认文件夹就按照自己的STDB路径设置,这里不赘述了。

然后随便打开一个代码文件检查代码补全功能应该都能正常运行了:

f9b99924-9c95-49b7-a047-6b85fea581f9.png

swb修改默认editor

前面的步骤基本上配置完了Code-Server,但是发现,当我们在GUI中要修改某个tool的代码时,原先只要在GUI中自动打开jedit就行,现在需要在Code-Server里面的路径里手动找代码文件,这太麻烦,有没有一种方法可以在GUI中打开代码后,Code-Server也自动打开那个文件?有的兄弟,有的。

解决方法很简单,直接在SWB-Edit-Preferences-Utilities-Editor里,把原来的jedit改成code-server即可!

至此,大功告成🎆

许可协议:  CC BY-NC-SA 4.0