本篇介绍如何实现逻辑上的分支流程控制
例:在同一个项目中,想比较Mask_A和Mask_B,就需要用罗辑判断来控制分支
image.png

用到两个关键点
swb的#-Commands(在swb_ug中查阅)
tcl的string compare(在Training→Tool Command Lauguage中有介绍)

示例

command …
#if [string compare @mask@ "Mask_A"] == 0
command a …
#elseif [string compare @mask@ "Mask_B"] == 0
command b …
#endif

语句功能:比较@mask@和”Mask_A”是否相同,相同则执行command a …

解释:
string compare是字符串比较,如果比较的两个字符串相同,计算结果返回0;
“Mask_A”必须加引号,来表示这是一个字符串
#if/#endif是swb的判断逻辑语句,必须加#;
#if [0] == 0,则判断成功,进入if里的内容执行。两个等好==用来判断等会两边是否相等


其他写法2

command …
#if ("@mask@" == "Mask_A")
command a …
#elseif ("@mask@" == "Mask_B")
command b …
#endif

其他写法3

set mask_tem @mask@
command …
if {$mask_tem == "Mask_A"} {
command a …
} elseif {$mask_tem == "Mask_B"} {command b …
}

这里command a的左括号必须接在if那一行


最推荐的还是前两种写法,前两种可以在Preprocess Nodes的时候就把if语句运行完成。而写法3要在实际运行到那一步的时候再进行判断,有可能你运行到一半,才发现if这里有个错误,又要重新运行。
写法1和写法2是sentaurus示例里给的,写法2更简洁一点

发表评论

电子邮件地址不会被公开。 必填项已用*标注