为了保持 时钟在testflow中,多个测试项中连续运行,需要避免primary被激活。在PATTERN执行借宿时,break vector连续执行。当下一个测试项执行时,primary set被检查和重新激活。primary set被激活的过程会打断波形,造成器件的PLL失锁,器件状态丢失。以下使用multiport,break waveform以及FTCG 固件命令,以及时钟系统、使用“fract”语法来提高timing精度。
数字时钟生成:
MCLK:CLOCK BOARD时钟周期 2-5ns
若PORT1想得到10nS时钟周期、PORT2想得到25nS时钟周期、PORT3想得到30nS时钟周期。
只能通过设置MCLK频率,再通过一定的倍频、分频方式实现。
即ECLK_PORT1=10/4=2.5nS;ECLK_PORT2=25/8=3.125nS;ECLK_PORT3=50/31=3.1nS
SCLK即是求ECLK的最小公倍数:LCM(2.5 3.125 3.1)=387.5nS
SCLK周期过长,会导致不良影响:
时钟对齐,需要的死区时间过长。会影响PATTERN测试时间,SEARCH工具。
SCLK的计算:
fract()函数 ,直接告诉软件怎么计算,不用换算成小数再计算,示例如下。
PORT1:period = fract(40,100,ref)
PORT2:period = fract(32,100,ref)
PORT3:period = fract(62,100,ref)
LCM(40/100 32/100 62/100)=4960/100=49.6nS
LOOPBACK测试示例:
3个频率管脚需求:
XTAL_PORT: 54Mhz
HS_PORT:96Mhz~24Mhz
LS_PORT:HS_PORT/Xfact(4),即24Mhz~6Mhz
程序设置如下:
出现ERROR,解决方法如下:
使用fract()来确认MCLK的值:
PATTERN执行借宿时,XTAL时钟持续输出。
程序描绘波形如下:
可以使用系统自带的TML,跳过PRIMARY REACTIVATION,如下图:
但是 : 如果SPEC改变 ,timing会重新load,reload过程中,XTAL 时钟掉了,timing load完之后,XTAL继续输出时钟。
解决方法:使用相同的SPEC,设置不同的Timing Set,示例如下: