SDF文件(Standard Delay File)提供了延迟信息表示的标准ASCII文件格式,VCS支持版本1.0、1.1、2.0、2.1和3.0。

在SDF格式中可以指定固有延迟(intrinsic delays),互连延迟(interconnect delays),端口延迟(port delays),时序检查(timing checks),时序约束(timing constraints)和路径脉冲(PATHPULSE)。

使用VCS读取SDF文件时,会将延迟值“反向标注(back-annotates)”到设计中,即在源文件中添加或者更改延迟值。

可以使用$sdf_annotate系统任务进行反标,其使用格式如下。

$sdf_annotate(“sdf_file”[,module_instance][,“sdf_configfile”][,“sdf_logfile”][,“mtm_spec”][,“scale_factors”][,“scale_type”]);

其中:

"sdf_file":指定SDF文件的路径。

module_instance:指定反标设计的范围(scope)

“sdf_configfile”:指定SDF配置文件

“sdf_logfile”:指定VCS保存error 和warnings消息的SDF日志文件。也可以使用+sdfverbose runtime option来打印所有反标消息

"mtm_spec":指定延迟类型"MINIMUM(min)", "TYPICAL(typ)“或者"MAXIMUM(max)”。

"scale_factors":分别指定min:typ:max的缩放因子,默认是"1.0:1.0:1.0"

“scale_type”:指定缩放之前延迟值得来源,“FROM_TYPICAL”,“FROM_MIMINUM”, “FROM_MAXIMUM"和"FROM_MTM” (default).

下面通过一个振荡环(ring_oscillator)示例sdf文件和$sdf_annotate的用法。

ring_oscillator.v

`timescale 1ns / 1ps

module ring_oscillator
(
input enable ,
output out
);
wire [2 : 0] inv_net;
INVX1 u1(.Y(inv_net[0]),.A(inv_net[2])) ;
INVX1 u2(.Y(inv_net[1]),.A(inv_net[0])) ;
NAND2X1 u3(.Y(inv_net[2]),.A(enable),.B(inv_net[1])) ;
assign out = inv_net[2] ;
endmodule

上述是振荡环的Verilog代码,直接使用门级单元例化,无需重新综合。


上述电路在功能仿真时不会振荡环,只有考虑真实电路的单元延时和线延时才会振荡。

使用Design Compiler读入该设计,然后吐出SDF文件。

(DELAYFILE
(SDFVERSION “OVI 2.1”)
(DESIGN “ring_oscillator”)
(DATE “Sun Feb 28 15:11:49 2021”)
(VENDOR “fast”)
(PROGRAM “Synopsys Design Compiler cmos”)
(VERSION “K-2015.06”)
(DIVIDER /)
(VOLTAGE 1.10:1.10:1.10)
(PROCESS “fast”)
(TEMPERATURE -40.00:-40.00:-40.00)
(TIMESCALE 1ns)
(CELL
(CELLTYPE"ring_oscillator")
(INSTANCE)
(DELAY
(ABSOLUTE
(INTERCONNECT enableu3/A (0.000:0.000:0.000))
(INTERCONNECT u2/Y u3/B(0.000:0.000:0.000))
(INTERCONNECT u1/Y u2/A(0.000:0.000:0.000))
(INTERCONNECT u3/Y u1/A(0.000:0.000:0.000))
)
)
)
(CELL
(CELLTYPE"NAND2X1")
(INSTANCE u3)
(DELAY
(ABSOLUTE
(IOPATH A Y(0.011:0.011:0.011) (0.014:0.014:0.014))
(IOPATH B Y(0.013:0.013:0.013) (0.016:0.016:0.016))
)
)
)
(CELL
(CELLTYPE"INVX1")
(INSTANCE u2)
(DELAY
(ABSOLUTE
(IOPATH A Y(0.009:0.009:0.009) (0.008:0.008:0.008))
)
)
)
(CELL
(CELLTYPE"INVX1")
(INSTANCE u1)
(DELAY
(ABSOLUTE
(IOPATH A Y(0.013:0.013:0.013) (0.010:0.011:0.011))
)
)
)
)

在testbench中使用$sdf_annotate系统函数:

initial
begin
$sdf_annotate(“ring_oscillator.sdf”,ring_oscillator);
end

界面打印出信息

*** $sdf_annotate() version 1.2R
*** SDF file: “ring_oscillator.sdf”
*** Annotation scope: ring_oscillator_tb.ring_oscillator
*** No MTM selection argument specified
*** No SCALE FACTORS argument specified
*** No SCALE TYPE argument specified
*** MTM selection defaulted to “TOOL_CONTROL”:
(+typdelays compiled, TYPICALdelays selected)
*** SCALE FACTORS defaulted to “1.0:1.0:1.0”:
*** SCALE TYPE defaulted to: “FROM_MTM”
*** Turnoff delay: “FROM_FILE”
*** Approximation (mipd) policy: “MAXIMUM”

然后就可以在DVE中看到振荡的输出了

本文转载自公众号:芯片数字实验室
原文链接:https://mp.weixin.qq.com/s/zaWsH06DLQWqqCoYSRoQLw
未经作者同意,请勿转载!

VCS门级仿真系列文章之sdf文件和$sdf_annotate反标相关推荐

  1. [VCS]数字电路门级仿真及SDF反标

    数字电路门级仿真及SDF反标 一.概述 从概念上来说,数字验证包含两方面的内容,一个是验证功能,另一个是验证时序.对应的仿真模型(不论是model,standard cell等)也不外乎这两个部分,功 ...

  2. 门级仿真经验(SDF反标及其工作原理)

    门级仿真经验(SDF反标及其工作原理) Standard Cell的仿真模型:首先我们先看一个stand cell的仿真模型 一般情况下,仿真模型包括两个部分,一个部分是功能部分也就是这个standc ...

  3. 今天为什么仍必须进行门级仿真(GLS)详细讲解

    下面我将详细描述捕获只有在GLS才能发现的16种类型芯片的致命bug的方式,这在我之前在文章中描述过.请确保阅读该文章以了解我在这里所说的内容. GLS成本VS收益率: 工程永远是金钱.是的,从技术上 ...

  4. SOC芯片门级仿真失败的原因分析及其解决办法

    一.跨时钟域 SOC芯片中存在数量众多的时钟域,为了解决时钟域之间的通信或数据交互问题,一种常用的方案是使用两级同步触发器进行同步(俗称打两拍),来自另一个时钟域的信号传输到本时钟域,由于该信号并没有 ...

  5. 数字后仿,SDF文件

    目录 数字后仿步骤: 什么是SDF文件? 如何反标SDF文件? (1)作为elaboration的选项 (2)使用系统函数$sdf_annotate 数字后仿步骤: 1.用时序计算工具生成时序信息存储 ...

  6. VCS使用SDF文件进行后仿反标

    概述 从概念上来说,数字验证包含两方面的内容,一个是验证功能,另一个是验证时序.对应的仿真模型(不论是model,standard cell等)也不外乎这两个部分,功能部分由逻辑,udp元件或gate ...

  7. RTL行为级仿真、综合后门级功能仿真和时序仿真

    数字电路设计中一般有源代码输入.综合.实现等三个比较大的阶段,而电路仿真的切入点也基本与这些阶段相吻合,根据适用的设计阶段的不同仿真可以分为RTL行为级仿真.综合后门级功能仿真和时序仿真.这种仿真轮廓 ...

  8. 后仿真如何反标SDF文件

    从概念上来说,数字验证包含两方面的内容,一个是验证功能,另一个是验证时序.对应的仿真模型(不论是model,standard cell等)也不外乎这两个部分,功能部分由逻辑,udp元件或gate构成, ...

  9. VCS+Verdi联合仿真教程

    最近由于在一家FPGA公司实习,公司的FPGA仿真和看波形工具是VCS+Verdi,由于这两样工具结合在一起有着极高的效率,也因此真切地感受到,与在学校仅仅使用vivado软件跑整个流程相比,真的是小 ...

最新文章

  1. eclipse查看mysql代码_在eclipse中查看Android源代码
  2. php中的装饰,详解PHP装饰模式的示例代码
  3. LeetCode 931. 下降路径最小和(DP)
  4. 数据结构--栈--浏览器前进后退应用
  5. JAVA中iterator与add的顺序问题
  6. 使用微软VS2015编写python代码
  7. 回不去原来是没有 实现这个 代理方法,
  8. 公开电子评标系统/公开评标打分展示系统_国内唯一的智能的PPT展示系统
  9. java字符串模糊匹配_正则表达式实现字符的模糊匹配功能示例
  10. 2022年南京大学软件工程专硕考研初试第二411分上岸经验贴
  11. X509Certificate证书如何获取16位长度serial number?
  12. c语言编程输出一到十,c语言编程输出1?
  13. 华为鸿蒙手机用大卡还是小卡,【荣耀3XPro评测】大卡+小卡双3G网络-中关村在线...
  14. 怎么在图片中添加表格?
  15. 极狐GitLab硬实力助力中国开源生态建设
  16. SQL Server必知必会
  17. oracle登录 报ora00604,oracle 表空间不足 ORA-00604 ORA-01653 ORA-02002 ORA-00604 ORA-01653
  18. 在位6年,谷歌GO语言负责人离职!曾带MongoDB、Docker走向辉煌
  19. 解决md文件中本地图片链接失效的方法
  20. 图像卷积原理及运算方法

热门文章

  1. 51单片机STC15W4K56S4控制步进电机28BYJ-48正反转
  2. echarts 地图tooltip提示框超出浏览器窗口怎么隐藏?
  3. 利用select监听stdin输入
  4. 安卓逆向_12 --- jeb工具的使用 ( 动态调试 smali 代码 【 普通调试 和 debug调试 】)...
  5. 一个被誉为硬件电路“除草机”的电路
  6. FileUpload选择图片并上传
  7. 人均劳动生产率的计算方法_劳动生产率是怎么计算的
  8. 自动控制系统-第一期
  9. linux 启动logstash_linux – 从bash脚本启动时Logstash shutdown停止
  10. 四舍六入五凑偶”的修约规则进行修约