继续综合这一趴,顺着流程往下,今天码SDC 的读入与检查,前序回顾《综合 | 概述及 library 检查》《综合 | LEF, QRC, DEF》《综合 | 设计读入与检查》,SDC 是数字实现的『准则』,所有的优化都以SDC 为目标。
SDC 通常由Designer 来完成,写SDC 需要对设计十分了解,是个精细活,因为SDC 是『行为准则』,所以对SDC 精准度的要求特别高,优秀的SDC 应该具备『不漏、不多、不过、不冗余』的特性。正规做法,都需要用单独的工具去验证SDC 的完备性跟精准度, 世面上有许多工具都可以做这事儿,除了检查SDC 基本的语法语意之外,更重要的是去检查设置的合理性、CDC 和RDC. 这部分内容今天不展开。
常用的SDC 命令按照目标可以分为:Unit, System interface, Design rule, Timing constraint, Timing exceptions, Logic assignments. 具体命令参见下表.
Type | command |
---|---|
Unit | set_unit |
System interface | set_driveset_driving_cellset_input_transitionset_load |
Design rule | set_max_capacitanceset_max_fanoutset_max_transitionset_min_capacitance |
Timing constraint | create_clockcreate_generated_clockgroup_pathset_clock_gating_checkset_clock_groupsset_clock_latencyset_clock_senseset_clock_transitionset_clock_uncertaintyset_data_checkset_disable_timingset_input_delayset_output_delay |
Timing exceptions | set_false_pathset_max_delayset_min_delayset_multicycle_path |
Logic assignments | set_case_analysis |
此处不展开写每个命令怎么定义,可以去翻SDC 的文档,或翻其他自媒体写的SDC 文章查阅。从油管上抓了一些示例,贴到这里,有兴趣的可以一看。
综合工程师,要对每一条SDC 的设置方式跟设置目的都十分清晰:
SDC 可简单可复杂,通常CPU, GPU 的SDC 都较简单,高速接口的SDC 都较复杂,不论什么样的设计,拿到设计跟SDC 之后尽量先做SDC 检查,在SDC 干净之前的任何综合都只能算『青春期的呻吟』——没用!
除了专门的SDC 检查工具,综合工具都有检查SDC 的命令,这一步一定要做,要把报出来的所有信息都过一下,有任何疑问找desinger 确认!