EMX 界面定制进阶:精确控制每一个字段
在之前的文章中,由于 EMX (Integrand/Cadence) 的界面字段较多,我们介绍了使用 EMX_form_init_proc 钩子函数来定制初始值。那么,界面上琳琅满目的文本框、复选框和下拉菜单,在 SKILL 中对应的具体属性名(Property Name)到底是什么呢?
通过对 Cadence Support 文档的调研,我们整理了这份详尽的映射表,涵盖了“EMX”主界面和“EMX options”高级界面。
一、 属性命名规则
EMX 界面的 SKILL 属性命名遵循一个非常简单的规则:将 UI 标签(Label)中的空格替换为下划线 (_)。
- 文本框/字符串字段:使用字符串赋值,例如
form->Edge_mesh->value = "1.0"。 - 复选框 (Checkbox):使用布尔值,例如
form->Global_ref->value = t(开启) 或nil(关闭)。 - 循环/下拉菜单 (Cyclic/Combo):使用对应的显示字符串,例如
form->Mode->value = "RLC"。
二、 EMX 主界面 (Main Form) 映射表
以下是主界面常见的可控字段:
| UI 标签 (Label) | SKILL 属性名 (Property Name) | 示例用法 |
|---|---|---|
| Process | Process |
main->Process->value = "my_proc.proc" |
| Edge mesh | Edge_mesh |
main->Edge_mesh->value = "1" |
| Thickness | Thickness |
main->Thickness->value = "1" |
| Via merge | Via_merge |
main->Via_merge->value = "0.5" |
| 3D metals | 3D_metals |
main->3D_metals->value = "*" |
| Signals | Signals |
main->Signals->value = "P1 P2" |
| Global ref | Global_ref |
main->Global_ref->value = t |
| Start freq | Start_freq |
main->Start_freq->value = "1e+08" |
| Stop | Stop |
main->Stop->value = "2e+10" |
| Step | Step |
main->Step->value = "1e+08" |
| Results (sim) | sim |
main->sim->value = t |
| Results (mod) | mod |
main->mod->value = nil |
三、 EMX options 高级界面 (Advanced Form) 映射表
点击 “Advanced options” 弹出的窗口字段映射如下:
| UI 标签 (Label) | SKILL 属性名 (Property Name) | 示例用法 |
|---|---|---|
| Capacitive vias | Capacitive_vias |
adv->Capacitive_vias->value = "" |
| Cadence pins | Cadence_pins |
adv->Cadence_pins->value = t |
| Mode | Mode |
adv->Mode->value = "RLC" |
| Full-wave | Full_wave |
adv->Full_wave->value = nil |
| Dynamic range | Dynamic_range |
adv->Dynamic_range->value = "standard" |
| Run mode | Run_mode |
adv->Run_mode->value = "Full flow" |
| PZ method | PZ_method |
adv->PZ_method->value = "none" |
| Use bsub | Use_bsub |
adv->Use_bsub->value = nil |
| Bsub options | Bsub_options |
adv->Bsub_options->value = "-q normal" |
| Work dir | Work_dir |
adv->Work_dir->value = "./EMX_work" |
四、 综合配置示例 (emxconfig.il)
你可以将以下逻辑放入你的 emxconfig.il 中,实现一键配置:
procedure( CorporateStandardEMXInit(mainForm advForm)
;; 1. 设置主界面参数
mainForm->Edge_mesh->value = "1.5"
mainForm->Via_merge->value = "0.3"
mainForm->Global_ref->value = t
;; 2. 设置高级选项
advForm->Mode->value = "RLC"
advForm->Run_mode->value = "Full flow"
advForm->Use_bsub->value = t
advForm->Bsub_options->value = "-q standard -n 8"
;; 3. 结果显示勾选 (sim/mod/pz)
mainForm->sim->value = t
mainForm->mod->value = t
mainForm->pz->value = nil
printf("--- EMX Setup: Corporate standards applied successfully. ---\n")
)
;; 挂载到初始化钩子
EMX_form_init_proc = 'CorporateStandardEMXInit
五、 如何排查未列出的字段?
如果你遇到了文中未列出的特殊字段,可以使用以下技巧在 Virtuoso CIW (窗口) 中实时查询:
- 打开 EMX 界面。
- 在 CIW 窗口中输入:
EMX_mainForm->??或EMX_advancedForm->??。 - 这将列出该表单对象的所有属性名及其当前值。你可以根据显示的当前值反推字段的属性名。
[!IMPORTANT] emxconfig.il 的加载顺序 请确保在
.cdsinit中加载 EMX 相关的 SKILL 环境后再设置EMX_form_init_proc。如果你在启动后发现定制未生效,检查变量是否被后续的 PDK 设置覆盖。