【数字静态时序分析】复杂时钟树的时序约束SDC写法
以上图为例,SoC芯片上往往存在几种不同的时钟源,有pll时钟、环振时钟、外部的晶振时钟,在SoC不同的模块或者不同的运行阶段使用的时钟也往往不同,所以在使用的时候,相同的模块会出现选择不同的时钟源的情况。上图的情形就会出现。这里先不展开各个时钟源之间的区别,也不展开clk_mux和div的设计因为还没写哈哈,但是可以去看我clk_gate的那一篇了解下clk_gate。【数字】一篇文章读懂数字芯片中的时钟门控单元/时序/ICG/clk gater-CSDN博客
进入对上述结构的sdc约束:
//进行时钟创建约束
//假设rco、HXT 50M,pll 200M,sleep 32K,LXT 32.768K
//-period表示时钟周期,waveform表示占空比,get_ports指明端口名
create_clock -name rco -period 20 -waveform {0 10} [get_ports rco]
create_clock -name HXT -period 20 -waveform {0 10} [get_ports HXT]
create_clock -name pll -period 5 -waveform {0 10} [get_ports pll]
create_clock -name LXT -period 30517 -waveform {0 15258} [get_ports LXT]
create_clock -name sleep -period 31250 -waveform {0 15625} [get_ports sleep]
//设置时钟的uncertainty
...
set_clock_uncertainty -setup/-hold [period 10%] [get_clocks rco]
...
至此第一步成功设立,以M0这个mux为例,创建mux两侧的clock,这些clock是源自rco或者HXT的所以需要使用generated clk,创建generated clk的原则是需要使用就近原则,-source的时候需要选择靠近的clk。
//创建M0前的clk,因为实际电路中需要进行SI的分析,需要将这种clk声明出来
//因为将generated clock创建在了不同的pins上,这样可以确保这些generated clock的source latency都是来自指定的位置,保证正确的时序分析
create_generated_clock -name m0_rco_a -source [get_ports rco] -divide 1 [get_pins m0/A]
create_generated_clock -name m0_HXT_b -source [get_ports HXT] -divide 1 [get_pins m0/B]//创建M0 output上的clk
create_generated_clock -name m0_rco_z -divide 1 m0/z -source m0/A -master_clock m0_rco_a -add
create_generated_clock -name m0_HXT_z -divide 1 m0/z -source m0/B -master_clock m0_HXT_b -add//设置logically_exclusive之后能保证这样的时钟线,实际布局的时候会摆放的比较远
set_clock_groups -logically_exclusive -group {m0_rco_a} -group {m0_HXT_b}
//M0后的时钟不会同时出现,所以是物理互斥的
set_clock_groups -physically_exclusive -group {m0_rco_z} -group {m0_HXT_z}
那按照这样的设置我们成功的把M0左右两端的时钟约束成功了!
那现在时钟传播到M2上,对M2进行clock约束。
//M2的A端,这个时候有2个clk已经在之前定义了,M2的B端是PLL的时钟,直接创建MUXed之后的时钟
create_generated_clock -name m2_rco_z -divide 1 m2/z -source m2/A -master_clock m0_rco_z -add
create_generated_clock -name m2_HXT_z -divide 1 m2/z -source m2/A -master_clock m0_HXT_z -add
create_generated_clock -name m2_pll_z -divide 1 m2/z -source m2/B -master_clock pll -add
//声明物理互斥
set_clock_group -physically_exclusive -group {m2_rco_z} -group {m2_HXT_z} -group {m2_pll_z}set_clock_group -logically_exclusive -group {pll} -group {m0_rco_z}
set_clock_group -logically_exclusive -group {pll} -group {m0_HXT_z}
按照这个规律同理我们能得到M1前后的clock,M3前后的clock,最终我们会在M3的Z端得到5个物理互斥的时钟,m3_rco_z,m3_HXT_z,m3_pll_z,m3_sleep_z,m3_LXT_z。
那如果经过DIV之后的DFF需要设置set_output_delay这种输出约束,-clock应该设置在上述哪一个时钟上呢?
因为M3的Z端的时钟必定只有一个输出出去,并且有可能不同情况下输出的时钟频率也不同,可以使用set_case_analysis来指定M0~M3的选择情况,以使用rco为例,sel0~sel3可以是0X00。
set_case_analysis 0 [get_ports {m0/sel m2/sel m3/sel}]
set_case_analysis 1 [get_ports {m1/sel}]
那在DIV之前加一个buf的目的是什么呢?
为了改名!
以m3_rco_z为例,set_output_delay -get_port A -clock m3_rco_z,那如果DIV后的时钟在使用m3_pll_z的时候驱动的是B,那B那边的约束就要把-clock 后面改成m3_pll_z,这样未免有些麻烦,所以用一个buf在那里将名字更改成同一个但是case不同source源不同,这样写不同模块的SDC约束的时候就可以简化很多。
经过分频器之后假设分频系数是3分频,且经过buf的clk为clk_buf
//经过buf的clk
create_generated_clock -name clk_buf -divide 1 buf/Q -source buf/D -master m3_rco_z//经过分频之后的clk
create_generated_clock -name clk_div -divide 3 div/Q -source div/CK -master clk_buf
另外需要强调的是在设置-asynchronous时
set_clock_groups -asynchronous -group {rco x0} -group {HXT x1}
set_clock_groups -asynchronous -group {rco a0} -group {HXT a1}
x0和a0之间工具仍然会分析,并没认为他们是异步的还需要声明x0与a0的异步关系才能消除工具的分析。
set_clock_groups -asynchronous -group x0 -group a0
相关文章:

【数字静态时序分析】复杂时钟树的时序约束SDC写法
以上图为例,SoC芯片上往往存在几种不同的时钟源,有pll时钟、环振时钟、外部的晶振时钟,在SoC不同的模块或者不同的运行阶段使用的时钟也往往不同,所以在使用的时候,相同的模块会出现选择不同的时钟源的情况。上图的情形…...

springboot苍穹外卖实战:五、公共字段自动填充(aop切面实现)+新增菜品功能+oss
公共字段自动填充 不足 比起瑞吉外卖中的用自定义元数据类型mybatisplus的实现,这里使用的是aop切面实现,会麻烦许多,建议升级为mp。 定义好数据库操作类型 sky-common中已经定义好,OperationType。 自定义注解 AutoFill co…...
Go 语言中,golang结合 PostgreSQL 、MySQL驱动 开启数据库事务
Go 语言中,golang结合 PostgreSQL 、MySQL驱动 开启数据库事务 PostgreSQL代码说明: MySQL代码说明: PostgreSQL 在 Go 语言中,使用 database/sql 包结合 PostgreSQL 驱动(如 github.com/lib/pq)可以方便地…...

Git核心概念
目录 版本控制 什么是版本控制 为什么要版本控制 本地版本控制系统 集中化的版本控制系统 分布式版本控制系统 认识Git Git简史 Git与其他版本管理系统的主要区别 Git的三种状态 Git使用快速入门 获取Git仓库 记录每次更新到仓库 一个好的 Git 提交消息如下&#…...

网络安全技术在能源领域的应用
摘要 随着信息技术的飞速发展,能源领域逐渐实现了数字化、网络化和智能化。然而,这也使得能源系统面临着前所未有的网络安全威胁。本文从技术的角度出发,探讨了网络安全技术在能源领域的应用,分析了能源现状面临的网络安全威胁&a…...

这些场景不适合用Selenium自动化!看看你踩过哪些坑?
Selenium是自动化测试中的一大主力工具,其强大的网页UI自动化能力,让测试人员可以轻松模拟用户操作并验证系统行为。然而,Selenium并非万能,尤其是在某些特定场景下,可能并不适合用来自动化测试。本文将介绍Selenium不…...
PHP反序列化靶场(php-SER-libs-main 第一部分)
此次靶场为utools-php-unserialize-main。适合有一定基础的师傅,内容是比较全面的,含有我们的大部分ctf中PHP反序列化的题型。 level1: <?php highlight_file(__FILE__); class a{var $act;function action(){eval($this->act);} } …...

基于大数据爬虫+Python+SpringBoot+Hive的网络电视剧收视率分析与可视化平台系统(源码+论文+PPT+部署文档教程等)
博主介绍:CSDN毕设辅导第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围…...

DHCP与FTP
DHCP dhcp:动态主机配置的协议,应用在大型的局域网环境中 服务端和客户端 服务端:提供IP地址,某种特定功能的提供者 客户端:请求IP地址,请求对应的功能的使用者 服务端的端口号:67 客户端的端…...

云渲染与云电脑,应用场景与技术特点全对比
很多朋友问,你们家一会宣传云渲染,一会宣传云电脑的,我到底用哪个?今天,渲染101云渲染和川翔云电脑就来对比下两者的区别! 渲染101&川翔云电脑,都是我们的产品,邀请码6666 一、…...

RockPI 4A单板Linux 4.4内核下的RK3399 GPIO功能解析
RockPI 4A单板Linux 4.4内核下的RK3399 GPIO功能解析 摘要:本文将基于RockPI 4A单板,介绍Linux 4.4内核下RK3399 GPIO(通用输入输出)功能的使用方法。通过详细的代码解析和示例,帮助读者理解如何在Linux内核中使用GPI…...
【Vue】Vue3.0(二十三)Vue3.0中$attrs 的概念和使用场景
文章目录 一、$attrs的概念和使用场景概念使用场景 二、代码解释Father.vueChild.vueGrandChild.vue 三、另一个$attrs使用的例子 一、$attrs的概念和使用场景 概念 在Vue 3.0中,$attrs是一个组件实例属性,它包含了父组件传递给子组件的所有非props属性…...
RHEL/CENTOS 7 ORACLE 19C-RAC安装(纯命令版)
一 首先需要安装两个CENTOS 7虚拟机(此处省略)。 由于我们是要安装ORCLE-RAC双节点集群所以至少每个CENTOS虚拟机上需要两块网卡,并且两块网卡都是HOST-ONLY具体步骤请看视频一《为虚拟机添加网卡》 这里大家需要注意的是,我们需要绑定两台机器的IP一共…...

CCSK:面试云计算岗的高频问题
在竞争激烈的云计算岗位求职市场中,拥有 CCSK云计算安全知识认证无疑能为你增添强大的竞争力。而深入了解云计算面试中的高频问题并熟练掌握答案,更是迈向成功的关键一步。 一、AWS 相关问题 AWS 是重要考点,常被问到其关键特性,…...

C++ String(1)
String的头文件是#include <string> String本质上是一个类,是C实现好的一个类 初学只用学重要的部分,不可能一次性全部学完 1.构造函数 我们先来看它的几个构造函数 首先(1)就是无参的构造 (2)是…...
ts 中 ReturnType 作用
ReturnType 用于获取函数的返回值类型。 一、基本概念和语法 1. 定义和语法结构 ReturnType是一个泛型类型,其语法为ReturnType<T>,其中T是一个函数类型。例如,如果有一个函数add,ReturnType<typeof add>就可以获取…...

Hadoop + Hive + Apache Ranger 源码编译记录
背景介绍 由于 CDH(Clouderas Distribution Hadoop )近几年已经开始收费并限制节点数量和版本升级,最近使用开源的 hadoop 搭了一套测试集群,其中的权限管理组件用到了Apache Ranger,所以记录一下编译打包过程。 组件…...

Java从入门到精通笔记篇(十二)
枚举类型与泛型 枚举类型可以取代以往常量的定义方式,即将常量封装在类或接口中 使用枚举类型设置常量 关键字为enum 枚举类型的常用方法 values()方法 枚举类型实例包含一个values()方法,该方法将枚举中所有的枚举值以数组的形式返回。 valueOf()可…...
入侵排查之Linux
目录 1.黑客入侵后的利用思路 2.入侵排查思路 2.1.账号安全 2.1.1.用户信息文件/etc/passwd 2.1.2.影子文件/etc/shadow 2.1.3.入侵排查 2.1.3.1.排查当前系统登录信息 2.1.4.2.查询可以远程登录的账号信息 2.2.历史命令 2.2.1.基本使用 2.2.1.1.root历史命令 2.2.…...

从0开始学习Linux——文件管理
往期目录: 从0开始学习Linux——简介&安装 从0开始学习Linux——搭建属于自己的Linux虚拟机 从0开始学习Linux——文本编辑器 从0开始学习Linux——Yum工具 从0开始学习Linux——远程连接工具 从0开始学习Linux——文件目录 从0开始学习Linux——网络配置 从0开…...

调用.net DLL让CANoe自动识别串口号
1.前言 CANoe9.0用CAPL控制数控电源_canoe读取程控电源电流值-CSDN博客 之前做CAPL通过串口控制数控电源,存在一个缺点:更换电脑需要改串口号 CSDN上有类似的博客,不过要收费,本文根据VID和PID来自动获取串口号,代码…...

数据通信与计算机网络——数字传输
主要内容 数字到数字转换 线路编码 线路编码方案 块编码 扰动 模拟到数字转换 脉冲码调制(PCM) Delta调制(DM) 传输模式 并行传输 串行传输 一、数字到数字转换 将数字数据转换为数字信号涉及三种技术: 线…...

2025政务服务便民热线创新发展会议顺利召开,张晨博士受邀分享
5月28日,由新华社中国经济信息社、新华社广东分社联合主办的2025政务服务便民热线创新发展暨“人工智能热线”会议在广州举行。会议围绕“人工智能与新质热线”主题,邀请全国的12345政务服务便民热线主管部门负责人、省市热线负责人和专家学者࿰…...

文档处理组件Aspose.Words 25.5全新发布 :六大新功能与性能深度优化
在数字化办公日益普及的今天,文档处理的效率与质量直接影响到企业的运营效率。Aspose.Words 作为业界领先的文档处理控件,其最新发布的 25.5 版本带来了六大新功能和多项性能优化,旨在为开发者和企业用户提供更强大、高效的文档处理能力。 六…...

装载机防撞系统:智能守护,筑牢作业现场人员安全防线
在尘土飞扬、机械轰鸣的建筑工地上,装载机是不可或缺的 “大力士”,承担着土方搬运、物料装卸等繁重任务。然而,传统作业模式下,装载机的安全隐患时刻威胁着现场人员的生命安全与工程进度。随着智能化技术的突破,唯创安…...
深入理解Java单例模式:确保类只有一个实例
文章目录 什么是单例模式?为什么我们需要单例模式?单例模式的常见实现方式1. 饿汉式(Eager Initialization)2. 懒汉式(Lazy Initialization)3. 双重检查锁定(Double-Checked Locking - DCL&…...
微信小程序前端面经
一、技术栈与编码能力(10min) 1. Vue 3 & Composition API Q1:请解释一下 ref 和 reactive 的区别?你在项目中是如何使用的? 答:ref是包装一个原始值或对象,通过.value访问,r…...
mysql实现分页查询
文章目录 mysql实现分页查询1. 使用LIMIT和OFFSET2. 使用计算OFFSET的函数(适用于动态分页)3. 使用MySQL的变量(适用于存储过程) 获取所有用户数据并分页 mysql实现分页查询 在MySQL中实现分页查询,通常我们会使用LIM…...

RDMA简介5之RoCE v2队列
在RoCE v2协议中,RoCE v2队列是数据传输的最底层控制机制,其由工作队列(WQ)和完成队列(CQ)共同组成。其中工作队列采用双向通道设计,包含用于存储即将发送数据的发送队列(SQ…...

【Elasticsearch】映射:Nested 类型
映射:Nested 类型 1.为什么需要 Nested 类型2.如何定义 Nested 类型3.相关操作3.1 索引包含 Nested 数据的文档3.2 查询 Nested 数据3.3 聚合 Nested 数据3.4 排序 Nested 数据3.5 更新 Nested 文档中的特定元素 4.Nested 类型的高级操作4.1 内嵌 inner hits4.2 多级…...