




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第页FPGA时序分析-建立时间和保持时间裕量都是inf怎么解决呢?今天有个小伙伴遇到一个问题,就是在viv(ad)o里面综合后看到的建立时间和保持时间裕量都是inf,我们来看看怎么解决这个问题。
实验一:
module(te)stMem(inputclk,input[9:0]addr,inputwe,input[7:0]wdata,outputreg[7:0]rdata);reg[7:0]mem[1023:0];reg[7:0]data;reg[7:0]data1;reg[7:0]data2;reg[7:0]data3;always@(posedgeclk)beginif(we)beginmem[addr]
时序约束如下:
create_clock-period5.000-namesys_clk[get_portsclk]set_property-dict{PACKAGE_(PI)NU18(IOS)TANDARDLVCMOS33}[get_portsclk]
代码非常简单,大家一看就可以知道,这段代码会被映射到一个Bram上。综合后的资源报告也印证了我们的想法:
但是看时序分析:
是不是感觉很奇怪明明我们约束(时钟)了,为什么时序分析后是inf呢,我们来看一下他综合后的框图就明白了。
可以看到在上图里面,clk只和bram的时钟管脚相连,这种情况下怎么做时序分析嘛,一般我们在片内做的时序分析都是一个(寄存器)到另一个寄存器的。
时序分析一共四种模型,可以参考下面四张图,分别是InputtoFlip-flopPath,Flip-floptoOutputPath,Flip-floptoFlip-flopPath,InputtoOutputPath图片来源于Stat(ic)(Ti)mingAnalysisf(or)
NanometerDesigns也就是静态时序分析圣经,这本必读哦。
实验二:
那怎么改变,vivado计算出来是inf呢,首先给输入输出加上
(*DONT_TOUCH="yes"*)
这个约束看看,代码就变成了下面这个样子
moduletestMem(
input
clk,(*DONT_TOUCH="yes"*)input[9:0]addr,(*DONT_TOUCH="yes"*)inputwe,(*DONT_TOUCH="yes"*)input[7:0]wdata,(*DONT_TOUCH="yes"*)outputreg[7:0]rdata);
reg
[7:0]
mem
[1023:0];always@(posedgeclk)beginif(we)beginmem[addr]
这次呢时序分析对了,我们来看一下综合后的结果,可以看到不再是孤零零的一个bram的ip了,这个就是典型的Flip-floptoFlip-flopPath的时序分析了。
但是注意到没有,实现的资源从bram变成lut和FF了,这个是因为在xilinx的器件里面,bram必须至少要有一级寄存器,那你可能又要问了,我们不是在代码里面rdata有一级寄存器吗,为啥没有被综合成bram呢,这个是因为加了donttouch的约束之后,vivado就不会再去优化这个寄存器,这样这个寄存器就不能被优化到bram里面了,这样自然就不会使用bram资源来实现上面的代码了。
实验三:
我们可以通过手动再加一级寄存器的方案,来让他使用bram资源,代码如下:
moduletestMem(
input
clk,a(*DONT_TOUCH="yes"*)input[9:0]addr,(*DONT_TOUCH="yes"*)inputwe,(*DONT_TOUCH="yes"*)input[7:0]wdata,(*DONT_TOUCH="yes"*)outputreg[7:0]rdata);reg[7:0]mem[1023:0];
reg
[7:0]
data;always@(posedgeclk)beginif(we)beginmem[addr]
可以看到时序分析,资源分析和我们预期是一致的。
综合后的结果也和我们预期一致,可以和实验一做对比,这次在bram后面多了一级寄存器哦。
实验四:
那么我们在上面的代码里面继续去掉donttouch约束看看会发生什么。
moduletestMem(inputclk,ainput[9:0]addr,inputwe,
input
[7:0]
wdata,outputreg[7:0]rdata);reg[7:0]mem[1023:0];reg[7:0]data;always@(posedgeclk)beginif(we)beginmem[addr]
可以看到又变成了inf,再来看一下综合后的框图,和实验一一样,你可能会问,我们不是加了两级寄存器了吗,怎么bram的输出一个都没有呢,这是因为这两级寄存器都被bram给吸收了呢。
小提示,这样两级寄存器的方式比一级的时序会好很多哦,当然如果如果寄存器不少纯打拍的话,他是不会被吸收进去的。
实验五:
既然打两拍不行,那就多打几拍咯。
代码变成下面的样子:
moduletestMem(inputclk,input[9:0]addr,inputwe,input[7:0]wdata,
output
reg
[7:0]
rdata);reg[7:0]mem[1023:0];reg[7:0]data;reg[7:0]data1;reg[7:0]data2;reg[7:0]data3;always@(posed
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 八年级物理(上册)练习试题
- 小学生辩论赛课件
- 小学生课件儿歌视频教学
- 10 必修1 第二单元 第9讲 细胞呼吸的原理和应用
- 跨国项目数据合规审查与隐私保护服务协议
- 跨境电商采购合同纠纷解决与合规管理
- 文化场馆安保服务劳务派遣合同
- 医学常见病症诊断与处理知识试卷含法洛四联征等案例
- 2024-2025学年湖北省云学联盟高一下学期5月月考历史试题及答案
- 团队管理实践案例分析框架构建考核试卷
- 电工厂搬迁方案(3篇)
- 2025年南京市中考数学真题试卷
- 老年人眼科疾病
- 钢板配送设计方案(3篇)
- 2025年内蒙古煤炭地质勘查(集团)一零九有限公司招聘笔试参考题库含答案解析
- 中医基础学课件护理情志
- 小学三年级科学下册教案
- T/CBMCA 039-2023陶瓷大板岩板装修镶贴应用规范
- 2025-2030中国美容美发行业市场现状供需分析及投资评估规划分析研究报告
- 2025年中国不锈钢蚀刻板数据监测研究报告
- 免疫检查点抑制剂相关肺炎诊治和管理专家共识(2025)要点解读
评论
0/150
提交评论