当前位置: 首页 > 编程日记 > 正文

FPGA管脚约束

Edit → language templates :

打开即可查看基本语法。

一、xilinx中的约束文件

1、约束的分类

利用FPGA进行系统设计常用的约束主要分为3类。

(1)时序约束:主要用于规范设计的时序行为,表达设计者期望满足的时序条件,知道综合和布局布线阶段的优化算法等。

(2)布局布线约束:主要用于指定芯片I/O引脚位置以及指导软件在芯片特定的物理区域进行布局布线。

(3)其它约束:指目标芯片型号、接口位置、电气特性等约束属性。

2、约束的主要作用

(1)提高设计的工作效率

对很多数字电路设计来说,提高工作频率是非常重要的,因为高的工作频率意味着高效的电路处理能力,通过附加约束可以控制逻辑的综合、映射、布局和布线,以减少逻辑和布线的延迟,从而提高工作效率。

(2)获得正确的时序分析报告

几乎所有的FPGA设计平台都包含静态时序分析工具,利用这类工具可以获得映射或者是布局布线后的时序分析报告,从而对设计的性能做出评估。静态时序分析工具以约束作为判断时序是否满足设计要求的标准,因此要求设计者正确输入约束,以便静态时序分析工具输出正确的时序分析报告。

(3)指定FPGA引脚位置与电气标准

FPGA的可编程性使电路板设计加工和FPGA设计可以同时进行,而不必等FPGA引脚位置的完全确定,从而节约了系统开发时间。电路板加工完成后,设计者要根据电路板的走线对FPGA加上引脚位置约束,以保证FPGA与电路板正确连接。另外通过约束还可以指定I/O引脚所支持的接口标准和其他电气特性。为了满足日新月异的通信发展,Xilinx新型FPGA可以通过I/O引脚约束设置支持,诸如AGP、BLVDS、CTT、GTL、GTLP、HSTL、LDT、LVCMOS、LVDCI、LVDS、LVPECL、LVDSEXT、LVTTL、PCI、PCIX、SSTL、ULVDS等丰富的I/O接口标准。

(4)利于模块化设计

通过区域约束还能在FPGA上规划各个模块的实现区域,通过物理布局布线约束完成模块化设计等。

3、UCF约束文件

ISE 通过综合工具XST对设计进行约束,XST的综合约束文件时XCF文件,而在布局布线阶段,最重要的约束文件是用户约束文件UCF(user constraint file),两者有着千丝万缕的联系,UCF几乎支持XCF的所有约束语言和命令。通常在使用XST综合流程时,仅仅通过综合属性设置来设置全局的综合策略与参数,细化的约束是通过实现阶段的约束文件UCF完成的。因此,UCF文件时约束文件的核心,通过编译UCF文件可以实现时序、布局布线约束以及其他约束的绝大部分功能。

二、约束设计实例

  A-时序约束

时序约束分为周期约束、I/O时序约束、分组约束和专门约束

1、周期约束

周期约束是一个基本时序和综合约束,它附加在时钟网络上,时序分析工作根据周期约束检查时钟域内所有同步器件的时序是否满足要求,它将检查与同步时序约束端口相连接的所有路径的延迟,但不会检查PAD到寄存器路径。

周期约束的语法如下:

TIMESPEC “TS_identifier”=PERIOD “TNM_reference” period {High|low}[high_or_low_time]

说明:

(1)    TIMESPEC是一个基本时序相关约束标识

(2)    TM_identifier包括字母TM和一个标识符identifier共同组成一个时序规范。

(3)    参数period为要求的时钟周期,可以使用ps、ns、us或者ms等单位,大小写都可以,缺省单位为ns

(4)    “{}”为必选项,HIGH|LOW关键词指出时钟周期里的第一个脉冲是高电平还是低电平

(5)    “[]”内为可选项,high_or_low_time为脉冲的延续时间,缺省单位是ns,默认占空比为50%

(6)    定义时钟周期约束时,首先需要对待约束的时钟网络上附加一个TNM_NET约束,把由该时钟驱动的所有同步器件定义为一个分组,然后使用TIMESPEC约束定义时钟周期。

【例1】        周期约束设计实例

NET “usr_clk” TNM_NET= “usr_clk”;

TIMESPEC “TS_usr_clk” = PERIOD “usr_clk” 5.0ns

例1中第一条约束定义时钟usr_clk驱动的所有同步器件为一个分组;第二条约束定义其周期为5ns,即200MHZ

2、I/O时序约束

I/O时序约束定义了时钟和I/O接口之间的时序关系,只用于与I/O接口相连的信号,不能用于内部信号。

I/O时序约束可以约束输入数据、输出数据相对于时钟的时序关系,从而在综合实现中调整布局布线,是正在开发的FPGA的输入建立时间、输出保持时间保持系统要求。

I/O时序约束的语法如下:

OFFSET=IN “offset_time” [units] BEFORE “clk_name” [TIMEGRP “group_name”];

OFFSET=OUT “offset_time” [units] AFTER “clk_name” [TIMEGRP “grout_name”];

说明:

(1)OFFSET、IN、BEFORE是I/O时序约束输入建立时间标识,具体含义为:输入数据与时钟的时序关系满足offset_time定义的时间

(2)OFFSET、OUT、AFTER是I/O时序约束输出保持时间标识,具体含义为:输出数据与时钟的时序关系满足offset_time定义的时间

(3)”offset_time”是约束要求的时间

(4)”clk_name”为参考时钟

(5)[TIMEGRP “grout_name”]为约束的寄存器组。

【例2】I/O时序约束

INST “io_emif_data<0>” TNM=TS_emif_data;

INST “io_emif_data<1>” TNM=TS_emif_data;

INST “io_emif_data<2>” TNM=TS_emif_data;

INST “io_emif_data<3>” TNM=TS_emif_data;

INST “io_emif_data<4>” TNM=TS_emif_data;

INST “io_emif_data<5>” TNM=TS_emif_data;

INST “io_emif_data<6>” TNM=TS_emif_data;

INST “io_emif_data<7>” TNM=TS_emif_data;

NET “IO_emif_clk” TNM_NET= I_emif_clk;

TIMEGRP “TS_emif_data” OFFSET = OUT 7ns AFTER “I_emif_clk”;

例2表示,约束定义TS_emif_data寄存器组与时钟I_emif_clk的关系为时钟有效后7ns输出TS_emif_data寄存器的可靠数据。

3、分组约束

分组约束是将一些具有相同时序要求的器件归为一组,进行相同的时序约束。

分组约束的语法如下:

{NET|INST} “net_name” TNM_NET= [predefined_group] identifier;

{NET|INST|PIN} “net_or_pin_or_inst_name” TNM = [predefined_group] identifier;

(1)    INST、NET和PIN为信号,引脚等关键词。

(2)    TNM为分组约束关键词

(3)    TNM_NET为分组约束关键词,其作用于TNM加在网上是基本相同,即把该网线所在路径上的所有有效同步元件作为命名组的一部分。不同之处在于当TNM约束加在PAD NET 上时,TNM的值将被赋予PAD,而不是该网线所在的路径上的同步元件,即TNM的约束不能穿过IBUF。而用TNM_NET约束就不会出现这种情况。

(4)    identifier为标识符

(5)    predefined_group为预先定义组标识符

分组约束的例子参见【例2】

4、专门约束

约束文件设计的一般策略是首先设定整体约束,例如PERIOD、OFFSET等,然后对局部的电路附加专门约束,这些专门约束通常比整体约束宽松,通过在可能的地方尽量放松约束可以提高布局布线通过率,减小布局布线的时间。

(1)    FROM_TO约束

FROM_TO约束在两个定义的组之间进行时序约束,对两者之间的逻辑和布线延迟进行控制。

语法如下:TIMESPEC “TS_name”= FROM “group1” TO “group2” value;

其中value为延迟时间,可以使具体数值或表达式。

(2)    MAXDELAY约束

MAXDELAY约束定义了特定路径上的最大延迟。

语法如下:

NET “net_name” MAXDELAY = value units;

  B-布局布线约束

布局布线约束包括引脚约束与位置约束

1、引脚约束

约束FPGA输入输出引脚的具体位置。

引脚约束的语法如下:

NET “net_name” LOC= “PIN”;

说明:

(1)    NET,LOC引脚约束关键词

(2)    “net_name”为FPGA内部定义的输入输出信号名称;

(3)    “PIN”为FPGA实际引脚名称。

【例3】        引脚约束实例

NET “sys_rst_n” LOC= “J12”;

2、位置约束

位置约束是通过约束语法将设计中的某些硬件结构约束到指定的位置。

位置约束的语法如下。

(1)    INST “instance_name” LOC=location;

对设计中的硬件约束到具体位置,可以约束的硬件结构包括:寄存器、IOB、LUT、BRAM、乘法器、PLL等。

(2)    INST “instance_name” RLOC= location;

对设计中的硬件约束到相对位置, 可约束的硬件结构包括:寄存器、IOB、LUT、BRAM、乘法器、PLL等。必须与RLOC_ORIGIN配套使用。

(3)    INST “instance_name” RLOC_ORIGIN =location;

与RLOC对应,指定RLOC的起始位置约束,与RLOC配套使用。

(4)    INST “instance_name“ HU_SET=value;

高级属性定义约束,定义独立的组,与RLOC配套使用,以保持结构的完整性。

【例4】        位置约束设计实例1

INST “u_receive_serdes/gtp_dual_i” LOC = GTP_DUAL_X0Y0;

INST “u_idelayctrl”       LOC=IDELAYCTRL_X2Y1;

INST “u_en_dqs_ff”      LOC=SLICE_X0Y51;

INST “u_iddr_dq_ce”     LOC=”ILOGIC_X0Y102;

例4的4个约束分别约束了GTP模块、IDELAYCTRL、SLICE以及ILOGIC.

【例5】        位置约束实例2

INST “delay_inout_u/in1”       RLOC_ORIGIN=X00Y60;

INST”delay_inout_u/in1”       RLOC=X0Y0;

INST”delay_inout_u/in2”       RLOC=X0Y1;

INST”delay_inout_u/*”         HU_SET=MA;

例5利用了RLOC_ORIGIN以及RLOC和HU_SET定义了一个相对位置约束。其中*为通配符,指”delay_inout_u/”内所有元件具有的属性。

  C-其他约束

除了时序约束以及引脚和位置约束外,Xilinx公司还提供了其他一些约束,例如:

(1)    PULLDOWN约束

NET “pad_net_name” PULLDOWN

说明:下拉约束,输出低电平,以避免在无驱动时三态门的输出悬空。

(2)    PULLUP约束

NET “pad_net_name” PULLUP

说明:上拉约束,输出高电平,以避免在无驱动时三态门的输出悬空。

(3)    IOSTANDARD

NET “pad_net_name” IOSTANDARD = iostandard_name

说明:输入输出引脚电平约束

(4)    DRIVE

INST “instance_name” DRIVE= {2|4|6|8|12|16|24};

说明:输出电流能力约束,可选为2mA, 4mA, 6mA, 8mA, 12mA, 16mA, 24mA电流输出,默认值为12mA输出。

(5)    SLEW

NET “FAST_OUT” SLEW=”FAST”

说明:输出斜率控制,可选为FAST以及SLOW,可以提高设计的信号完整性。


1-普通的I/O只约束管脚和电压

NET “端口名称” LOC = 引脚编号 | IOSTANDARD = “电压”;

例如时钟管脚:

从而可以写成:

转载于:https://www.cnblogs.com/xingshansi/p/7102027.html

相关文章:

Matlab数据的可视化 -- 线性图函数plot

本篇微信图文主要介绍Matlab数据可视化方面的内容。

日志文件和mysql同步到kafka_logstash_output_kafka:Mysql同步Kafka深入详解

0、题记实际业务场景中&#xff0c;会遇到基础数据存在Mysql中&#xff0c;实时写入数据量比较大的情景。迁移至kafka是一种比较好的业务选型方案。而mysql写入kafka的选型方案有&#xff1a;方案一&#xff1a;logstash_output_kafka 插件。方案二&#xff1a;kafka_connector…

TPYBoard自制微信远程智能温湿度计

2019独角兽企业重金招聘Python工程师标准>>> 智能时代一夜间什么都能远程了。创业者想着如何做智能产品&#xff0c;如何做远程控制。DIY爱好者也想着如何自制各种奇妙的工具。这里和大家一起学习制作一款廉价的智能温湿度计。说它廉价是因为共计花费不过40元&#…

Matlab数据的可视化 -- 简易线性函数图

本篇微信图文主要介绍Matlab数据可视化方面的内容。

浏览器tab关闭事件_Python--使用Pyqt5实现简易浏览器(最新版本测试过)

Python--使用Pyqt5实现简易浏览器(最新版本测试过)博客说明文章所涉及的资料来自互联网整理和个人总结&#xff0c;意在于个人学习和经验汇总&#xff0c;如有什么地方侵权&#xff0c;请联系本人删除&#xff0c;谢谢&#xff01;准备环境首先我们需要的是我们的开发环境&…

JS 中 URL 编码的问题.

URL 编码 为什么要对 URL 编码 1. 避免解析错误 我们的 queryString 的形式是使用 ?开始, keyvalue 传递参数, key-value pairs 之间使用 & 连接.比如: ?postid5038412&t1450591802326服务器会 根据 & 解析 key-value pairs 根据 解析 key,value 那么如果 key或…

通用权限管理模块系列——需求分析——列举需求

以RBAC为理论基础 以低耦合为设计原则 我们计划设计一个独立的权限模块 碰到一些难题&#xff0c;后面另外开文章来讨论 本文主要是列举目前收集到的权限方面的需求信息&#xff0c;如果各位有能提供的用例&#xff0c;请不吝赐教。 各种需求都是从网络或零碎项目里提取的&…

Matlab数据的可视化 -- 散点图

本篇微信图文主要介绍Matlab数据可视化方面的内容。scatter

koa连接mysql_CentOS 环境 Node + Koa2 连接 MySQL (ECS系列三)

Koa 搭建服务新建一个文件夹 koa_server&#xff0c;进入后cnpm i -S koa会生成 node_modules 依赖包&#xff0c;以及 package.json创建文件 server.js&#xff0c;并写入const Koa require(koa);const app new Koa();app.use( async ( ctx ) > {ctx.body hello koa2})a…

Python CRC32 文件校验

binascii.crc32(s [,crc])返回CRC32校验。参数crc指定初始值用于循环。例如&#xff1a;Code>>> import binascii>>> crc binascii.crc32(spam)>>> binascii.crc32( and eggs, crc)739139840>>> binascii.crc32(spam and eggs)739139840C…

国家智慧城市战略实施 保温材料等建材万亿市场待挖掘

近年来&#xff0c;国家多部委联合发布《国家新型城镇化规划(2014—2020)》《关于促进智慧城市健康发展的指导意见》&#xff0c;提出到2020年建成一批特色鲜明的智慧城市。国家智慧城市建设与发展上升为国家战略。2014年中国智慧城市的市场规模达到800多亿元&#xff0c;其中不…

Matlab数据的可视化 -- 极坐标图及其与直角坐标图的转换

本篇微信图文主要介绍Matlab数据可视化方面的内容。polar、pol2cart、cart2pol

mysql 主从复制 性能_zabbix监控mysql各项性能,主从复制

######################################################监控mysql(默认监控模板不能用&#xff0c;再agentd.conf开启自定义key&#xff0c;自己编写脚本)在zabbix_agentd.conf尾部添加(注意相关文件路径&#xff0c;以及脚本权限等问题)vim zabbix_agentd.confUserParameter…

SQL Server基础知识之:设计和实现视图

设计和实现视图可谓是数据库物理设计中的一个非常重要的步骤。从一般意义上说&#xff0c;设计和实现视图应该遵循下面的一些建议和原则。 以下内容摘在文档&#xff0c;我对某些重点进行了补充说明&#xff08;红色部分&#xff09; 只能在当前数据库中创建视图。 但是&#x…

Matlab数据的可视化 -- 条形图

本篇微信图文主要介绍Matlab数据可视化方面的内容。bar、barh

全球SDN测试认证中心发布OpenDaylight测试报告

随着软件定义网络(Software Defined Network, SDN)商业部署速度地加快,关乎整个SDN 网络性能表现的控制平面核心组件——SDN 控制器也越来越成为网络用户关心的焦点。日前&#xff0c;天地互连-全球SDN测试认证中心&#xff08;SDNCTC&#xff0c;www.sdnctc.com&#xff09;正…

mysql可以做日期处理吗_mysql可以做日期处理吗

最近一个项目&#xff0c;需要写很多的sql语句。涉及到很多与时间相关的处理&#xff0c;现在做一下简单的总结。1.时间格式&#xff1a;在这个项目中&#xff0c;或许是由不同的人建立的数据库表结构吧&#xff0c;对时间的格式步统一&#xff0c;有的表中存储的long类型的时间…

大型网站采用什么系统架构保证性能稳定性

from http://www.bobd.cn/design/web/Theory/200904/31145.html 千万级的注册用户&#xff0c;千万级的帖子&#xff0c;nTB级的附件&#xff0c;还有巨大的日访问量&#xff0c;大型网站采用什么系统架构保证性能和稳定性&#xff1f; 首先讨论一下大型网站需要注意和考虑的问…

Matlab数据的可视化 -- 饼图

本篇微信图文主要介绍Matlab数据可视化方面的内容。pie

Rushcrm:企业部署CRM系统做什么

现在很流行的一个词就是大数据&#xff0c;很多企业开始重视数据的开发利用。CRM在这样的环境背景下诞生了&#xff0c;但这并不意味着所有的企业都能很好的利用好CRM系统(客户关系管理系统)。CRM带来的效益是显而易见的&#xff0c;但是购置了CRM系统仅仅是第一步&#xff0c;…

slot没有毁灭的问题_解析flink之perjob模式下yn参数不生效问题

概要&#xff1a;0. 问题背景1. Stream Job的切分2. 计算资源的调度 & 任务的执行3. 最后的总结0. 问题背景&#xff1a;开始用flink处理流式作业的时候&#xff0c;用yarn-cluster模式提交作业的时候&#xff0c;脚本如下&#xff1a;$FLINK_BIN run -m yarn-cluster -yqu…

获取access中表的相关信息

就用到两条.net自带的获取数据库信息的语句 OleDbConnection con new OleDbConnection(connection); // OleDB数据库连接实例 // 获取数据库中表的相关信息DataTable dt con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] { null, null, null, "Table"…

Matlab数据的可视化 -- 茎干图

本篇微信图文主要介绍Matlab数据可视化方面的内容。stem

Wink发布Wink Hub2家庭物联网控制中心

智能家居主要厂商之一Wink宣布推出Wink Hub2家庭物联网控制中心&#xff0c;支持更多的家庭物联网产品&#xff0c;更广泛的互联互通&#xff0c;以及提供更好用的控制程序。Wink Hub2主要作用是连接第三方家庭物联网产品&#xff0c;并从一个集中的应用程序进行控制。 Wink Hu…

mysql repalication_MySQL主从复制的原理及配置方法(比较详细)

一、复制的原理MySQL 复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新、删除等等)。每个从服务器从主服务器接收主服务器已经记录到其二进制日志的保存的更新&#xff0c;以便从服务器可以对其数据拷贝执行相同的更新。将主服务器的数据拷贝到从服务器的一个途径是…

贸易保护主义不能解决德国光伏企业的问题

针对德国媒体近期将该国光伏巨头SolarWorld宣布破产一事与中国相关联&#xff0c;甚至指责“中国盗走德国工作”的论调&#xff0c;中国驻德国大使馆经济商务参赞处公使衔参赞王卫东18日向记者表示&#xff0c;SolarWorld作为当初推动欧盟发起对华光伏产品“双反”措施的领头公…

Matlab数据的可视化 -- 平面多边形的着色

本篇微信图文主要介绍Matlab数据可视化方面的内容。fill

ASP.net session 使用总结(2)

Session又称为会话状态&#xff0c;是Web系统中最常用的状态&#xff0c;用于维护和当前浏览器实例相关的一些信息。举个例子来说&#xff0c;我们可以把已登录用户的用户名放在Session中&#xff0c;这样就能通过判断Session中的某个Key来判断用户是否登录&#xff0c;如果登录…

python re模块_Python re模块

正则表达式元字符说明. 匹配除换行符以外的任意字符^ 匹配字符串的开始$ 匹配字符串的结束[] 用来匹配一个指定的字符类别? 对于前一个字符字符重复0次到1次* 对于前一个字符重复0次到无穷次{} 对于前一个字符重复m次{m,n} 对前一个字符重复为m到n次\d 匹配数字&#xff0c;相…

国外优秀开源PHP建站程序一览

大量的PHP开源&#xff08;开放源代码/Open Source&#xff09;应用改变了这个世界&#xff0c;改变了互联网&#xff0c;以下我们总结从数据库到购物、博客等众多类型的开源PHP软件&#xff0c;供网站开发者们参考。 博客&#xff1a;WordPress WordPress是使用PHP开发的著名博…