- 博客(457)
- 收藏
- 关注
原创 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
4307
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
15399
3
原创 Design Compiler&HDL Compiler:可综合操作符SELECT_OP和MUX_OP的推断和综合
有一类组合逻辑是基于控制信号选择相应的数据,HDL Compiler将这种逻辑推断为可综合操作符SELECT_OP或MUX_OP。默认情况下,工具会推断出通常适合RTL逻辑需求的单元,但用户也可以自己控制推断过程。
2026-02-25 16:55:10
840
1
原创 SDC命令详解:使用report_transformed_registers命令进行报告
report_transformed_registers命令用于报告工具在优化过程中对寄存器(包括触发器和锁存器)进行的所有变换,包括常量寄存器移除(Constant Register Removal)、不可读寄存器移除(Unread Register Removal)、寄存器合并(Register Merging)、寄存器复制(Register Replication)、多比特寄存器组(Multibit Banking)、相位反转(Phase Inversion)、移位寄存器识别(Shift Regist
2026-02-15 22:56:54
1081
1
原创 HDL Compiler:hdlin_preserve_sequential变量和preserve_sequential综合指令的使用
综合指令(Synthesis Directives)是一些特殊注释,用于影响综合工具如何处理RTL代码,这些注释会被综合工具识别,但会被其他工具(如仿真器)忽略。关于综合指令相关概念的更多介绍,可以参考下面的博客。
2026-02-15 02:09:32
804
1
原创 Design Compiler:使用QORsum报告对比结果质量
Design Compiler在2022版本推出了QORsum功能,运行生成一个基于Web的QORsum报告(使用.html和.json格式),用于查看和比较QoR数据,首先介绍生成QORsum报告的基本步骤。
2026-02-13 17:29:02
1057
1
原创 SDC命令详解:使用write_environment命令进行输出
write_environment命令用于将设计或单元中的环境(包含已更改的应用变量设置、约束设置、部分属性设置等信息)输出为脚本文件(其实它并不是一个SDC命令,归为此类只是为了方便管理),该命令可以提供用于比较Design Compiler与IC Compiler环境的文件,解决它们之间的一致性问题。
2026-02-12 17:01:01
954
5
原创 SDC命令详解:使用write_app_var命令进行输出
应用变量无法保存在ddc文件中,也无法使用write_script命令输出,write_app_var命令用于将当前设计中的应用变量设置命令输出为脚本文件(其实它并不是一个SDC命令,归为此类只是为了方便管理)。
2026-02-11 02:43:40
922
1
原创 DSO.ai:工具简介
DSO.ai(Design Space Optimization AI)是一款与物理实现工具(包括但不限于Fusion Compiler、IC Compiler II)配合使用的机器学习工具。通过探索设计空间并根据一组用户指定的指标(Metrics)评估结果,该工具旨在寻找“最佳”设计方案,从而提供更优的功耗、性能和面积(PPA)。
2026-02-08 02:57:48
749
1
原创 DSO.ai:基于AI的搜索优化型EDA工具介绍
Synopsys提供了多种基于AI的搜索优化型EDA工具,可应用于硅芯片设计与生命周期流程的多个环节,辅助用户的工作流,其中包括2020年3月推出的DSO.ai、2023年3月推出的VSO.ai、TSO.ai、ASO.si。除此之外,作为全栈式AI驱动EDA套件Synopsys.ai,其中还包括2023年11月推出的Synopsys.ai Copilot和2025年3月推出的Synopsys AgentEngineer。
2026-02-04 20:44:49
1409
1
原创 Simens EDA:在Modelsim/QuestaSim中观察一个时间片(Time Slot)中Simulation/Delta Cycle发生的事件
本文的目的是教会读者如何使用Modelsim/QuestaSim观察一个时间片(Time Slot)中Simulation/Delta Cycle发生的事件,有关Verilog/SystemVerilog中的时序调度的更详细信息,可以阅读Verilog/SystemVerilog Standard中的Scheduling semantics一章,其中详细给出了层次事件队列的定义。
2026-02-03 00:49:28
1068
1
原创 Design Compiler:单元密度(Cell Density)和引脚密度(Pin Density)的相关优化
拓扑模式的Design Compiler中存在很多与粗布局(Coarse Placement)过程中单元密度(Cell Density)和引脚密度(Pin Density)相关的应用变量,本文将列举其中的一部分并详细说明。
2026-02-02 01:50:02
886
2
原创 Innovus:Technology LEF和Cell LEF文件
LEF(Library Exchange Format)是Cadence提出的集成电路工艺与单元库描述ASCII格式,主要用于描述IC布局设计中所需的工艺规则和单元物理信息,是布局布线工具(比如Innovus)的输入文件之一。
2026-01-28 00:45:19
254
1
原创 物理约束命令:创建芯片(Die)区域和核心(Core)区域
在Design Compiler:物理约束一文中,已经提到在第一轮综合时,用户可以使用自定义物理约束,本文就将介绍如何使用这些命令创建芯片(Die)区域和核心(Core)区域。芯片(Die)区域是整个芯片在硅片上的物理边界,包含核心区域、I/O PAD等所有结构,是芯片的总面积;而核心(Core)区域是芯片内部专门用于放置标准单元和宏单元的逻辑布局区域,不包含I/O PAD等外围电路,芯片(Die)区域包含核心(Core)区域,如图1所示。
2026-01-27 17:58:48
1478
1
原创 Design Compiler:触发器的复制(set_register_replication命令)
其实在下面这篇关于Formality的文章中,笔者已经介绍了触发器的复制,但仅提了一句“在某些情况下,Design Compiler可能为了性能而复制触发器”,本文旨在详细讨论Design Compiler对触发器复制的优化方式。
2026-01-23 18:06:22
1254
1
原创 Design Compiler:常量触发器的移除
其实在下面这篇关于Formality的文章中,笔者已经介绍了常量触发器的移除,但仅提了一句“当Design Compiler识别到常量触发器后,它会将其从设计中移除并直接传播常量逻辑”,本文旨在详细讨论Design Compiler对常量触发器的优化方式。
2026-01-20 01:34:56
844
1
原创 Design Compiler:不可读单元的移除
其实在下面两篇关于Formality的文章中,笔者已经介绍了不可读(unread)的概念,但仅提了一句“当Design Compiler识别到不可读触发器后,它会将其从设计中移除”,本文旨在详细讨论Design Compiler对不可读单元的优化方式。
2026-01-18 22:58:50
1501
1
原创 SDC命令详解:使用write_parasitics命令进行输出
write_script命令用于将当前设计中的寄生参数输出为文件(其实它并不是一个SDC命令,归为此类只是为了方便管理)。
2026-01-17 02:42:52
1147
1
原创 Design Compiler:增强型引脚负载电容建模(LoadUR、LoadUF、LoadLR、LoadLF)
在使用report_net命令报告线网信息时,对于不同工艺节点的逻辑库,报告格式可能会有所不同,下面展示了较旧逻辑库和较新逻辑库的报告。
2026-01-11 17:14:37
891
1
原创 SDC命令详解:使用annotate_trace命令进行调试
annotate_trace命令与report_trace命令类似,都是用于进行命令级性能剖析,不同的是,annotate_trace命令允许命令在执行过程中进行实时注释(包括命令注释和性能数据注释)。本文将详细介绍annotate_trace命令的使用方法(其实它并不是一个SDC命令,归为此类只是为了方便管理)
2026-01-07 19:07:02
938
1
原创 SDC命令详解:使用report_trace命令进行调试
在使用Synopsys的EDA工具(如Design Compiler、PrimeTime、Fusion Compiler、IC Compiler II等)的过程中,随着设计规模不断增大,脚本运行时间往往会明显增长。此时用户常常会遇到一些典型问题
2026-01-07 16:05:40
1039
1
原创 SDC命令详解:使用log_trace命令进行调试
在使用Synopsys的EDA工具(如Design Compiler、PrimeTime、Fusion Compiler、IC Compiler II等)的过程中,用户编写的Tcl脚本往往包含大量条件判断、嵌套过程(procedure)以及对其他脚本的调用。
2026-01-07 13:18:23
1060
1
原创 Design Compiler:Multibit优化(增强型布局感知的Multibit Banking流程)
拓扑模式的Design Compiler NXT在2021版本推出了增强型布局感知的Multibit Banking流程,可以在综合过程中就进行布局感知的Multibit优化,在进行增量综合前就获得较好的结果质量(QoR)。
2026-01-05 23:15:40
918
1
原创 Design Compiler:Multibit优化(布局感知的Multibit Banking流程)
拓扑模式的Design Compiler Graphical推出了布局感知的Multibit Banking流程,会将物理位置上彼此接近的单比特单元分组并进行替换,与RTL向量自动推断流程和手动创建多比特组件流程相比更加强大。
2025-12-26 17:24:22
1735
1
原创 Design Compiler:Multibit优化(RTL向量自动推断流程和手动创建多比特组件流程)
综合(例如Design Compiler)与物理实现(例如IC Compier II)工具可以在将多个单比特触发器组织为多比特触发器,例如八个单比特触发器可以改用一个八比特触发器或两个四比特触发器实现,这个优化过程被称为Multibit优化,图1展示了一个具体案例。
2025-12-18 22:52:13
1181
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
1133
1
原创 Design Compiler:检查时序问题(check_timing命令)
check_timing命令可用来检查设计中的各种时序问题,例如时钟定义,端口约束等,本文将详细讨论该命令的使用方式。
2025-12-14 21:55:04
1406
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
1636
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
1299
1
原创 SDC命令详解:使用redirect命令进行重定向
在使用Synopsys的EDA工具(如Design Compiler、PrimeTime、IC Compiler)等的过程中,用户常常需要将报告类命令重定向到单独的文件,以便后续分析,使用Bash原生的>与>>是一种方法,但是Synopsys提供了一个更加强大的命令redirect,本文就将讨论该命令的使用(其实它并不是一个SDC命令,归为此类只是为了方便管理)。
2025-12-09 11:00:10
1164
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
1261
1
原创 Design Compiler:SDC相关运行时间问题的报告和修复
SDC约束的复杂性、过多的时序路径等因素可能导致综合工具运行时间过长,在早期版本中,综合工具不会提供反馈来帮助识别这些潜在原因,从2018版本开始,Design Compiler会提供关于SDC约束复杂性的反馈信息。
2025-12-07 21:02:01
988
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
818
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
876
1
原创 IC Compiler:默认配置文件
当启动IC Compiler时,它会自动执行五个设置文件中的命令,这些文件具有文件名.synopsys_dc.setup和.synopsys_icc.tcl,位于不同的目录中,它们可以包含初始化变量、命令别名等偏好。
2025-11-22 01:36:57
889
1
原创 静态时序分析:面向锁存器的传统时序分析
当设计中出现锁存器时,静态时序分析就会变得更加复杂。一种称为时间借用(Time Borrowing)或者周期窃取(Cycle Stealing)的技术使得基于锁存器的设计相比基于触发器的设计具有明显优势,因为电平敏感的锁存器在一个有效时钟脉冲的持续时间内是透明的,这种技术可以放宽设计中常见的沿到沿时序要求。
2025-11-21 15:02:54
1021
1
原创 Design Compiler:在GUI界面查询设计对象的属性
在Synopsys的EDA工具(如Design Compiler、PrimeTime、IC Compiler)中,设计对象的所有属性都可以使用get_attribute命令查询,该方法也是最完善的查询方式,使用report_attribute命令也可以报告设计对象的属性,但是仅限于部分属性(例如时钟对象的period属性就无法用该命令报告)。
2025-11-14 18:51:32
577
1
原创 Design Compiler:使用HPC Megaswitch
拓扑模式的Design Compiler NXT在2019版本针对ARM的高性能处理器内核综合引入了一个功能,用户可以使用set_hpc_options命令针对内核应用推荐的设置。
2025-11-07 10:08:12
601
1
原创 Design Compiler:时钟树在综合时的特性
有一类信号由于其自身高扇出的特性,需要使用树形结构来满足其DRC/时序约束的要求,比如时钟(复位、扫描使能等),本文就将讨论时钟树在综合时的特性。
2025-11-06 17:47:46
1524
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订阅