做到这一点的方法是为给定的引脚设置两个时序选项,一个返回低电平,一个没有。
tester.set_timeset "mode_entry", 40
pin(:swd_clk).drive!(1)
# Sometime later once in mode
tester.set_timeset "func_swd", 40
如果测试仪支持(例如 V93K),您还可以在同一时间集中为引脚定义多个波形,如本指南部分末尾所示 - http://origen-sdk.org/origen/guides/pattern/timing /#Complex_Timing
然后,您只需选择一个时间设置并控制您想要的引脚上的波形,如下所示:
pin(:swd_clk).drive!(1) # Would be defined in the timing as always high
pin(:swd_clk).drive!('P') # Now start the clk pulse
这两种方法都适用于生成的 ATE 模式,但是在撰写本文时,我相信 OrigenSim 还不支持第二种方法,因此您将不得不使用多个时间集。
顺便说一句,您听起来好像只是在寻找一种在模拟中有效的解决方案,而不一定需要在最终的 ATE 模式中包含两种类型的波。
在这种情况下,您也可以尝试戳测试台的引脚驱动力数据位,尽管我没有尝试过:
tester.simulator.poke('origen.pins.swd_clk.force_data[1]', 1);
如果你成功了,我们应该考虑添加一个方便的 API 来在模拟中做这种事情:
pin(:swd_clk).force!(1)