后仿之SDF 反标Warning的描述和解决

在后仿中SDF的反标log中Error是必须要解决的,但是Warning有时候可能并不会影响到实际的内容,而是工具严格的检查得到的一些警告,因此可能就需要我们仔细的来甄别是否warning需要被解决;针对此,将平时看到的一些warning进行整理,帮助之后解决这些问题:

1. SDFCOM_UHICD:Up-hierarchy Interconnect Delay ignored

     这个warning是指将hier间的delay放在device delay上体现,可以不用处理;对跨层次的端口标注INTERCONNECT delay时出现该warning,在层次铺平之后是不会有问题的。

2. SDFCOM_IWSBA:INTERCONNECT will still be annotated

    也不用处理,delay实际上也是反标了。

    vcs是无法识别assign语句代表的是单纯的连线还是作为一个device存在,所以当vcs检测到对assign语句反标INTERCONNECT delay时会报出该警告,但是依然会将INTERCONNECT delay标注。要求designer做出进一步的确认,如果确认assign只是连线,那么是可以选择屏蔽这条warning。不过我们是推荐使用相同的变量连接两个同一层级下cell的端口,并仅对这两个端口标注INTERCONNECT delay。

3. SDFCOM_INF: IOPATH not found

    这个一般是sdf和specify中的没有对应上,这个需要判别是否需要处理。
    这个会造成sdf反标失败  -- 要针对对应的case来判别有没有影响:
    clk  to clk 的警告应该还好;但是clk to Q -- 这个就要好好检查

4. SDFCOM_CFTC: Cannot find timing check

    这个一般是sdf和specify中的没有对应上;
    比如某些时候,两者中 一个是多bit一个是拆分bit,这个会造成match不上;对这种位宽拆分的可以在编译时添加: -tcheckvecsplit, 其他的情况就需要检查为何不匹配。需要被解决。

5. SDFCOM_TANE:TIMINGCHECK Annotation Not Enabled

    SDF中有timing check,但是verilog没有这个specify的指定,这个sdf 的约束就没有意义了
正常情况下是需要解决掉的。

6. SDFCOM_IANE: IOPATH Annotation Not Enabled

    SDF中有对应IOPATH约束,但是verilog没有这个specify的指定,这个sdf 的约束就没有意义了
正常情况下是需要解决掉的

7. SDFCOM_STCLOR: SCALED TC Limit Out of Range

    vcs 用32bit做为deay,所以就是2^31, 超过最大delay就会报;
有时候没有超过delay也会报,因为module没有指定timesale,但是采用的是top的timescale来计算,还是超过了。修改delay或者用 -override_timiescale= 重新指定timescale来覆盖之前的timescale来解决这个问题。

8. SDFCOM_RLTPD:RETAIN value larger than IOPATH delay

     RETAIN delay一定不能比IOPATH delay大。首先得去确认是否需要RETAIN,如果不需要就去掉RETAIN的编译选项,如果需要就去确认为什么出现这种不合理的延时关系

9. SDFCOM_SWC:Simple Wire Connection

    这个提示是啥Y->A之间不是简单的wire连接,在经过了几级assign,可能是会这么report的,但是delay还是吃上了的。可以不用修改,只要符合实际设计就可以。

10. SDFCOM_NICD: INTERCONNECT Delay encountere

    仿真器对应的处理是根据前后级的关系来处理的,可以参考:SDF 优先级和相关的概念
一般来讲,仿真工具在默认情况下,是会将负值当成0处理,这样一来,约束就会更紧
如果想正常处理这些负延迟数值,除了要添加仿真工具使能选项之外,还要确认SDF文件或者specify模型中,关于时序定义是否支持负值,比如$setup不支持,而$setuphold就支持。

    本质上都是因为负的延时无法被补偿为正值,需要仔细确认。

11. SDFCOM_NTCDNC- Negative Timing Check Did Not Converge

    当vcs无法converge多条negative timing check中的delay时会报告这条warning,可能有两种原因,第一种是vcs无法识别互斥condition导致的。第二种是timing出问题导致delay无法收敛,需要仔细检查并去解决;

12. SDFCOM_NDMD - NTC Delay is larger than ModPath Delay

    ModPath Delay小于NTC Delay是不合理的,需要解决。

备注1:针对3-6项,warning都是关于SDF 和Library model之间的不匹配导致的,当出现不匹配时vcs默认的行为是忽略SDF中多余的check和delay,需要前端和后端确认哪一个才是golden。

本节只摘录了部分的sdf warning的情况,实际上可能还有各种各样的类型,这里的warning都需要被认真的对待,这样才能保证sdf的反标没有问题,同时后仿也没问题,否则可能会导致大量且无效的debug的工作。

Read more

C++分布式语音识别服务实践

C++分布式语音识别服务实践

基于 brpc+etcd + 百度 AI SDK 的分布式语音识别服务实践:从代码架构到踩坑复盘 一、项目背景与核心功能 最近基于 C++ 实现了一个分布式语音识别子服务,核心目标是提供高可用的 RPC 接口,支持客户端上传 PCM 音频文件并返回识别结果。技术栈选型如下: * RPC 框架:brpc(百度开源高性能 RPC 框架,支持多种协议); * 数据序列化:Protobuf(定义 RPC 接口和数据结构); * 服务注册与发现:etcd(分布式键值存储,实现服务上下线感知); * 语音识别能力:百度 AI 语音 SDK(提供成熟的 PCM 音频转文字能力); * 日志与配置:spdlog(高性能日志库)、gflags(命令行参数解析)。 项目分为服务端和客户端两部分:

By Ne0inhk
C++ 抽象类与多态原理深度解析:从纯虚函数到虚表机制(附高频面试题)

C++ 抽象类与多态原理深度解析:从纯虚函数到虚表机制(附高频面试题)

🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录 * 前言: * 一. 纯虚函数与抽象类:强制接口规范的“契约” * 1.1 纯虚函数:没有实现的 “接口声明” * 1.2 抽象类:包含纯虚函数的 “不可实例化类” * 二. 多态的底层原理:虚表指针与虚函数表 * 2.1 虚表指针(vfptr):对象中的 “导航器” * 2.2 多态的实现原理 * 2.3 虚函数表(vtable):存储虚函数地址的 “数组” * 2.4 动态绑定与静态绑定 * 三. 关键问题辨析与总结

By Ne0inhk
《C++ 递归、搜索与回溯》第1题:汉诺塔问题

《C++ 递归、搜索与回溯》第1题:汉诺塔问题

🔥个人主页:Cx330🌸 ❄️个人专栏:《C语言》《LeetCode刷题集》《数据结构-初阶》《C++知识分享》 《优选算法指南-必刷经典100题》《Linux操作系统》:从入门到入魔 《Git深度解析》:版本管理实战全解 🌟心向往之行必能至 🎥Cx330🌸的简介: 前言: 聚焦算法题实战,系统讲解三大核心板块:“精准定位最优解”——优选算法,“简化逻辑表达,系统性探索与剪枝优化”——递归与回溯,“以局部最优换全局高效”——贪心算法,讲解思路与代码实现,帮助大家快速提升代码能力 目录 前言: 递归,搜索与回溯算法前置知识 1. 汉诺塔 算法原理(递归): 思路: 算法流程: 解法代码(C++): 博主手记(字体还请见谅哈): 结尾: 递归,搜索与回溯算法前置知识 1. 汉诺塔 题目链接: 面试题 08.

By Ne0inhk
【C++藏宝阁】C++入门:命名空间(namespace)详解

【C++藏宝阁】C++入门:命名空间(namespace)详解

🌈个人主页:聆风吟 🔥系列专栏:C++藏宝阁 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 * 📚专栏订阅推荐 * 📋前言:为什么需要命名空间? * 一、命名空间的定义 * 二、命名空间的使用 * 三、命名空间的特性 * 3.1 命名空间的嵌套定义 * 3.2 命名空间的定义可以不连续 * 四、命名空间的本质:独立的作用域 * 4.1 命名空间是C++的一种作用域类型 * 4.2 命名空间作用域的特点 * 4.3 域作用限定符 `::` 的作用 * 4.4 编译器的查找规则 * 五、命名空间的价值 * 5.1 解决命名冲突 * 5.2 模块化组织代码 * 5.3

By Ne0inhk