今天想来聊一聊timing model。Top层在做STA的时候,为了速度的考量,有的时候不会把所有block都做flatten(展平化)处理,而Timing model就是block在给更高层级用的时候所抽取出来的timing信息集。目前我知道有三种,ETM、ILM和HS,下面我分别来介绍一下。
ETM全称是Extracted Timing Model,它的思想很朴素,就是会把每个port的timing信息都保留下来,block内部的信息一概不知。从外来看,一个ETM就像一个黑盒子,只能看到block的port。它保留了in到out的延时,并且还有clk到in的setup/hold require time。其实ETM模型就很像我们用的cell的lib,都是只能看到它们的pin或者port,所得到的delay信息都是黑匣子式的,内部具体的delay都是被隐藏的。这种ETM模型的优点就是抽取速度快,但是缺点是不太准。比如Top层接进来一条net,flatten来看是一条,但如果使用ETM,等于硬是把他打成两端来算delay,结果当然就有所偏差。其准确度大概在90%左右。
第二种ILM是Interface Logic Model,它相比ETM来说,多保留了port到第一级reg的信息,包括所有net的信息及cell的信息,也就是in2reg和reg2out这些路径被保留下来给更高层级来用。而reg2reg的timing信息就被抽取出来,路径就不再保留。这样从top来看的话,可以看到block门口的那些cell和register,但是内部的cell就还是看不到。这种timing model抽取的速度相比ETM更慢,但准确度更高,一般可以到99%左右。另外值得一提的是,ILM是支持SI分析的,也就是说top层在用的时候可以分析in/out线和旁边的线的crosstalk影响。在block内部,如果开启SI分析模式,in/out net相邻的net也会被保留,即使这些net属于reg2reg的path。
第三种HS是HyperScale model,它是primetime出的一种timing lib,仅能用在primetime这一种timing分析工具中。它相比ILM,又多保留了一些东西,这些东西是in/out进来到第一级reg这条path的所有支路信息,也是到一个reg为止。有点绕,什么意思呢?比如说一个block input port进来的信号线,可能经过一个二输入与门,然后连到reg上。HS会多保留那个与门的另外一个输入到产生这个信号的reg这一段信息。对于output也是类似。可想而知,HS的速度会更慢,准确度也会更高。另外,使用HS时还有一个top context的概念,这个context就是指block外的和block port相连的一些timing信息,就是说不仅仅top层在做timing分析的时候可以用block的timing model,block层在做timing分析的时候也可以看到top层的一些东西,一般也是port到第一级reg为止的信息。据synopsys官网所述,HS model+context可以保证timing分析的准确度高达100%!和flatten一样的效果!
ILM模型可以在设计实现的任何一个已map 阶段提取,如:可以在Genus syn_map 之后提取,也可以在PrePlace, PreCts, PostCts, PostRoute 之后的任何一个阶段提取。不同阶段提取的ILM 模型的精度不同,适用场景不同。
Genus 用ILM 模型做hierarchical 综合的流程非常简单明了,如下图所示,如果当前没有sub module 的ILM 模型,可以先用Genus 对sub module 进行综合,并用命令 "generate_ilm" 生产一个ilm 模型;然后再综合上一层设计,在综合父级设计时关键的命令只有两个 " read_ilm " 跟 " assemble_design "。