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

【数字静态时序分析】复杂时钟树的时序约束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。适合有一定基础的师傅&#xff0c;内容是比较全面的&#xff0c;含有我们的大部分ctf中PHP反序列化的题型。 level1&#xff1a; <?php highlight_file(__FILE__); class a{var $act;function action(){eval($this->act);} } …...

基于大数据爬虫+Python+SpringBoot+Hive的网络电视剧收视率分析与可视化平台系统(源码+论文+PPT+部署文档教程等)

博主介绍&#xff1a;CSDN毕设辅导第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围…...

DHCP与FTP

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

云渲染与云电脑,应用场景与技术特点全对比

很多朋友问&#xff0c;你们家一会宣传云渲染&#xff0c;一会宣传云电脑的&#xff0c;我到底用哪个&#xff1f;今天&#xff0c;渲染101云渲染和川翔云电脑就来对比下两者的区别&#xff01; 渲染101&川翔云电脑&#xff0c;都是我们的产品&#xff0c;邀请码6666 一、…...

RockPI 4A单板Linux 4.4内核下的RK3399 GPIO功能解析

RockPI 4A单板Linux 4.4内核下的RK3399 GPIO功能解析 摘要&#xff1a;本文将基于RockPI 4A单板&#xff0c;介绍Linux 4.4内核下RK3399 GPIO&#xff08;通用输入输出&#xff09;功能的使用方法。通过详细的代码解析和示例&#xff0c;帮助读者理解如何在Linux内核中使用GPI…...

【Vue】Vue3.0(二十三)Vue3.0中$attrs 的概念和使用场景

文章目录 一、$attrs的概念和使用场景概念使用场景 二、代码解释Father.vueChild.vueGrandChild.vue 三、另一个$attrs使用的例子 一、$attrs的概念和使用场景 概念 在Vue 3.0中&#xff0c;$attrs是一个组件实例属性&#xff0c;它包含了父组件传递给子组件的所有非props属性…...

RHEL/CENTOS 7 ORACLE 19C-RAC安装(纯命令版)

一 首先需要安装两个CENTOS 7虚拟机(此处省略)。 由于我们是要安装ORCLE-RAC双节点集群所以至少每个CENTOS虚拟机上需要两块网卡&#xff0c;并且两块网卡都是HOST-ONLY具体步骤请看视频一《为虚拟机添加网卡》 这里大家需要注意的是&#xff0c;我们需要绑定两台机器的IP一共…...

CCSK:面试云计算岗的高频问题

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

C++ String(1)

String的头文件是#include <string> String本质上是一个类&#xff0c;是C实现好的一个类 初学只用学重要的部分&#xff0c;不可能一次性全部学完 1.构造函数 我们先来看它的几个构造函数 首先&#xff08;1&#xff09;就是无参的构造 &#xff08;2&#xff09;是…...

ts 中 ReturnType 作用

ReturnType 用于获取函数的返回值类型。 一、基本概念和语法 1. 定义和语法结构 ReturnType是一个泛型类型&#xff0c;其语法为ReturnType<T>&#xff0c;其中T是一个函数类型。例如&#xff0c;如果有一个函数add&#xff0c;ReturnType<typeof add>就可以获取…...

Hadoop + Hive + Apache Ranger 源码编译记录

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

Java从入门到精通笔记篇(十二)

枚举类型与泛型 枚举类型可以取代以往常量的定义方式&#xff0c;即将常量封装在类或接口中 使用枚举类型设置常量 关键字为enum 枚举类型的常用方法 values()方法 枚举类型实例包含一个values()方法&#xff0c;该方法将枚举中所有的枚举值以数组的形式返回。 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——文件管理

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

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

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

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

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...