当前位置: 首页 > article >正文

带sdf 的post sim 小结

1.SDF文件主要内容

  Delays(module,device,interconnect,port)

  Timing checks(setup,hold,setuphold,recovery,removal,recrem)

  Timing constrains(pathconstraint,skewconstraint,sum,diff)

  Timing environment(arrival,departure,slack,waveform)

  包括design,时间,工艺,版本,电压,温度,延时信息,基本单元延时信息等。

2. 若SDF文件很大,可以进行预编译,dut.sdf文件变为dut.sdf_c

+csdf+precomp+file+dut.sdf  +csdf+precomp+dir+my_dir

3. sdf反标要留意error和warning,+sdfverbose打印出来尽量消除。有些warning是必须要消除的,比如:

(1)Warning-[SDFCOM_NL] Negative Limit Not Allowed/Warning-[SDFCOM_CFTC] Cannot find timing check

可能的原因:你的 sdf 里是 recrem, 但库的 Verilog model 不是。看库文件里是不是要加什么宏定义,比如+define+NTC +define+RECREM

(2)Warning-[SDFCOM_TANE] TIMINGCHECK Annotation Not Enabled/Warning-[SDFCOM_IANE] IOPATH Annotation Not Enabled

可能的原因:netlist逻辑与sdf文件不一致,反标失败,timing check失败。

4. timing violation中确认可以忽略的加no timing check,比如打两拍中的第一拍的寄存器。关闭no timing check的两种方式:

(1)+optconfigfile+notiming.list

instance{top.dut.reg}{noTiming};

(2)ucli

tcheck {top.dut.reg} SETUPHOLD -msg -disable

5.在仿真过程中,经常会遇到传输延迟和惯性延迟,用来模拟实际的互联线延迟和模块间延迟。分布式延迟在仿真时一般都作为惯性延迟处理。

5.1 传输延迟

传输延迟一般为输入信号变化到对应输出信号变化经过的时间,不会对输入信号进行滤除处理,所以传输延迟是一种绝对延迟,这种延迟类似于物理传输线的延迟,在仿真中用于模拟连线延迟。如下图所示,输入一般不会被滤除。

 5.2 惯性延迟

惯性延迟考虑了电路中存在大量的分布电容,信号在电路中传输存在对电容充放电效应,当输入较小宽度的脉冲将会被滤除,即不允许所有宽度小于指定延迟的脉冲通过电路单元,那么能够让对应输出有变化的最小脉冲宽度即为惯性延迟,是所有的电子器件均存在的一种延迟特性,因此为了使器件对输入信号的变化产生响应,信号变化后要维持足够长的时间,在仿真过程中,该延迟用于模拟元件延迟。一般原语、门单元、开关单元、连续赋值等中的延迟在模拟时均为惯性延迟。

如下图所示,输入较小脉冲宽度的信号被滤除:

在仿真elaboration时,增加如下仿真参数:“+transport_path_delays +pulse_r/<滤除百分比> +pulse_e/<滤除百分比>”等可在仿真阶段实现传输延迟的模拟,并且配置不同的滤除百分比,输出的结果也会有差异,一般输出结果为三种情况:滤除、通过、不定态

 其中“+pulse_r”和“+pulse_e”后指定的参数表示允许通过和滤除的信号的宽度占指定延迟的百分比。例如,如果指定延迟为5ns,参数为“+pulse_r/40”和“+pulse_e/80”(其中的40和80为百分比),那么小于2ns(5x(40%))的信号将被滤除,大于等于4ns(5x(80%))的信号将可以通过,介于两者之间的信号将输出不定太,如下例中data_in的第一个脉冲信号小于2ns被滤除,不能输出至data_out。第二、三个脉冲信号宽度均大于或等于4ns,所以均有效输出,第四个脉冲宽度为3ns,介于2ns和4ns之间,所以不能被有效输出,此时输出为不定态。

http://www.lryc.cn/news/2392704.html

相关文章:

  • 【面试】喜茶Java面试题目
  • 深入浅出:Spring IOCDI
  • PlankAssembly 笔记 DeepWiki 正交视图三维重建
  • 某验4无感探针-js逆向
  • js中common.js和ECMAScript.js区别
  • C语言操作Kafka
  • STM32架构解析
  • 在线政治采购系统架构构建指南
  • UHF RFID无源标签的芯片供电原理
  • 【NLP入门系列一】NLP概述和独热编码
  • 洛谷习题V^V
  • Wireshark 在 macOS 上使用及问题解决
  • 不同电脑同一个网络ip地址一样吗?如何更改
  • Qt使用智能指针
  • 微软 Azure AI Foundry(国际版)十大重要更新
  • Realsense D435i 使用说明
  • PostgreSQL如何更新和删除表数据
  • 【leetcode】704. 二分查找
  • Golang | 运用分布式搜索引擎实现视频搜索业务
  • 针对Helsinki-NLP/opus-mt-zh-en模型进行双向互翻的微调
  • 【笔记】Trae+Andrioid Studio+Kotlin开发安卓WebView应用
  • Github 2025-05-30Java开源项目日报Top10
  • Github上一些使用技巧(缩写、Issue的Highlight)自用
  • TextIn OCR Frontend前端开源组件库发布!
  • GitLens 教学(学习更新中)
  • C#中数据绑定的简单例子
  • VR 技术在农业领域或许是一抹新曙光​
  • 【JVM】Java程序运行时数据区
  • NVIDIA英伟达describe-anything软件本地电脑安装部署完整教程
  • 计算机视觉入门:OpenCV与YOLO目标检测