Tcl语言:SDC约束命令create_generated_clock详解(下)

news2024/11/25 21:28:24

相关阅读

Tcl语言icon-default.png?t=N7T8https://blog.csdn.net/weixin_45791458/category_12488978.html?spm=1001.2014.3001.5482


设定生成时钟特性

        前文的末尾提到,当使用-divide by或-multiply_by选项创建生成时钟时,会根据master clock的时钟周期派生出生成时钟的周期,但对于时钟边沿的处理,两者则不一致。但是,仍然有方法在一定程度上对占空比进行设定。现在拿图1中的时钟倍频器举例说明,图2是它的波形图,假设clk的周期是20ns。

 图1 时钟倍频器

图2 倍频器电路时钟波形

        对clk时钟和生成时钟clk_out的定义为:

create_clock -period 20 -waveform {5 15} [get_port clk]
create_generated_clock -source [get_port clk] -multiply 2 [get_port clk_out]

        而前文所说,生成时钟的周期变为10ns,而所有的沿出现的时间都除以2,如图3所示。

图3 生成倍频时钟

        此时,可以通过-duty_cycle选项设定占空比,该选项只能和-multiply_by一起使用,用以表示时钟信号中占空比,继续拿图1举例,可以看出生成时钟和原时钟的占空比都为50%,如果想要一个占空比为30%的生成时钟,则可以使用下面的命令,生成时钟的占空比可以从图4中看出确实变为了30%。

create_generated_clock -source [get_port clk] -multiply 2 [get_port clk_out] 
    -add -name test -duty_cycle 30

图4  -duty_cycle选项改变倍频生成时钟占空比

        如果存在不止一个高脉冲会怎么样,下面像前文一样定义一个复杂的时钟,拥有两个脉冲,占空比分别为20%和25%,并试图改变它的倍频生成时钟的占比,结果如图5所示,可以看到Design Compiler直接忽略了除第一个正脉冲之外的所有脉冲。

create_clock -period 20 -waveform {2 6 12 17} [get_port clk]
create_generated_clock -source [get_port clk] -multiply 2 [get_port clo_out] -duty_cycle 10

 图5 试图改变多脉冲生成时钟的占空比

时钟沿偏移

        前文介绍的-divide by和-multiply_by在生成一些波形时无能为力,因为无法控制生成信号的占空比。但-edge_shift选项使得创建任意形状的生成时钟成为了可能,下面举例说明。假设要根据图6生成图7所示的波形。

图6 原时钟波形 

图7 生成时钟波形 

        可以使用下面的命令,这意味对于生成时钟,第一个上升沿对齐原时钟的第一个上升沿,下一个下降沿出现在原时钟的第一个上升沿后2ns,第二个上升沿出现在原时钟的第二个上升沿(第三个沿)。时钟偏移可以是正向的。也可以是负向的,这使得用-edge和-edge_shift对任意复杂波形的建模成为了可能。

create_generated_clock -source [get_port clk] -edge {1 1 3} 
    -edge_shift {0 2 0} [get_port clk_out]

生成时钟源引脚出现多个时钟

        正如前文所述,如果一个引脚或端口上有多个时钟传播至此,则无法推断出生成时钟属于哪个master clock,需要显式指明。这可以使用-master_clock选项实现,只需指定参数为master_clock的名字即可,下面我们用一个例子说明这一点,对于图8所示的电路,我们在U4的输出Y上定义了两个时钟,现在假设在输出c上定义两个生成时钟,它们分别基于clk1和clk2。

图8 多个生成时钟 

create_clock -name clk1 -period 10 [get_pin U4/Y]
create_clock -name clk2 -period 20 [get_pin U4/Y] -add

create_generated_clock -source [get_port U4/Y] -divide_by 1 
    -master_clock [get_clock clk1] [get_port c] -name clk1_
create_generated_clock -source [get_port U4/Y] -divide_by 1 
    -master_clock [get_clock clk2] [get_port c] -add -name clk2_

组合电路生成时钟

        图9给出了一个源同步接口。在源同步接口中,时钟随着数据一起作为输出,这种结构的优点是结构时钟和数据的传输延迟相同,从而它们的延时大小不重要。接收设备可以根据输入时钟对输入数据进行采样。

图9 源同步接口

        图中的dataout引脚的延迟应该根据clk_out设定。这种情况下,生成时钟应该定义在clk_out上。这可以利用-combinational选项实现,设定了该选项后,生成时钟的周期与master clock相同,相当于-divide_by 1,这时不能用其他任何选项。

create_generated_clock -name clk_out -combinational -source [get_pins clk_out0_reg/Q]
    [get_port clk_out]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1186584.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java 进阶篇】Java Filter 快速入门

欢迎来到这篇有关 Java Filter 的快速入门指南!如果你是一名 Java 开发者或者正在学习 Java Web 开发,Filter 是一个强大的工具,可以帮助你管理和控制 Web 应用程序中的请求和响应。本文将向你解释 Filter 的基本概念,如何创建和配…

安全认证框架Shiro入门学习(shiro概述和shiro入门小案例);后续整合SpringBoot,应用程序安全;

权限概述 什么是权限 什么是权限 权限管理,一般指根据系统设置的安全策略或者安全规则,用户可以访问而且只能访问自己被授权的资源,不多不少。权限管理几乎出现在任何系统里面,只要有用户和密码的系统。 权限管理再系统中一般分…

小米6安装Ubuntu Touch系统也不是很难嘛

序言 这个文章是用来解说,小米6如何安装Ubuntu Touch系统 正文 安装这个系统需要注意的几点 1.手机必须已经解BL锁 2.没了 安装步骤 先双击打开压缩包查看,按照第一步第二步来进行执行,下面是解压图片 第一步 1.打开第一个文件夹 复制刷入rec的命令.txt里面的内容,然后打开红…

pytorch(小土堆)深度学习

第五节课讲项目的创建和对比 第六节:Dataset,Dataloader Dataset提供一种方式区获取数据及其label(如何获取每一个数据及其label,告诉我们总共有多少的数据) Dataloader为后面的网络提供不同的数据形式 第七节:Dataset类代码实战 显示图片 f…

挑战100天 AI In LeetCode Day05(热题+面试经典150题)

挑战100天 AI In LeetCode Day05(热题面试经典150题) 一、LeetCode介绍二、LeetCode 热题 HOT 100-72.1 题目2.2 题解 三、面试经典 150 题-73.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站,提供各种算法和数据结构的题目&am…

开源的全能维护 U 盘工具:Ventoy

开源的全能维护 U 盘工具:Ventoy 本篇文章聊聊迄今为止,我用着最舒服的一款开源 U 盘启动工具,Ventoy。 写在前面 好久不见,接下来计划写一个比较连续的内容,就先从最小的处着手吧。 经过长久的折腾,除…

Docker本地镜像发布到阿里云或私有库

本地镜像发布到阿里云流程 : 1.自己生成个要传的镜像 2.将本地镜像推送到阿里云: 阿里云开发者平台:开放云原生应用-云原生(Cloud Native)-云原生介绍 - 阿里云 2.1.创建仓库镜像: 2.1.1 选择控制台,进入容器镜像服…

Makefile 总述

目录 一、Makefile 里有什么? 1、显式规则 2、隐晦规则 3、变量的定义 4、文件指示 5、注释 二、Makefile 的文件名 三、引用其它的 Makefile 四、环境变量 MAKEFILES 五、make 的工作方式 一、Makefile 里有什么? Makefile 里主要包含了五个东…

Ps:图层蒙版的基本操作

点击图层蒙版缩览图选中图层蒙版之后,方可进行图层蒙版的操作。 反相蒙版 Invert 将图层蒙版上的白色转换为黑色,黑色转换为白色。 方法一: Ps菜单:图像/调整/反相 Adjustments/Invert 方法二: 快捷键:Ctrl…

window10单机部署hbase-2.5.5-hadoop3

一、介绍 hbase是什么,Hbase是一个分布式,可扩展,支持海量数据存储的noSQL数据库 二、下载hbase https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/2.5.6/ 三、配置hbase环境变量 三、修改hbase配置文件 在hbase-env.cmd添加如下配置…

【算法-链表2】反转链表 和 两两交换链表节点

今天,带来链表相关算法的讲解。文中不足错漏之处望请斧正! 理论基础点这里 反转链表 1. 思路 链表操作的本质是修改连接关系,本题我们需要反转链表,也就是每次都让当前节点的next指向自己的上一个。而题目给的是单链表&#xf…

Linux tail命令:显示文件结尾的内容

tail 命令和 head 命令正好相反,它用来查看文件末尾的数据,其基本格式如下: [rootlocalhost ~]# tail [选项] 文件名 此命令常用的选项及含义 【例 1】查看 /etc/passwd 文件最后 3 行的数据内容。 [rootlocalhost ~]# tail -n 3 /etc/passwd…

jmeter接口自动化部署jenkins教程

首先,保证本地安装并部署了jenkins,jmeter,xslproc 我搭建的自动化测试框架是jmeterjenkinsxslproc ---注意:原理是,jmeter自生成的报告jtl文件,通过xslproc工具,再结合jmeter自带的模板修改&…

Linux - 进程程序替换 - C/C++ 如何实现与各个语言之间的相互调用 - 替换环境变量

前言 我们之前利用 fork()函数来创建子进程,这种方式是 父子进程 共用一个代码,只是在代码当中使用了 if-else 语句来分流,达到父子进程运行不同的代码块的目的。但是其实本质上,还是父子共用一个代码和数…

C进阶-编译环境与预处理

本章重点: 程序的翻译环境 程序的执行环境 详解:C语言程序的编译链接 预定义符号介绍 预处理指令#define 宏和函数的对比 预处理操作符#和##的介绍 命令定义 预处理指令#include 预处理指令#undef 条件编译 1. 程序的翻译环境和执行环境 在ANSI C的任何一…

基层医院、民营医院、二级医院his系统源码,云计算技术B/S架构

在我国,基层医院和民营医院在总体数量上占据很大比例,但信息化水平普遍偏低。造成这一现状的原因有很多,如对信息化的重视度不够、缺乏足够的资金投入等,严重局限了自己在市场上对系统的选择面,而且难以保证有效的维护…

PDF Expert for mac(苹果电脑专业pdf编辑器)兼容12系统

PDF Expert是macOS平台上的一款优秀的PDF阅读和编辑工具,由Readdle公司开发。它不仅拥有方便、易用的界面,还具备诸多功能,比如编辑PDF文件、添加批注、填写表格、签署文件、合并文档等。安装:PDF Expert for Mac(PDF编辑阅读转换器)v3.5.2中…

Springer LaTeX 模板,及使用Texworks编译参考文献不显示问题

模板下载地址:Manuscripts with mathematical content can also be submitted in LaTeX. We recommend using Springer Nature’s LaTeX template. 下载的压缩包中包含以下文件: 使用Texworks打开.tex文件,生成的PDF有参考文献,但…

一个界面现代美观,色彩年轻化的Vue3+SpringBoot3前后端分离中后台管理脚手架

📚 在线文档 | ✨ 提交需求 | 🚀 演示地址(账号/密码:admin/admin123) 简介 ContiNew Admin (Continue New Admin)中后台管理框架/脚手架,持续以最新流行技术栈构建,拥…

PCL点云处理(008)-euc_cluster

欧式聚类是一种基于距离的聚类算法,可以将点云中距离较近的点聚集在一起,形成一个簇。 在PCL库中,欧式聚类的实现原理是将点云中的每个点看作一个向量,然后计算这些向量之间的欧式距离。欧式距离是指两个向量之间的距离&#xff0…