- 博客(445)
- 收藏
- 关注
原创 SDC命令详解:SDC命令大全(持续更新)
Tcl(Tool Command Language)最初是一种用于编写脚本的编程语言,广泛用于电子设计自动化(EDA)工具中,如Cadence的Virtuoso、Synopsys的Design Compiler等。SDC(Synopsys Design Constraints)是一种定义电路设计约束的格式,它用于确保电子设计在时序方面满足规定的要求,由Synopsys基于Tcl命令拓展而来。下面分类给出一些常用的SDC约束命令(以目前的最新版本2.2为例)。
2023-11-03 13:35:46
3946
1
原创 Verilog基础:表达式位宽的确定(位宽拓展)
我们可以首先找到被加入上下文环境的操作数,a和b作为+操作符的操作数,是上下文决定的,(a+b)作为整体位与移位操作符的左边也是上下文决定的,(a+b)>>1作为整体是=操作符的右操作数,也是上下文决定的,因此answer(因为=),a,b(因为三层上下文嵌套)都被加入上下文环境中,这三个变量的位宽都是一样的,所以他们三个在运算前不会有拓展。因此首先执行a+b,根据规则,结果为16位,进位被丢失,然后再右移一位,最高位补0,最后赋值给同为16位的answer。很多时候方法很简单。改成a+b+17'b0;
2023-01-27 22:03:25
15144
3
原创 Innovus:Technology LEF和Cell LEF文件
LEF(Library Exchange Format)是Cadence提出的集成电路工艺与单元库描述ASCII格式,主要用于描述IC布局设计中所需的工艺规则和单元物理信息,是布局布线工具(比如Innovus)的输入文件之一。
2026-01-28 00:45:19
98
2
原创 物理约束命令:创建芯片(Die)区域和核心(Core)区域
在Design Compiler:物理约束一文中,已经提到在第一轮综合时,用户可以使用自定义物理约束,本文就将介绍如何使用这些命令创建芯片(Die)区域和核心(Core)区域。芯片(Die)区域是整个芯片在硅片上的物理边界,包含核心区域、I/O PAD等所有结构,是芯片的总面积;而核心(Core)区域是芯片内部专门用于放置标准单元和宏单元的逻辑布局区域,不包含I/O PAD等外围电路,芯片(Die)区域包含核心(Core)区域,如图1所示。
2026-01-27 17:58:48
1094
1
原创 Design Compiler:触发器的复制(set_register_replication命令)
其实在下面这篇关于Formality的文章中,笔者已经介绍了触发器的复制,但仅提了一句“在某些情况下,Design Compiler可能为了性能而复制触发器”,本文旨在详细讨论Design Compiler对触发器复制的优化方式。
2026-01-23 18:06:22
1070
1
原创 Design Compiler:常量触发器的移除
其实在下面这篇关于Formality的文章中,笔者已经介绍了常量触发器的移除,但仅提了一句“当Design Compiler识别到常量触发器后,它会将其从设计中移除并直接传播常量逻辑”,本文旨在详细讨论Design Compiler对常量触发器的优化方式。
2026-01-20 01:34:56
705
1
原创 Design Compiler:不可读单元的移除
其实在下面两篇关于Formality的文章中,笔者已经介绍了不可读(unread)的概念,但仅提了一句“当Design Compiler识别到不可读触发器后,它会将其从设计中移除”,本文旨在详细讨论Design Compiler对不可读单元的优化方式。
2026-01-18 22:58:50
1349
1
原创 SDC命令详解:使用write_parasitics命令进行输出
write_script命令用于将当前设计中的寄生参数输出为文件(其实它并不是一个SDC命令,归为此类只是为了方便管理)。
2026-01-17 02:42:52
1017
1
原创 Design Compiler:增强型引脚负载电容建模(LoadUR、LoadUF、LoadLR、LoadLF)
在使用report_net命令报告线网信息时,对于不同工艺节点的逻辑库,报告格式可能会有所不同,下面展示了较旧逻辑库和较新逻辑库的报告。
2026-01-11 17:14:37
768
1
原创 SDC命令详解:使用annotate_trace命令进行调试
annotate_trace命令与report_trace命令类似,都是用于进行命令级性能剖析,不同的是,annotate_trace命令允许命令在执行过程中进行实时注释(包括命令注释和性能数据注释)。本文将详细介绍annotate_trace命令的使用方法(其实它并不是一个SDC命令,归为此类只是为了方便管理)
2026-01-07 19:07:02
848
2
原创 SDC命令详解:使用report_trace命令进行调试
在使用Synopsys的EDA工具(如Design Compiler、PrimeTime、Fusion Compiler、IC Compiler II等)的过程中,随着设计规模不断增大,脚本运行时间往往会明显增长。此时用户常常会遇到一些典型问题
2026-01-07 16:05:40
947
1
原创 SDC命令详解:使用log_trace命令进行调试
在使用Synopsys的EDA工具(如Design Compiler、PrimeTime、Fusion Compiler、IC Compiler II等)的过程中,用户编写的Tcl脚本往往包含大量条件判断、嵌套过程(procedure)以及对其他脚本的调用。
2026-01-07 13:18:23
972
1
原创 Design Compiler:Multibit优化(增强型布局感知的Multibit Banking流程)
拓扑模式的Design Compiler NXT在2021版本推出了增强型布局感知的Multibit Banking流程,可以在综合过程中就进行布局感知的Multibit优化,在进行增量综合前就获得较好的结果质量(QoR)。
2026-01-05 23:15:40
777
1
原创 我在CSDN的三年创作历程
本文回顾了作者从2023年开始在CSDN撰写数字IC技术博客的历程。最初因专业资料匮乏,作者通过自学20余本专业书籍积累知识,发现部分内容过时后,开始以博客形式整理学习笔记。从最初的归纳总结,到后来基于IEEE文档的原创研究,再到借助Synopsys资源拓展内容,作者逐步建立了技术影响力。迄今已发布433篇博客,获得400万展现量和1万关注者,博客内容甚至助力了秋招面试。作者表示将继续坚持技术分享,与同行共同成长。
2026-01-02 21:24:51
1744
29
原创 Design Compiler:Multibit优化(布局感知的Multibit Banking流程)
拓扑模式的Design Compiler Graphical推出了布局感知的Multibit Banking流程,会将物理位置上彼此接近的单比特单元分组并进行替换,与RTL向量自动推断流程和手动创建多比特组件流程相比更加强大。
2025-12-26 17:24:22
1584
1
原创 Design Compiler:Multibit优化(RTL向量自动推断流程和手动创建多比特组件流程)
综合(例如Design Compiler)与物理实现(例如IC Compier II)工具可以在将多个单比特触发器组织为多比特触发器,例如八个单比特触发器可以改用一个八比特触发器或两个四比特触发器实现,这个优化过程被称为Multibit优化,图1展示了一个具体案例。
2025-12-18 22:52:13
1037
1
原创 Design Compiler:面积优化
从Design Compiler:什么是代价函数(Cost Function)?一文中,已经简单介绍了面积优化的过程,对于DC Expert,可以使用set_max_area命令定义面积约束;对于DC Ultra、Design Compiler Graphical和Design Compiler NXT,则可以使用optimize_netlist -area命令进行面积优化,综合工具会在不影响时序/设计规则约束的情况下减小设计的面积。
2025-12-16 10:34:06
1008
1
原创 Design Compiler:检查时序问题(check_timing命令)
check_timing命令可用来检查设计中的各种时序问题,例如时钟定义,端口约束等,本文将详细讨论该命令的使用方式。
2025-12-14 21:55:04
1283
1
原创 Design Compiler:Early Data Flow(Early Data Check Manager与Low-Effort Flow)
在设计周期的早期迭代中,设计数据可能是不完整的、错误的或不一致的。这会阻碍你对设计进行实现、探索等工作。拓扑模式的Design Compiler NXT在2022版本推出了Early Data Flow,允许用户执行数据检查,并指定综合工具如何处理这些检查。该功能可以改善运行时间,但可能会对结果质量(QoR)产生一定影响。
2025-12-13 23:19:21
1516
1
原创 Design Compiler:简化性能、功耗和面积(PPA)的优化设置(set_qor_strategy命令)
在芯片设计流程中,为达成性能(Performance)、功耗(Power)与面积(Area)的综合最优,工程师通常需要配置大量应用变量。随着设计规模不断扩大,传统的脚本配置方式变得复杂、繁琐且难以维护。为解决这一问题,拓扑模式的Design Compiler NXT在2020版本引入了set_qor_strategy命令,这是Synopsys从客户的项目中学习到的最佳工具设置,为设计建立一个良好的开箱即用的结果质量(QoR)起点,以达到用户指定的目标指标。
2025-12-11 18:44:09
1168
1
原创 SDC命令详解:使用redirect命令进行重定向
在使用Synopsys的EDA工具(如Design Compiler、PrimeTime、IC Compiler)等的过程中,用户常常需要将报告类命令重定向到单独的文件,以便后续分析,使用Bash原生的>与>>是一种方法,但是Synopsys提供了一个更加强大的命令redirect,本文就将讨论该命令的使用(其实它并不是一个SDC命令,归为此类只是为了方便管理)。
2025-12-09 11:00:10
1055
1
原创 Design Compiler:Concurrent Clock and Data Optimization(CCD)的使用
物理实现工具(如IC Compiler II)中存在一种被称为并行时钟与数据优化(CCD)的技术,这种技术通过利用时钟路径上的有用偏移(Useful Skew)改善时序QoR(WNS/TNS),如图1所示。Design Compiler NXT在2019版本将该技术拓展到综合阶段,在更早的阶段尝试靠近设计的性能、功耗和面积(PPA)目标。
2025-12-08 17:12:14
1153
1
原创 Design Compiler:SDC相关运行时间问题的报告和修复
SDC约束的复杂性、过多的时序路径等因素可能导致综合工具运行时间过长,在早期版本中,综合工具不会提供反馈来帮助识别这些潜在原因,从2018版本开始,Design Compiler会提供关于SDC约束复杂性的反馈信息。
2025-12-07 21:02:01
896
1
原创 Design Compiler:使用Enhanced TNS Optimization(ETO)
Design Compiler默认情况下针对WNS进行优化,如果想优先降低TNS则需要设置placer_tns_driven变量(对于Design Compiler Graphical提示TNS-driven-DTDP is turned ON,对于Design Compiler NXT提示Enhanced timing-DTDP is turned ON),但是该变量在使用IC Compiler II Link布局器时失效
2025-12-04 16:35:23
726
1
原创 Design Compiler:使用Guide Hierarchical Map(GHM) Flow
当Design Compiler与Formality在逻辑层次推断(包括多级展开、参数化展开等)上存在差异时,可能导致SVF文件中的guide命令被错误应用,从而造成验证失败。为了解决这个问题,Design Compiler在2018版本推出了Guide Hierarchical Map(GHM) Flow,并新增了hdlin_enable_hier_map变量和set_verification_top命令。
2025-12-02 21:26:57
761
1
原创 IC Compiler:默认配置文件
当启动IC Compiler时,它会自动执行五个设置文件中的命令,这些文件具有文件名.synopsys_dc.setup和.synopsys_icc.tcl,位于不同的目录中,它们可以包含初始化变量、命令别名等偏好。
2025-11-22 01:36:57
833
1
原创 静态时序分析:面向锁存器的传统时序分析
当设计中出现锁存器时,静态时序分析就会变得更加复杂。一种称为时间借用(Time Borrowing)或者周期窃取(Cycle Stealing)的技术使得基于锁存器的设计相比基于触发器的设计具有明显优势,因为电平敏感的锁存器在一个有效时钟脉冲的持续时间内是透明的,这种技术可以放宽设计中常见的沿到沿时序要求。
2025-11-21 15:02:54
934
1
原创 Design Compiler:在GUI界面查询设计对象的属性
在Synopsys的EDA工具(如Design Compiler、PrimeTime、IC Compiler)中,设计对象的所有属性都可以使用get_attribute命令查询,该方法也是最完善的查询方式,使用report_attribute命令也可以报告设计对象的属性,但是仅限于部分属性(例如时钟对象的period属性就无法用该命令报告)。
2025-11-14 18:51:32
491
1
原创 Design Compiler:使用HPC Megaswitch
拓扑模式的Design Compiler NXT在2019版本针对ARM的高性能处理器内核综合引入了一个功能,用户可以使用set_hpc_options命令针对内核应用推荐的设置。
2025-11-07 10:08:12
520
1
原创 Design Compiler:时钟树在综合时的特性
有一类信号由于其自身高扇出的特性,需要使用树形结构来满足其DRC/时序约束的要求,比如时钟(复位、扫描使能等),本文就将讨论时钟树在综合时的特性。
2025-11-06 17:47:46
1443
1
原创 SDC命令详解:使用get_generated_clocks命令进行查询
get_generated_clocks命令用于创建一个生成时钟对象集合(其实它并不是一个SDC命令,归为此类只是为了方便管理),关于设计对象和集合的更详细介绍,可以参考下面的博客。需要注意的是,在有些工具中还存在get_generated_clock命令(其实它是get_generated_clocks命令的别名),它们没有任何差别。
2025-11-06 02:02:24
1271
1
原创 SDC命令详解:使用set_dont_touch命令进行约束
set_dont_touch命令用于在单元、线网、设计或库单元上设置dont_touch属性,以防止它们在优化过程中被修改(其实它并不是一个SDC命令,归为此类只是为了方便管理)。如果想要移除dont_touch属性,使用remove_attribute命令。
2025-11-04 15:53:48
1397
1
原创 SDC命令详解:使用set_dont_touch_network命令进行约束
set_dont_touch_network命令可以将当前设计中的一组端口、引脚或时钟标记为dont_touch网络源(设置端口、引脚或时钟对象的dont_touch_network属性为true),且dont_touch属性会沿着组合逻辑进行传播(其实它并不是一个SDC命令,归为此类只是为了方便管理),主要用于时钟路径,以防止工具在优化过程中修改时钟树。如果想要移除dont_touch网络,使用remove_attribute命令。
2025-10-31 23:34:18
1092
1
原创 SDC命令详解:使用set_timing_derate命令进行约束
由于制造工艺的偏差,一块晶圆(Wafer)上的各个裸片(Die)拥有不同的特征,甚至一个裸片上的不同部位也可能出现偏差。前者称为全局工艺偏差(Global Process Variation),后者称为局部工艺偏差(Local Process Variation),这个偏差比全局工艺偏差小很多。
2025-08-25 20:06:10
1986
2
原创 AMBA:AXI的通道内握手
所有AXI通道在通道内传输地址、数据和控制信息时,都使用相同的VALID/READY握手过程。这种双向流控机制意味着管理器(Manager)和从属设备(Subordinate)都能管理信息在它们之间传输的速率。
2025-08-24 16:37:55
742
1
原创 Design Compiler:层次模型(Block Abstraction)的简介
Design Compiler的综合策略大致可以分为三种:一种是自上而下(Top-Down),即一次性读入整个顶层设计及所有子模块,应用顶层约束,然后统一综合,这适合设计规模较小或计算资源充足时;一种是自下而上(Bottom-Up),即各个子模块单独约束、单独综合,最后再综合顶层设计,这适合超大设计或受到内存限制时;两种策略的结合是一种更常见的综合方法。
2025-08-22 20:02:15
1169
4
原创 SDC命令详解:使用set_wire_load_mode命令进行约束
在SDC命令详解:使用set_wire_load_model命令进行约束一文中,我们讨论了线负载模型的指定方式,由于可以在不同的层次单元上设置不同的线负载模型,层次单元内的线网应该使用哪个线负载模型进行计算取决于线负载模式,set_wire_load_mode命令用于指定线负载模式。
2025-08-22 15:40:21
1439
1
原创 Design Compiler:逻辑库名与逻辑库文件名及其指定方式
本文介绍了DesignCompiler中逻辑库的定义和使用方法。逻辑库由半导体供应商提供,包含单元特性和设计规则约束,支持NLDM和CCS两种时序模型。逻辑库的读取方式包括自动读取(通过target_library和link_library变量)和显式读取(使用read_db命令)。逻辑库的指定可分为间接指定(通过变量)和直接指定(在命令中指定库名)。文章还详细说明了不同情况下逻辑库的路径表示方法,并强调读取和指定是两个独立但可混合使用的步骤。
2025-08-21 22:14:05
1011
1
原创 Design Compiler:命令的后台执行与并行
在Design Compiler:使用多核技术一文中,我们了解了如何使用多核技术减少工具的运行时间,主要针对综合命令。本文将讨论如何利用多核技术在后台执行与并行执行命令提高运行效率。
2025-08-19 19:21:26
1165
1
Spyglass CDC Hands-on Training
2025-05-21
Synopsys Design Compiler Topographical/Graphical Workshop Lab
2024-11-13
Design Compiler Topographical/Graphical Workshop Lab Guide
2024-11-13
AMBA AHB规格文档(从AMBA 2到AMBA 5)
2024-10-03
AMBA APB规格文档(从AMBA 2到AMBA 5)
2024-10-03
Conformal 2023系列工具User Guide
2024-06-22
Verilog实现的RISC存储程序CPU
2023-03-12
Cortexm3是小端序,但为什么32位的指令看起来并不是如此?
2024-08-26
对于C语言,在使用大括号初始化数组时,括号内可以是变量吗?
2024-02-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅