Virtuoso配置.simrc来保存dspf后仿节点
1. 原理说明
DSPF 文件可以由多种工具生成,可能具有多种不同的格式。使得在 ADE 无法将原理图与提取后的名称进行映射。
在后仿后,使用Direct Plot从原理图中选择端口或信号无法生效,或者原理图创建的表达式在后仿dspf中不再可用,无法保存显示对应节点。这是电路原理图与 DSPF 文件之间缺乏映射所导致的。
常见的一些例子包括:
- 层级分隔符不匹配(常见的有
.或/) - 在 DSPF 中添加了前缀(如
X或M) - 指间分隔符不匹配(常见的有
@或#) - 端口名不一致(如
s与1的不匹配)
可以使用 .simrc 文件和一些设置手动将 DSPF 语法映射到原理图中。这些设置会在网表生成时被应用。内部的映射机制使得可以探测原理图中的网络和端口,无论是原理图还是 DSPF 文件,都可以使用相同的表达式。
2. .simrc配置文件内容
将.simrc文件保存到cds.lib同级目录下,Virtuoso会优先使用这个配置文件
该配置文件位于服务器路径/simulation/guest22_share/.simrc
; ensure that the netlist is recreated each time
nlReNetlistAll=t
dspfFileEnvOptions='(
(nil
spfFileNameMappingFormat "cdl"
spfFileTermDelimiter "#"
spfFileHierDelimiter "/"
spfFileFingerDelimiter "@"
spfDevicePrefixForMimcap "C"
spfFileNetMapping "lower"
spfFileTerminalMapping "lower"
spfFileAddPrefixToDevice t
spfFileAddContextSensitivePrefix "no"
spfFileDeviceDefaultPrefix "X"
spfFileDevicePrefixForTermCurrent "X"
spfFileDevicePrefixForMacroModels ""
spfFileDevicePrefixForOppints nil
)
)
3. 保存节点电压
3.1 使用To be saved/plotted保存
本方法仅适用于
ADE Explorer and Assembler
在 Options->Plotting/Printing 中,将Probing修改为Voltage或Current,然后To be saved/plotted选择对应的需要保存的节点,就能成功保存对应的节点电压(电流与电压在使用dspf后仿时都会保存节点电压)。


4. 网表与仿真结果
可以在生成的网表中,可以找到追加的save语句,确定是否有误。

仿真结果

5. 其他配置项与说明
| 变量名 | 描述 |
|---|---|
| spfFileNameMappingFormat | 网表文件格式。有效值:"cdl"、"spectre"若给出其他值,系统会将其重置为"cdl"。默认值:"cdl" |
| spfFileTermDelimiter | 保存端口电流时使用的分隔符,需要设置成":"或 "#"。默认值:" " |
| spfFileAddPrefixToDevice | 是否将由其他spf变量定义的前缀(例如spfFileDeviceDefaultPrefix、spfFileDevicePrefixForTermCurrent和spfFileDevicePrefixForOppoints)添加到器件名称中。默认值:"t" |
| spfFileAddContextSensitivePrefix | 指定需要在DSPF块级别以下的器件名称中添加多少个前缀。不影响DSPF块的名称。设置为"yes"时,器件名称会获得由namePrefix字段或spfFileDeviceDefaultPrefix变量指定的前缀。设置为"no"时,器件名称会根据.simrc文件或CDF属性中指定的前缀进行修改 |
| spfDevicePrefixForMimcap | mimcap器件前缀。默认值:"C" |
| spfFileHierDelimiter | 层次分隔符。此变量应设置为DSPF头部部分中的DIVIDER设置。默认值:"." |
| spfFileTerminalMapping | 映射端口名称时使用的字符大小写有效值:"mixed"(M0@Term1)、"lower"(M0@term1)、"upper"(M0@TERM1)、"spectre"(M0@1)。默认值:"lower" |
| spfFileFingerDelimiter | 多指器件分隔符,设置为DSPF文件中使用的分隔符。默认值:"@" |
| spfFileDevicePrefixForMacroModels | 在部分PDK中,MOS晶体管作为模型实现,在LVS和提取过程中会加上前缀。默认值:"X" |
| spfFileDeviceDefaultPrefix | 指定当在CDF的namePrefix字段中没有指定前缀使用的默认器件前缀。默认值:nil |
| spfFileNetMapping | 指定映射端口名称时使用的字符大小写有效值:"mixed"(使用大写或小写混合)、"lower"(小写)、"upper"(大写) |
| spfFileDevicePrefixToOverrideCDF | 覆盖CDF中simInfo部分的namePrefix字段中指定的值。默认值:"X" |
| spfFileDevicePrefixForTermCurrent | 用于标识器件在映射端口电流时使用的前缀。仅适用于MOS器件。默认值:"X" |
| spfFileDevicePrefixForOppoints | 用于标识顶层器件在操作点映射时使用的前缀。默认值:nil |
| spfFilePrefixForBoxedDevice | BoxedDevice的前缀,即DSPF内嵌的DSPF器件。默认值:"X" |
| spfFileBoxedDeviceList | BoxedDevice的名称列表,这些BoxedDevice会使用spfFilePrefixForBoxedDevice变量指定的前缀。默认值:nil |