后仿真中《SDF反标必懂连载篇》之 SDF 文件由来
今天,聊聊后仿的sdf文件信息来源。
sdf是延时文件,用来进行时序分析以及综合后仿真、后仿真的,不是时序约束文件。
后仿用的时序信息通常包括延迟信息、时序检查时间。
一般都用标准的SDF(standard delay format)格式的文件提供。
在SDF中有两种类型的延迟信息。一种是连线的延迟信息;另一种是单元的延迟信息。
连线的延迟信息不多说,单元的延迟通常是根据单元时序库(timing library)中定义的timing arc,从电路图形中间接提取计算出来的,而这些timing arc,要和仿真模型中(specify block)定义的io path要一一对应,在反标过程中才能标注成功。
那为什么叫反标呢?因为通常设计电路都是根据事先定义好的设计规格,而设计规格中就包含了时序的规格(例如SDC)。所以当电路设计好了,时序信息也确定了,把这些时序信息标注到电路的网表中,实际上是一个回溯的过程,所以叫反向标注。SDF实际上也可以提供类似SDC一样的前向标注的时序信息,指导电路的设计实现。
另一方面,基础单元的仿真模型中默认也是有时序信息的,通常是单位时间或者零时间。所以用电路的真实时序信息标注的过程,其实是一个覆盖默认时序信息的过程,所以也叫反标。覆盖这个概念特别重要。因为只有原来有,才谈得上覆盖。很多SDF标注的错误和警告,追根溯源都是和覆盖有关的。
SDF文件通常是STA工具(读入网表、时序库、RC参数),间接计算而产生的延迟信息文件。
后仿的时候注意SDF的版本和仿真模型的版本要保持一致。
某个corner的SDF中,通常会有一组或两组或三组时序值,max、typical、min(MTM)。在仿真器读入SDF的时候,要指定使用哪一组。
STA产生SDF的过程中,可以把异步接口部分的时序检查禁止掉(通过放松检查时间),比如2-DFF的同步逻辑中的第一级DFF的setup和hold检查。从这里也可以看出代码风格的重要性,代码风格好,STA工具可以很轻松的把这些寄存器逻辑用某种模式匹配出来。代码风格不好的话,只能通过有问题的后仿的多次迭代,把这些地方分批找出来,效率可想而知。
通过对网表的分析和抓取,还可以生成在仿真过程调用的初始化寄存器值的脚本,避免X态不必要的传递。