ADS 眼图仿真加入eye mask的方法
1、tran 仿真,调用eye_probe 组件,勾选use eye mask,然后添加自己编辑的“xx.msk”文件,仿真结束后,可以从仿真数据中调用
2、DDR sim 仿真,调用eye_probe 组件,在DDR4 mask中填入mask的width和height,在measurement栏中,将DDR4MaskMargin 加入仿真,仿真结束后,可以从仿真数据中调用
3、调用memory probe,修改VIH_xx(AC),VIH_xx(DC)可以修改mask的高度,修改Tcivw可以修改mask的宽度
4、在DDS中,插入mask
如果想修改mask的值,1,2,3方法都需要再重新跑一次仿真。
第4种方法可以直接在仿真结果中反复修改。
ADS2024 update2 的DDS加入的python脚本的接口,方法4实现起来就非常轻松了。
脚本代码
脚本会自动找到所有的rect_plot 而且在添加mask前,会先删除原先的所有mask。
下面是添加方框mask的脚本。
import pathlib
import keysight.ads.dds.experimental as dds
ds_file_path = pathlib.Path(__file__).parent.resolve()
dds_file_name = "xxx" #DDS file name
bit_rate = 1e9
ui_time = 1/bit_rate
Vcivw = 0.1 # mask height(V)
Tcivw = 0.2 # mask width(ui)
vref = 0.5 # mask ref_v(V)
offset_x = 0.07 # (V)
x1 = ui_time - Tcivw * ui_time + offset_x * ui_time
y1 = vref + Vcivw
x2 = ui_time + Tcivw * ui_time + offset_x * ui_time
y2 = vref - Vcivw
dds_file = dds.open_dds_file(dds_file_name )
for page in dds_file.pages:
for obj in page.objects:
if dds.ObjectType.is_plot(obj):
if dds.ObjectType.is_rect_plot(obj):
for mask in obj.masks:
mask.delet_object()
obj.add_rectangle_mask("rec1",x1,y1,x2,y2)
下面是添加任意形状mask的脚本:
还没写,先占个坑