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 (窗口) 中实时查询:

  1. 打开 EMX 界面。
  2. 在 CIW 窗口中输入:EMX_mainForm->??EMX_advancedForm->??
  3. 这将列出该表单对象的所有属性名及其当前值。你可以根据显示的当前值反推字段的属性名。

[!IMPORTANT] emxconfig.il 的加载顺序 请确保在 .cdsinit 中加载 EMX 相关的 SKILL 环境后再设置 EMX_form_init_proc。如果你在启动后发现定制未生效,检查变量是否被后续的 PDK 设置覆盖。