当func clock的root都定义在mux前面,分开长tree有助于做短func tree,减少clock buffer,但当部分func clock的root定义在其他clock后面,如下图,分开长tree就会导致scan clock产生很大的skew,从而引起hold violation。
如图,func mode下,aclk的sink pin只有FF1/CK这一组,而FF2/CK是挂在bclk下的sink pin,如果长func tree时不加干涉,scan tree里FF2注定要比FF1 latency要长。
debug此类问题,注意观察guide buffer的名字,这里mux后有一个"bid" buffer,其意思为分隔ignore pin,进一步检查发现后面bclk的时钟。