当前位置: 首页 > news >正文

FPGA时序分析与约束(7)——通过Tcl扩展SDC

一、概述

        术语“Synopsys公司设计约束”(又名SDC,Synopsys Design Constraints)用于描述对时序、功率和面积的设计要求,是EDA工具中用于综合、STA和布局布线最常用的格式。本文介绍时序约束的历史概要和SDC的描述。

二、时序约束的历史

        20世纪90年代初引人了时序约束。这些主要用于指定HDL 中无法捕获的设计特性和用于驱动综合。那时候,它们是 DesignCompiler的命令,为综合工具提供指导,以优化设计的面积与性能曲线。当PrimeTime结合Tcl的概念时,这些约束被修改为Tcl 格式的扩展。该集合称为SDC或Synopsys公司设计约束。多年来,该集合也扩展用于获取电源的设计要求。
        SDC命令基于Tcl语言。"工具命令语言"(又称Tcl,Tool Command Language)是一种非常流行的脚本语言,是常用于开发用户接口和嵌入式系统平台的应用程序。通过使SDC 扩展到Tcl,特定于工具的命令可以与原生的Tcl结构,如变量、表达式、语句和子程序相混合,使其成为实现工具非常强大的语言。现今,大多数实现和STA工具使用SDC作为标准格式以捕获对面积、功率和性能的设计意图。然而,特定的实现工具也可以使用该集合外的附加命令,以便指导其特定的算法或功能。这些命令通常称为非SDC命令。例如,Design Compiler和PrimeTime有许多非SDC命令,它们与 SDC 结构一起使用。这些扩展中的一些有助于分析约束,如集合(collections),其提供了一种迭代设计对象列表的方式。尽管一些非SDC命令仍然用于获取设计目标,但是根据其有用性和受欢迎程度,它们会定期包含在SDC修订版中。例如,set_clock_groups是表示时钟之间域关系的简洁方法,是非SDC命令,直到SDC标准1.7(2007年3月)才被包括进去。

三、Tcl基础知识

        关于Tcl基本知识,可以阅读以下文章
Tcl基础知识icon-default.png?t=N7T8https://blog.csdn.net/apple_53311083/article/details/133979550?spm=1001.2014.3001.5501

四、SDC综述

         SDC格式的约束可以大致分成以下几种:

  • 时序约束
  • 面积和功率约束
  • 设计规范约束
  • 接口约束
  • 特定模式和配置约束
  • 设计要求的异常
  • 其他命令

        一斯恶约束可能属于多个类别。

4.1 时序约束

        时序约束为影响工作频率的设计参数提供指导。它包括指定时钟特性、端口延迟、引脚和路径的命令。

create_clockcreate_generated_clockset_clock_groups
set_clock_latencyset_clock_transitionset_clock_uncertainty
set_clock_senseset_propagated_clockset_input_delay
set_output_delayset_clock_gating_checkset_ideal_latency
set_ideal_networkset_ideal_transitionset_max_time_borrow
set_resistanceset_timing_derateset_data_check
group_pathset_driveset_load
set_input_transitionset_fanout_delay

4.2 面积和功率约束

        面积与功率约束为面积和功率提供指导的命令,其中设计必须适合面积和功率要求达到最优。下表给出了此类约束:

set_max_areacreate_voltage_area
set_level_shifter_thresholdset_max_dynamic_power
set_level_shifter_strategyset_max_leakage_power

4.3 设计规则约束

        设计规则约束包括为目标技术的某些要求 提供指导的命令,下表列出了此类约束:

set_max_capacitanceset_min_capacitance
set_max_transitionset_max_fanout

4.4 接口约束

        接口约束包括为假象设计提供指导的命令,此设计需要构造电路单元,同时这些电路单元和子系统、芯片或Soc相连或与之交互,下表给出了此类约束:

set_driveset_driving_cellset_input_transition
set_loadset_fanout_loadset_port_fanout_number
set_input_delayset_output_delay

4.5 特定模式和配置约束

        假设分析的约束包括一些命令,这些命令帮助设计人员对端口和引脚的允许值做出假设。通过在特定工作模式或任意工作模式下明确排除不可能出现的情况,这些命令有助于对特定模式的设计进行更好地优化。下表给出了此类约束:

set_case_analysisset_logic_dc
set_logic_zeroset_logic_one

4.6 设计约束异常

        该类别包括帮助设计人员放宽要求地命令,此命令是由其他命令所规定的,从而提供了约束放宽的适用范围,下表给出了此类约束,表格中标有星号的命令也可提供额外的收紧(而不是放宽)。

set_false_pathset_multi_cycle_pathset_disable_timing
set_max_delay*set_min_delay*

4.7 其他命令

        其余的SDC命令属于此类别。这些命令对工作条件、线负载模型、单位和时序约束版本提供指导。下表给出了这些命令:

set_write_load_modelset_wire_load_mode
set_wire_load_selection_groupset_wire_load_min_block_size
set_unitsset_operating_conditions
sdc_version

五、SDC中的设计查询

        除了前述的类别之外,SDC标准还提供了访问有关设计信息的一种方法,以便于设计查询、遍历和浏览。将它们与SDC约束和Tcl脚本结合,可以有效地将设计要求应用于设计中的正确位置。下表给出如下命令:

命令描述
get_cells返回设计或库元器件的实例
get_ports返回设计的输入(input)、输入输出(inout)、输出(output)端口
get_pins返回设计端口或元器件引脚的实例
get_nets返回连接到端口或引脚的网络
get_clocks返回设计中的时钟
all_inputs返回设计中所有输入和输入输出(理论上也是输入)端口
all_outputs返回设计中所有输出和输入输出(理论上也是输出)端口
all_registers返回设计中的所有寄存器
all_clocks返回设计中的所有时钟
get_libs返回库列表
get_lib_cells返回库中的元器件列表
get_lib_pins返回库元器件中的引脚列表
current_design

为后续的命令和查询设置设计范围

如果没有给出参数,报告当前范围

六、小结

        由于SDC符合Tcl标准,所以大部分支持SDC的工具支持原生Tcl。用户可以将Tcl的编程功能和SDC相结合,以更有效的方式指定设计要求。现在,SDC是行业标准格式,这有助于推动设计实现工具以满足设计的时间、功率和面积要求。

相关文章:

FPGA时序分析与约束(7)——通过Tcl扩展SDC

一、概述 术语“Synopsys公司设计约束”(又名SDC,Synopsys Design Constraints)用于描述对时序、功率和面积的设计要求,是EDA工具中用于综合、STA和布局布线最常用的格式。本文介绍时序约束的历史概要和SDC的描述。 二、时序约束…...

C++面试——多线程详解

C11提供了语言层面上的多线程&#xff0c;包含在头文件<thread>中。它解决了跨平台的问题&#xff0c;提供了管理线程、保护共享数据、线程间同步操作、原子操作等类。C11 新标准中引入了5个头文件来支持多线程编程&#xff0c;如下图所示&#xff1a; 多进程与多线程 多…...

matlab 布尔莎七参数坐标转换模型

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。爬虫自重,把自己当个人。 一、算法原理 算法原理与实现代码已在免费文章:布尔莎七参数坐标转换模型一文中给出,不想看付费文章直接跳转即可。 二、代码实现 clc; clear; close all; %% --...

Android---StartActivity启动过程

在手机桌面应用中点击某一个 icon 之后&#xff0c;最终是通过 startActivity 去打开某一个 Activity 页面。我们知道&#xff0c;Android 中的一个 APP 就相当于一个进程。所以&#xff0c;startActivity 操作中还需要判断&#xff0c;目标 Activity 的进程是否已经创建。如果…...

隐私计算python实现Paillier同态加密

1.基本概念 Paillier同态加密是一种公钥加密方案&#xff0c;具有同态加密的特性。它由Pascal Paillier于1999年提出。 Paillier同态加密基于数论问题&#xff0c;其安全性基于大整数分解问题和离散对数问题的困难性。该方案可以用于保护隐私数据&#xff0c;同时支持在加密状态…...

代码随想录打卡第五十五天|● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组

300.最长递增子序列 **题目&#xff1a;**给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0…...

C# 创建Oceanbase ODBC数据源 DSN

需要管理员权限打开VS&#xff0c;因为只有管理员权限可以修改注册表 using Microsoft.Win32; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.Odbc; using System.Diagnostics; using System.Drawing;…...

C++ 常用函数汇总#include<algorithm>(3万字总结)

文章目录 1. 排序(Sorting)1.1 sort(first, last):对指定范围内的元素进行升序排序1.2 stable_sort(first, last):在保持相等元素的相对顺序的情况下对指定范围内的元素进行排序1.3 partial_sort(first, middle, last):对范围内的元素进行部分排序,使得前部分是最小的,但…...

Google Archive Patch 基础应用代码记录

项目地址 Google Archive Patch 前置 <!-- 差量应用模块 --> <dependency><groupId>com.google.archivepatcher</groupId><artifactId>archive-patch-applier</artifactId><version>1.0.4</version><scope>test</…...

机器学习——代价敏感错误率与代价曲线

文章目录 代价敏感错误率实现代价曲线例子 代价敏感错误率 指在分类问题中&#xff0c;不同类别的错误分类所造成的代价不同。在某些应用场景下&#xff0c;不同类别的错误分类可能会产生不同的代价。例如&#xff0c;在医学诊断中&#xff0c;将疾病患者错误地分类为健康人可…...

如何利用 ChatGPT 提升编程技能

目录 前言代码命名与 ChatGPT设计模式与 ChatGPT代码重构与 ChatGPT代码优化与 ChatGPTChatGPT 的潜在挑战与限制成功案例分析最佳实践与注意事项结语 前言 编程是一项充满创造性和挑战的任务&#xff0c;但也是一个需要花费大量时间和精力的领域。在日益复杂的软件开发环境中…...

ChatGPT:@EqualsAndHashCode(callSuper = false)是什么意思

ChatGPT&#xff1a;EqualsAndHashCode(callSuper false)是什么意思 EqualsAndHashCode(callSuper false)是什么意思&#xff1f; ChatGPT&#xff1a; EqualsAndHashCode(callSuper false) 是 Java 中的 Lombok 注解&#xff0c;用于自动生成 equals() 和 hashCode() 方法…...

docker部署的mariadb忘记密码

docker 里的 mariadb 数据库密码忘了&#xff0c;如果以前我会选择直接干掉重装&#xff0c;但是数据怎么办&#xff1f; 1 数据量小 就跳过密码登录进去备份出来 2 想办法改掉密码 我直接选择后者&#xff0c;跳过密码&#xff0c;mariadb10.4以后不能直接改密码了&#xff…...

一体化模型图像去雨+图像去噪+图像去模糊(图像处理-图像复原-代码+部署运行教程)

本文主要讲述了一体化模型进行去噪、去雨、去模糊&#xff0c;也就是说&#xff0c;一个模型就可以完成上述三个任务。实现了良好的图像复原功能&#xff01; 先来看一下美女复原.jpg 具体的&#xff1a; 在图像恢复任务中&#xff0c;需要在恢复图像的过程中保持空间细节…...

[java/力扣110]平衡二叉树——优化前后的两种方法

分析 根据平衡二叉树的定义&#xff0c;只需要满足&#xff1a;1、根节点两个子树的高度差不超过1&#xff1b;2、左右子树都为平衡二叉树 代码 public class BalancedBinaryTree {public class TreeNode{int val;TreeNode left;TreeNode right;TreeNode(){}TreeNode(int va…...

吉他、班卓琴和贝斯吉他降分器:Arobas Music Guitar 8.1.1

Arobas Music Guitar 是一款专业的吉他、班卓琴和贝斯吉他降分器。在熟练的手中&#xff0c;它不仅可以让您创作&#xff0c;还可以编辑、聆听和录制&#xff0c;以及导入和导出乐谱。如果有人感兴趣的话&#xff0c;录音是在八个轨道上进行的&#xff0c;你可以为每个轨道单独…...

cocos tilemap的setTileGIDAt方法不实时更新

需要取消勾选 Enable Culling。同时代码添加&#xff1a;markForUpdateRenderData函数。 floor.setTileGIDAt(102427,newP.x,newP.y,0); //中心 floor.markForUpdateRenderData(); 具体问题参考官网说明&#xff1a; Cocos Creator 3.2 手册 - 项目设置...

机器学习---使用 TensorFlow 构建神经网络模型预测波士顿房价和鸢尾花数据集分类

1. 预测波士顿房价 1.1 导包 from __future__ import absolute_import from __future__ import division from __future__ import print_functionimport itertoolsimport pandas as pd import tensorflow as tftf.logging.set_verbosity(tf.logging.INFO) 最后一行设置了Ten…...

铁合金电炉功率因数补偿装置设计

摘要 由于国内人民生活水平的提高&#xff0c;科技不断地进步&#xff0c;控制不断地完善&#xff0c;从而促使功率因数补偿装置在电力等系统领域占据主导权&#xff0c;也使得功率因数补偿控制系统被广泛应用。在铁合金电炉系统设计领域中&#xff0c;功率因数补偿控制成为目前…...

表格识别软件:科技革新引领行业先锋,颠覆性发展前景广阔

表格识别软件的兴起背景可以追溯到数字化和自动化处理的需求不断增加的时期。传统上&#xff0c;手动处理纸质表格是一项费时费力的工作&#xff0c;容易出现错误&#xff0c;效率低下。因此&#xff0c;开发出能够自动识别和提取表格数据的软件工具变得非常重要。 随着计算机…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...

DeepSeek越强,Kimi越慌?

被DeepSeek吊打的Kimi&#xff0c;还有多少人在用&#xff1f; 去年&#xff0c;月之暗面创始人杨植麟别提有多风光了。90后清华学霸&#xff0c;国产大模型六小虎之一&#xff0c;手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水&#xff0c;单月光是投流就花费2个亿。 疯…...