- 博客(406)
- 收藏
- 关注

原创 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
2223
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
13752
3
原创 Design Compiler:布图规划探索(ICC II)
在拓扑模式的Design Compiler Graphical中,可以用布图规划探索(Floorplan Exploration)功能,打开IC Compiler II进行布图规划的创建、修改与分析。布图规划探索也是以二进制格式向IC Compiler II传递物理信息的一种方法。
2025-08-10 21:04:59
1495
1
原创 Design Compiler:增量综合
在使用综合命令时,存在两种情况:全量综合(Full Compile)与增量综合(Incremental Compile),本文就将对这两种综合方式进行简要介绍。
2025-08-07 16:51:48
788
1
原创 Design Compiler:为什么状态机使用独热编码却依旧按照全译码实现?
众所周知,使用独热码编码状态机的好处是能够减少下一状态组合逻辑的复杂程度,但笔者在使用Design Compiler进行测试时却发现,结果似乎与预料的不一致,本文将对此进行讨论。
2025-08-06 03:59:13
1121
1
原创 Design Compiler:布图规划探索(ICC)
本文介绍了DesignCompiler中的布图规划探索功能,该功能通过与ICCompiler交互实现物理设计的规划优化。主要内容包括:1)布图规划探索的基本流程;2)启动前的必要设置,包括设计准备、工作目录指定等;3)简化版与完整版菜单的切换使用;4)布图规划的创建与编辑方法;5)修改结果的保存与放弃操作。文章强调布图规划探索需要预先完成设计综合,并详细说明了从启动到退出的完整操作步骤,为IC设计人员提供了实用的物理设计规划指导。
2025-08-05 20:02:59
1021
1
原创 Design Compiler:高层次优化与数据通路优化
Design Compiler的高层次优化与数据通路优化在设计的RTL层次或者说GTECH层次进行,包括:算术表达式简化、操作符重排序、操作符实现方式(DesignWare)选择、资源共享、数据通路提取与优化。本文就将对此进行简要介绍。
2025-08-04 22:10:09
884
1
原创 Design Compiler:Milkyway库的创建与使用
DC Ultra推出了拓扑模式,在综合时会对标准单元进行粗布局(Coarse Placement)并使用虚拟布线(Virtual Routing)技术计算互联延迟,关于拓扑技术的更详细介绍,可以参考下面的博客。
2025-08-02 23:33:43
1636
1
原创 Design Compiler:物理约束
在使用拓扑模式进行物理综合时,可以提供物理约束,例如:晶圆面积(die area)、核心区域(core area)及其形状、端口位置(port location)、宏单元位置(macro location)、避开区(keepout margin)、布局阻挡区(placement blockage)、预布线(preroute)、边界(bound)等。
2025-08-01 17:12:57
702
1
原创 Power Compiler:增量综合时的门控时钟转换
在增量综合时,如果设计中的门控时钟单元不满足要求,比如最小位宽(由门控时钟单元clock_gating_reg_size属性决定),最大扇出(由pwr_cg_max_fanout属性决定)、最大级数,Power Compiler将对这些门控时钟单元进行转换。
2025-07-31 01:55:00
746
1
原创 SDC命令详解:使用write_script命令进行输出
write_script命令用于将设计中的属性设置命令输出为脚本文件(其实它并不是一个SDC命令,归为此类只是为了方便管理),这包括所有的SDC命令(实际上所有的SDC命令都会设置相应属性,例如set_ideal_network命令设置了ideal_network_source属性),但不包括用户自定义属性。对于那些不能直接用特定命令设置的属性,将统一使用set_attribute命令设置。
2025-07-30 19:00:24
1055
1
原创 Synopsys:消息管理
在EDA工具执行命令时,可能会出现一些消息提示,下面展示了一条在Design Compiler的拓扑模式下使用不支持的命令而产生的错误。
2025-07-29 23:14:32
877
1
原创 Synopsys:默认报告精度(report_default_significant_digits变量)
在使用report_timing之类的报告命令时,可以使用-significant_digits选项指定报告的精度,在不使用该选项的情况下,命令使用由report_default_significant_digits变量指定的默认精度进行报告。
2025-07-28 18:50:55
366
1
原创 Power Compiler:门控时钟单元的识别
在Power Compiler中,门控时钟单元可以使用compile_ultra -gate_clock命令自动插入,之后可以使用report_clock_gating -gating_elements命令查看门控时钟单元,也可以使用report_cell命令查看门控时钟单元的clock_gating_logic属性(显示为cg)。
2025-07-28 01:33:07
833
1
原创 Power Compiler:漏电功耗、内部功耗、切换功耗及其计算方式(NLPM)
本文将对Power Compiler功耗分析时考虑的三种功耗(漏电功耗、内部功耗、切换功耗),及它们的计算方式(NLPM)进行详细介绍。
2025-07-25 23:16:31
1057
1
原创 Design Compiler:多工艺角和多工作模式(Multicorner-Multimode, MCMM)
Design Compiler Graphical引入了一种被称为多工艺角和多工作模式(Multicorner-Multimode, MCMM)的功能,该功能允许设计者在多个模式和多个工艺角下并行地分析和优化设计,在此之前,设计者通常使用set_min_library命令分别设置最大条件和最小条件的逻辑库。
2025-07-24 02:09:13
1125
1
原创 SDC命令详解:使用set_min_library命令进行约束
set_min_library命令用于设置一组最大与最小条件的库映射关系(其实它并不是一个SDC命令,归为此类只是为了方便管理),可以让Design Compiler在优化时分别使用两组逻辑库来进行最小与最大条件分析。
2025-07-22 23:17:48
1016
1
原创 Formality:验证困难(Inconclusive)的三种解决方法
对于综合而言,允许(优化)改变的内容越多,结果质量(QoR)就越好,但这同时也会导致逻辑锥被转化得过于复杂,难以判定等价或不等价(这导致整体验证状态为Inconclusive),虽然对于大多数Design Compiler的默认优化方式,使用SVF文件足以辅助Formality验证,但仍有部分潜在的困难验证问题无法直接解决。
2025-07-22 03:58:48
782
1
原创 PrimeTime:高级片上变化(AOCV)
随着工艺尺寸的不断缩小,静态时序分析受到的制造过程变化影响日益显著。传统的解决方案是使用一个全局的固定系数(set_timing_derate命令)来为设计添加裕量,以应对片上变化(On Chip Variation, OCV),虽然在130nm和90nm工艺节点时仍属合理,但在更先进的制程中已显得过于保守,带来了过度设计、性能下降和设计周期延长等问题。为解决这一挑战,PrimeTime在2009年引入了高级片上变化(AOCV)技术,这是对传统OCV方法的自然扩展,
2025-07-20 23:27:50
868
1
原创 静态时序分析:门控时钟保持时间检查
在静态时序分析中,门控时钟保持时间检查约束了门控单元的门控引脚和时钟引脚之间的时序关系,以满足门控单元的保持时间要求。简单来说就是,如果使用与门作为门控单元,门控时钟保持时间要求门控信号在时钟信号的下降沿到达之后一段时间再到达,这是为了不在时钟路径上产生毛刺;如果使用或门作为门控单元,门控时钟保持时间要求门控信号在时钟信号的上升沿到达之后一段时间再到达,这是为了不在时钟路径上产生毛刺。
2025-07-18 20:18:15
805
1
原创 静态时序分析:门控时钟建立时间检查
在静态时序分析中,门控时钟建立时间检查约束了门控单元的门控引脚和时钟引脚之间的时序关系,以满足门控单元的建立时间要求。简单来说就是,如果使用与门作为门控单元,门控时钟建立时间要求门控信号在时钟信号的上升沿到达之前提前到达且稳定一段时间,这是为了不在时钟路径上产生毛刺;如果使用或门作为门控单元,门控时钟建立时间要求门控信号在时钟信号的下降沿到达之前提前到达且稳定一段时间,这是为了不在时钟路径上产生毛刺。
2025-07-18 16:50:19
1261
1
原创 Design Compiler:分频器生成时钟的创建方法
在Design Compiler中,由于分频时钟无法从时钟分频器的输出自动推断,需要使用create_generated_clock命令创建生成时钟,本文不会对生成时钟与create_generated_clock命令进行过多讨论,关于他们两者的详细信息见下面的博客。
2025-07-18 00:27:27
915
1
原创 静态时序分析:移除时间检查
在静态时序分析中,移除时间检查约束了触发器时钟引脚(时钟路径)和异步复位引脚(数据路径)之间的时序关系,以满足触发器的移除时间要求。简单来说就是,移除时间要求复位释放在时钟的有效沿到达之后一段时间再到达,这是为了数据被有效(锁存)捕获(这时的数据指的应该是复位值),关于异步复位的更详细介绍,可以参考下面的博客。
2025-07-17 22:13:24
712
1
原创 静态时序分析:恢复时间检查
在静态时序分析中,恢复时间检查约束了触发器时钟引脚(时钟路径)和异步复位引脚(数据路径)之间的时序关系,以满足触发器的恢复时间要求。简单来说就是,恢复时间要求复位释放在时钟的有效沿到达之前提前到达且稳定一段时间,这是为了数据被有效(锁存)捕获,关于异步复位的更详细介绍,可以参考下面的博客。
2025-07-17 02:03:41
1014
1
原创 Design Vision:显示扇入/扇出逻辑
在使用Design Vision中查看示意图时,可以在示意图中查看所选单元(Cell)、引脚(Pin)、端口(Port)或线网(Net)的扇入/扇出逻辑。用户可以在当前激活的示意图中添加逻辑层级,或打开一个新的示意图,也可以快速为一个引脚或一个单元中的多个引脚添加下一级逻辑。
2025-07-16 15:58:16
1307
1
原创 Design Compiler:时序路径的统计方式
本文将讨论Design Compiler中的各命令对于时序路径的统计方式,关于时序路径的更详细介绍,可以参考下面的博客。
2025-07-15 18:08:22
882
1
原创 Design Compiler:什么是代价函数(Cost Function)?
在综合过程中,Design Compiler使用代价函数(Cost Function)作为依据判断一步优化是否应该进行。Design Compiler会计算两类代价函数,一类用于设计规则约束(Design Rule Constraint),另一类用于优化约束(Optimization Constraint)。如果某步优化能够降低某项代价函数而不会增加具有更高优先级的代价函数,那么它就是可以接受的。
2025-07-13 15:05:38
882
1
原创 Genus:设计信息结构以及导航方式(路径种类)
Genus使用设计信息结构(Design Information Hierarchy)对数据库进行建模,其中包括各种对象以及其属性,设计信息结构与Linux的目录结构非常相似,如图1所示。
2025-07-11 21:06:35
957
5
原创 SDC命令详解:使用read_sdc命令读取约束
在很长一段时间,用户将所有的设计约束Synopsys Design Constraints(SDC)写在一个文件中,并在脚本中使用source命令执行SDC文件。read_sdc命令的诞生让设置约束拥有了专用的命令,功能也更加强大。
2025-07-10 15:27:03
395
1
原创 Synopsys:与环境变量进行交互
在Tcl中,系统的环境变量会保存在一个特殊的数组env中,因此对于Synopsys的EDA工具(如Design Compiler、PrimeTime、IC Compiler)等,可以直接像访问普通数组那样访问环境变量,下面展示了如何在dc_shell中访问环境变量SHELL。
2025-07-10 00:44:04
397
1
原创 Design Compiler:流水线重定时(Pipelined-Logic Retiming)
重定时是DC Ultra引入的一种时序优化技术,可以将时序单元(触发器和锁存器)穿越组合逻辑前后移动,以优化设计的时序和面积,为提升电路时序性能提供了一个重要手段。根据使用场景的不同,重定时可分为两类:自适应重定时(Adaptive Retiming)和流水线重定时(Pipelined-Logic Retiming),本文关注的重点是流水线重定时以及重定时的实现细节。
2025-07-08 20:47:16
1001
1
原创 Design Compiler:自适应重定时(Adaptive Retiming)
重定时是DC Ultra引入的一种时序优化技术,可以将时序单元(触发器和锁存器)穿越组合逻辑前后移动,以优化设计的时序和面积,为提升电路时序性能提供了一个重要手段。根据使用场景的不同,重定时可分为两类:自适应重定时(Adaptive Retiming)和流水线重定时(Pipelined-Logic Retiming),本文关注的重点是自适应重定时。
2025-07-05 23:30:23
1375
1
原创 VC Spyglass:工具简介
传统上,基于仿真的动态验证技术一直是功能验证的核心方式。随着现代SoC设计日益复杂,静态验证技术的引入变得愈发重要。
2025-07-03 00:09:14
1265
1
原创 VC Spyglass:CDC官方Hands-on Training(三)
本实验旨在帮助用户掌握完整的CDC分析流程,特别是如何排查重汇聚(Convergence)问题和毛刺(Glitch)违规问题,实验将指导用户使用定位器和利用反标信息进行深入分析。
2025-07-01 22:58:37
1171
1
原创 VC Spyglass:CDC官方Hands-on Training(二)
本实验旨在帮助用户掌握如何识别异步跨时钟域过程中可能出现的亚稳态问题,并学习如何调试CDC同步违规。
2025-07-01 14:26:41
1045
1
原创 VC Spyglass:CDC官方Hands-on Training(一)
本文是对VC Spyglass CDC Hands-on Training中第一个实验的翻译(有删改),Lab文件可以从以下链接获取。
2025-07-01 00:34:27
1270
1
原创 Conformal LEC:官方学习教程
本文是对Conformal Equivalence Checking User Guide中附录实验的翻译(有删改),实验文件可见安装目录Conformal/share/cfm/lec/demo/doc_testcase,该目录下还提供了其他案例。
2025-06-28 17:23:03
1554
1
原创 Formality:原语(primitive)的概念
原语(primitive)一般指的是语言内置的基本构件,它们代表了基本的逻辑门和构件,通常用于建模电路的基本功能,例如Verilog中的门级建模会使用and、or等关键词表示单元门。Formality也存在原语的概念,这一般出现在对门级网表进行建模时,本文将对此进行详细解释。
2025-06-27 16:44:58
992
1
原创 Cadence:Conformal系列工具的两种命令输入模式(VPX和TCL)
Conformal是Cadence的一个形式验证工具系列,包含Conformal LEC(Logic Equivalence Checking)、Conformal ECO(Engineering Change Orders)、Conformal LP(Low Power)、Conformal CD(Constraint Designer)以及Conformal Verify。本文将介绍Conformal的两种命令输入模式。
2025-06-26 15:54:08
713
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关注的人