0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ASIC设计约束与SDC命令

FPGA算法工程师 来源:FPGA算法工程师 2023-07-09 11:28 次阅读

本文介绍了数字IC设计中重要的概念,包括时钟树,复位树,以及在综合期间重要的SDC约束命令。

在数字IC设计中,重要的ASIC设计约束分为两类,主要是:

1.优化约束

2.设计规则约束(DRC)

根据ASIC逻辑设计,优化的约束是速度和面积。在物理设计中,我们需要对面积、速度和功率进行优化设计。根据所需的技术节点和策略进行更好的功耗规划,总是有助于获得芯片的布局。

DRC是晶圆铸造规则,主要是连接、扇出和容量。

约束可用于在逻辑和物理综合的各个综合阶段优化设计。

这些约束在设计的模块、顶层和芯片级别。例如考虑如图所示的处理器架构,可以为各种功能块指定块级约束,这些功能块包括ALU、浮点引擎、高速接口等。顶层约束将在综合过程中使用,它们用于集成所有功能块。

f1efdad0-1e00-11ee-962d-dac502259ad0.png

处理器顶层架构

如果满足模块级约束,并不意味着设计将满足顶层约束。在物理设计期间,需要满足干净布局的芯片级约束。

对于处理器的综合,以下可能是较好的策略:

1. 为不同的时钟组执行综合。

2. 使用自底向上的综合并提取模块级约束。

3. 在模块级综合过程中优化设计,以满足面积和速度的要求。

4. 指定顶层约束。

5. 执行顶层综合并优化设计以满足顶层约束。

6. 如果不满足约束条件,则使用策略来调整RTL架构。

1

重要设计概念

1.1 时钟树

时钟树综合是在物理设计流程中进行的,而在逻辑设计流程中我们没有时钟分布的信息。也就是说,我们将尝试使用具有可用统计数据的Synopsys DC设置来指定时钟和时钟延迟。

1.2复位树

具有多个功能块初始化复位的设计需要与主复位同步。如果复位是在时钟的有效边缘期间产生的,则复位树可用于避免亚稳态输出。

要考虑的重要参数是:

1.复位恢复时间

2.复位移除时间

1.3 时钟和复位策略

在逻辑设计过程中,以下策略可能会对复位和时钟有所帮助。

1.对于多个时钟域,在数据和控制路径中使用同步器,这已经在《IC设计中的多时钟域处理方法总结》一文中进行了介绍。

2.使用统计数据来引入时钟延迟,并指定逻辑综合过程中的设置和保持不确定性。

3.在逻辑设计期间手动实例化时钟。

4.使用复位同步器将复位与主复位同步。

1.4 影响设计性能的是什么?

ASIC设计应满足速度和面积的优化约束。我们将在物理设计期间使用功率限制和DRC。以下是在综合过程中需要解决的要点:

1. 模块级约束:对于复杂的ASIC设计,如果我们考虑多个功能块或IP,那么应该指定块级约束。功能块的块级约束应该满足。例如,处理器逻辑工作在250MHz的工作频率,但整个芯片工作在500MHz。在这种情况下,与顶层约束相比,设置和保持的总体不确定性是不同的。因此,应该在块级综合期间使用块级Tcl脚本。

2. 顶层约束:在完成所有功能块的综合后,对于自底向上的综合,进行顶层集成。需要为特定的时钟组指定顶层约束,主要在Tcl脚本中,应该使用以下命令:

(a)时延信息

(b)输入时延

(c)输出时延

(d)setup不确定性

(e)hold不确定性

如果满足模块级约束,但不能保证满足顶层约束。可能原因是这样的:

1. 如果设计分区不在顺序边界上,则会产生额外的延迟。

2. 数据到达速度快,且设计中存在缺陷。

3.数据到达缓慢,并且设计存在设置冲突。

4. 如果在综合过程中,由于多循环和假路径,会出现定时异常。

5. 由于同步策略不佳导致数据完整性降低。

6. 如果设计有层次结构,并且DC不能优化粘合逻辑。在这种情况下,设计需要扁平化以提高优化。

2

约束说明

需要为Verilog文件指定的模块和顶层综合的重要约束是面积、速度和功率。让我们排除功率,因为功率优化不是使用DC进行的。作为一名设计师和综合团队成员,我们的目标是对设计有功能性的理解,以及对设计的整体面积和速度要求。

2.1面积约束

在逻辑综合期间,该区域是由于使用的逻辑和宏。标准单元信息在库中可用,并且需要特定的宏来实现设计的低级抽象。整体面积优化可以在过程中进行:

1. RTL设计:使用资源共享、资源分配、消除死区、使用括号和摸索等概念。

2. 综合:通过使用工具指定的命令和使用区域优化命令,可以优化区域。

2.2 速度约束

速度是特别重要的因素,因为它决定了设计的整体性能。设计的速度约束需要根据特定技术节点的库中可用的统计数据来制定,并且要满足这些约束。由于实际的布局布线在逻辑综合期间不可用,因此目标是仔细查看以消除块和顶层设计的设置冲突。综合和STA团队需要指定以下内容:

1.时钟

2.时钟延迟

3.建立并保持不确定性。

4.输入和输出最大和最小延迟

5.选择多周期路径

6.指定伪路径

2.3功率约束

功率是另一个约束条件,在功率规划中,我们将约束条件指定为漏电和动态功率。为了实现低功耗感知架构和设计,我们将在各个设计阶段使用统一功率格式(UPF)。以下是一些优化功率的策略:

1. 架构设计:具有低功耗架构设计,具有上电顺序和电源关闭策略。

2. 使用低功率单元:在设计过程中使用低功率单元,但设计师需要更好地了解单元的特性,因为这些单元的使用对设计速度有重大影响。

3.RTL设计:在RTL设计中,使用时钟门控单元来降低动态功率。

3

设计中的问题

以下是ASIC综合过程中的重要挑战:

1.逻辑的修改。

2.未连接的端口网络满足了模块级速度限制,但在顶层设计上失败了。

3.虽然RTL验证成功,但设计的模块级连接存在缺失。

4

综合期间的重要SDC命令

本节讨论在综合过程中使用的重要DC命令,这些命令对于指定约束很有用。

4.1Synopsys DC命令

在ASIC综合过程中使用的一些SDC命令记录在本节中。

1.Reading the design(读取设计)

read –format

以上命令用于读取设计。

f2199f5a-1e00-11ee-962d-dac502259ad0.png

2.Analyze the design(分析设计)

analyze –format < format_type >

用于分析设计。它用于报告语法错误,并在拥有通用逻辑之前执行设计转换。通用逻辑是synopsys通用技术独立库的一部分。这些组件被命名为GTECH。这个逻辑是布尔函数的未映射表示。

f24afb22-1e00-11ee-962d-dac502259ad0.png

3. Elaborate the design(细化设计)

elaborate –format < format_type >

用于细化设计,并可用于在细化过程中为相同的分析设计指定不同的架构。

f286be32-1e00-11ee-962d-dac502259ad0.png

重要的是要了解Read、Analyze和Elaborate命令的区别。以下是关键点:

1. 在进行细化设计的同时,通过分析和细化来传递所需的参数。

2. 在输入DC中预编译的设计或网络列表时使用读取。

3.使用analyze和elaboration命令,可以在精化过程中为相同的分析设计指定不同的架构。

4. read命令不允许使用不同的架构。

4.2设计检查

在使用DC读取设计之后,使用check_design来检查设计问题,如短路、断路、多个连接、实例化和无连接。

f2aa86b4-1e00-11ee-962d-dac502259ad0.png

4.3clock定义

需要使用命令create_clock指定时钟,并且在时序分析期间将其用作参考时钟。使用create_clock命令定义时钟的示例如下。

create_clock–name -period

该命令用于为设计创建时钟,作为时序分析时的参考时钟。如果设计没有时钟,那么它将被视为虚拟时钟。

f2d04a2a-1e00-11ee-962d-dac502259ad0.png

时钟有不同的占空比

如果设计者希望使用具有0.5 ns上升沿和2 ns时钟周期的可变占空比时钟,则create_clock命令可以修改为

create_clock –name clock - period 2 –waveform {0.5,2} –name processor_clock

虚拟时钟

如果设计没有时钟引脚,则使用以下命令创建虚拟时钟。

下列命令生成频率为500mhz,占空比为50%的虚拟时钟。

create_clock –name clock -period 2

下列命令生成频率为500mhz的虚拟时钟,具有可变占空比,上升沿为0.5 ns,下降沿为2 ns。

create_clock –name clock -period 5 –waveform {0.5,2}

4.4skew定义

正如前面的文章所讨论的,偏差是时钟信号到达之间的差异。如果源触发器的时钟相对于目标触发器延迟,则该偏差称为负时钟偏差,对hold有用。如果与源触发器相比,目标触发器的时钟延迟,则该偏差称为正时钟偏差,对setup很有用。原因是目标触发器的时钟延迟,数据可能由于偏差而延迟到达。

设计编译器将无法综合时钟树,所以为了克服这个问题,时钟倾斜是用来指定延迟的!

下列命令由设计编译器用于指定设计的时钟倾斜

set_clock_skew –rise_delay -fall_delay

f2f97710-1e00-11ee-962d-dac502259ad0.png

4.5Input /output delay 定义

可以分别使用set_input_delay和set_output_delay命令指定输入和输出延迟。用于指定输入和输出延迟的命令如下所示。

set_input_delay –clock

用于定义输入延迟。

f34753e0-1e00-11ee-962d-dac502259ad0.png

set_output_delay –clock

用于定义输出延迟。

f3727462-1e00-11ee-962d-dac502259ad0.png

4.6指定min/max delay

输入和输出延迟可以根据设计需要指定为最小或最大。

Maximum Input Delay

set_input_delay –clock -max

用于定义最大输入延迟。

f3a03bc2-1e00-11ee-962d-dac502259ad0.png

Minimum Input Delay

set_input_delay –clock -min

用于定义最小输入延迟。

f3d16422-1e00-11ee-962d-dac502259ad0.png

set_output_delay –clock -max

用于定义最大输出延迟。

f41eefee-1e00-11ee-962d-dac502259ad0.png

Minimum Output Delay

set_output_delay –clock -min

用于定义最小输出延迟。

f4407970-1e00-11ee-962d-dac502259ad0.png

4.7设计综合

compile命令用于执行设计综合。如前一节所讨论的,我们需要将设计约束、库和Verilog文件作为综合工具的输入。设计综合可以使用不同的努力水平(如低、中、高)来执行。

编译命令指定为:

compile –map_effort

f4602310-1e00-11ee-962d-dac502259ad0.png

4.8保存设计

write命令用于保存设计。设计人员可以将综合输出保存为Verilog (.v)或数据库(.ddc)格式。该命令可以如下所示指定:

write –format -output

f486eae0-1e00-11ee-962d-dac502259ad0.png

5

约束验证

下表列出了用于验证设计的重要命令。

f4cc9310-1e00-11ee-962d-dac502259ad0.png

6

DRC、功率和优化约束

下表列出了用于指定设计规则、功率和优化约束的重要命令。

f5009994-1e00-11ee-962d-dac502259ad0.png

7

本文总结

总结本文的要点:

1.设计约束包括优化约束和设计规则约束。

2. 综合是从较高层得到较低层设计抽象的过程。

3.综合工具使用Verilog文件、库和约束作为输入。

4. 综合工具的输出是门级网表。

5. 模块级和顶层设计的约束应该记录在单独的Tcl文件中。

6. Synopsys DC没有针对功率进行优化。

7. 在逻辑综合过程中,目标是优化设计的面积和速度。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • asic
    +关注

    关注

    34

    文章

    1156

    浏览量

    119263
  • 数字IC
    +关注

    关注

    1

    文章

    37

    浏览量

    12265
  • SDC
    SDC
    +关注

    关注

    0

    文章

    47

    浏览量

    15301

原文标题:ASIC设计约束与SDC命令

文章出处:【微信号:FPGA算法工程师,微信公众号:FPGA算法工程师】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    VIVADO时序约束及STA基础

    时序约束的目的就是告诉工具当前的时序状态,以让工具尽量优化时序并给出详细的分析报告。一般在行为仿真后、综合前即创建基本的时序约束。Vivado使用SDC基础上的XDC脚本以文本形式约束
    的头像 发表于 03-11 14:39 8837次阅读

    时序分析的设计约束SDC

    使用SDC命令create_clock创建时钟,时钟周期20,占空比50%的时钟信号;
    的头像 发表于 11-08 09:12 5755次阅读

    聊聊ASIC设计约束SDC命令

    根据ASIC逻辑设计,优化的约束是速度和面积。在物理设计中,我们需要对面积、速度和功率进行优化设计。根据所需的技术节点和策略进行更好的功耗规划,总是有助于获得芯片的布局。
    发表于 07-11 09:31 386次阅读
    聊聊<b class='flag-5'>ASIC</b>设计<b class='flag-5'>约束</b>与<b class='flag-5'>SDC</b><b class='flag-5'>命令</b>

    ASIC设计约束SDC命令介绍

    在数字IC设计中,重要的ASIC设计约束分为两类
    发表于 07-12 11:34 1004次阅读
    <b class='flag-5'>ASIC</b>设计<b class='flag-5'>约束</b>与<b class='flag-5'>SDC</b><b class='flag-5'>命令</b>介绍

    时序约束 专版

    TimeQuest Timing Analyzer为各种各样的时钟配置和典型时钟提供许多SDC命令。 这个章节将介绍SDC可用的应用编程接口,以及描述指定的时钟特性。 时钟(Clocks
    发表于 05-16 18:51

    小编科普一下基本的时序路径约束

    本文转载IC_learner - 博客园数字IC之路-SDC篇(一):基本的时序路径约束_u012675910的博客-CSDN博客_sdc约束 RTL代码描述了电路的时序逻辑和组合逻辑
    发表于 03-01 06:48

    FPGA的reset信号需要加什么SDC约束呢?

    FPGA的reset信号需要加什么SDC约束呢?
    发表于 04-23 11:38

    请问时序约束文件SDC支持哪些约束

    时序约束文件SDC支持哪些约束
    发表于 08-11 09:27

    介绍系统接口sdc

    今天要介绍的基本sdc是系统接口sdc。主要包括set_drive, set_driving_cell, set_input_transition, set_load这四条命令,都是和端口上的驱动负载有关.
    的头像 发表于 02-03 14:34 9558次阅读
    介绍系统接口<b class='flag-5'>sdc</b>

    Vivado设计套件TCL命令资料参考指南免费下载

    工具命令语言(TCL)是集成在VIVADO环境中的脚本语言。TCL是半导体工业中用于应用程序编程接口的标准语言,并由SyoSype®设计约束SDC)使用。
    发表于 08-09 08:00 38次下载
    Vivado设计套件TCL<b class='flag-5'>命令</b>资料参考指南免费下载

    如何将Altera的SDC约束转换为Xilinx XDC约束

    了解如何将Altera的SDC约束转换为Xilinx XDC约束,以及需要更改或修改哪些约束以使Altera的约束适用于Vivado设计软件
    的头像 发表于 11-27 07:17 4664次阅读

    时序分析的设计约束SDC怎么写呢?

    使用SDC命令create_clock创建时钟,时钟周期20,占空比50%的时钟信号
    的头像 发表于 06-18 09:42 2661次阅读
    时序分析的设计<b class='flag-5'>约束</b><b class='flag-5'>SDC</b>怎么写呢?

    SDC是如何炼成的?怎么去验收SDC呢?

    STA是由SDC驱动的,所以SDC的完整性、正确性和一致性直接决定着综合、布局布线以及STA的有效性。
    的头像 发表于 06-28 17:17 2302次阅读
    <b class='flag-5'>SDC</b>是如何炼成的?怎么去验收<b class='flag-5'>SDC</b>呢?

    时序分析基本概念—SDC概述

    今天我们要介绍的时序概念是设计约束文件 **SDC** . 全称 ***Synopsys design constraints*** . SDC是一个设计中至关重要的一个文件。
    的头像 发表于 07-03 14:51 4141次阅读
    时序分析基本概念—<b class='flag-5'>SDC</b>概述

    时序分析基本概念介绍—时钟sdc

    虽然sdc大大小小有上百条命令,但实际常用的其实就那么10几条。今天我们来介绍下与时钟相关的命令
    的头像 发表于 07-05 10:57 1273次阅读
    时序分析基本概念介绍—时钟<b class='flag-5'>sdc</b>