关于FPGA(Vivado)后仿真相关问题的探讨

这篇具有很好参考价值的文章主要介绍了关于FPGA(Vivado)后仿真相关问题的探讨。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        FPGA后仿真时,相比于功能仿真增加了门延时和布线延时,相对于门级仿真增加了布线延时,因此后仿真相比于功能仿真具有不同的特点。
        下面所示的代码在功能仿真时是正确的的,但在后仿真时,似乎是有问题的。功能很简单,当delay为高电平时,a与b相加,将结果赋值给out;当delay为低电平时,a与b相乘,将结果赋值给out。
RTL源代码:

`timescale 1ns / 1ps

module Top(clk,rst,in,out,delay);

   input clk,rst,in;
   output reg[3:0]  out;
    output reg delay;
    reg [1:0] a,b;

always @(posedge clk or negedge rst)
    if (!rst)
     begin
        delay<=0;
        a<=0;
        b<=0;
        end
    else 
        begin
          delay<=in;
          a<=a+1;
          b<=b+1;
        end
       
always @ ( *)
    if(delay==1)
        out<=a+b;
    else 
        out<=a*b;
endmodule           

testbench代码:

`timescale 1ns / 1ps

module tb;
   reg  clk,rst,in;
   wire  delay;
   wire[3:0]  out;
   
   initial 
    begin
        clk<=0;
        rst<=0;
        in <=0;
        #100 rst<=1;
          
      @(posedge clk)
           #1   in<=0; 
                    
       @(posedge clk)
           #1   in<=1;   
                            
       @(posedge clk)
           #1   in<=0;                    
                    
       @(posedge clk)
           #1   in<=1;                    
   
         @(posedge clk)
           #1   in<=0;                  
                    
        @(posedge clk)
           #1   in<=1;                   
      end           
   
   always #5 clk=~clk;
   
     
 Top  inst(.clk(clk),.rst(rst),.in(in),.out(out),.delay(delay) );
endmodule

在时序仿真时,我们不能只关心端口的clk与其他信号如in、delay等的时序关系。原因分析如下:
端口的clk在经过vivado的综合与实现后,vivado将clk部署到全局时钟网络(BUFG),这会引入时钟偏斜。如下图1所示,clk经过IBUF会引入时钟偏斜,再经过BUFG进一步引入时钟偏斜。
关于FPGA(Vivado)后仿真相关问题的探讨

                                                            图1 时钟偏斜
vivado综合后的IBUF网表如下:

  IBUF clk_IBUF_inst
       (.I(clk),
        .O(clk_IBUF));

与IBUF对应的标准延时文件描述如下:

(CELL 
  (CELLTYPE "IBUF")
  (INSTANCE clk_IBUF_inst)
  (DELAY 
    (PATHPULSE (50.0))
    (ABSOLUTE 
      (IOPATH I O (639.2:764.8:764.8) (639.2:764.8:764.8))
    )
  )
)

通过分析IBUF的输入与输出,可以看出clk与clk_IBUF相位偏斜为764.8ps,通过查看时序仿真波形可以看出clk与clk_IBUF相差764.8ps。
关于FPGA(Vivado)后仿真相关问题的探讨
同样,输入信号经过不同的门,也会引入延时,例如输入信号in,在经过IBUF后,会引入延时,IBUF网表如下所示(clk与in都是通过IBUF,但是两者延时不一样):

  IBUF in_IBUF_inst
       (.I(in),
        .O(in_IBUF));

IBUF的标准延时文件如下所示:

(CELL 
  (CELLTYPE "IBUF")
  (INSTANCE in_IBUF_inst)
  (DELAY 
    (PATHPULSE (50.0))
    (ABSOLUTE 
      (IOPATH I O (613.0:738.4:738.4) (613.0:738.4:738.4))
    )
  )
)

in和其经过IBUF的in_IBUF相位关系如下所示:
关于FPGA(Vivado)后仿真相关问题的探讨

 综上所述,在进行时序仿真时,如果输入的时钟、信号经过不同的门或布线延时,不能只看原始的时钟和信号的时序关系。如研究clk与in之间的相位关系如下图所示:
关于FPGA(Vivado)后仿真相关问题的探讨clk与in都经过不同的门和布线延时,单纯比较clk 与in 的相位关系,无法判断delay触发器是否满足建立与保持时间的关系,所以必须查看clk_IBUF_BUFG与in_IBUF的时间是否满足建立与保持关系。

                        
 判断某一触发器是否满足建立保持时间,可以通过时序检查的方式验证。
 文章来源地址https://www.toymoban.com/news/detail-476243.html

到了这里,关于关于FPGA(Vivado)后仿真相关问题的探讨的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【【萌新的FPGA学习之Vivado下的仿真入门-2】】

    我们上一章大概了解了 我们所需要进行各项操作的基本框架 对于内部实现其实一知半解 我们先从基本的出发 但从FPGA 了解一下 vivado下的仿真入门 正好帮我把自己的riscV 波形拉一下 行为级仿真 step1: 进入仿真界面:SIMULATION-单击 Run Simulation-单击 Run Behavioral Simulation。 Step2:设

    2024年02月08日
    浏览(42)
  • FPGA 学习笔记:Vivado simulation 仿真波形二进制显示

    最近在学习FPGA,发现除了烧写到FPGA上验证功能,最有效的方式就是软件仿真 软件仿真:simulation,就像是模拟器一样,写好测试用例,然后看是否可以输出想要的结果,用于验证FPGA逻辑的准确性 当前仿真成功后,还是需要真机实测验证 当前安装了好几个版本的Vivado ,当然

    2024年02月12日
    浏览(57)
  • Vivado仿真中输出高阻态FPGA故障分析与解决

    Vivado仿真中输出高阻态FPGA故障分析与解决 在FPGA的设计中,Vivado仿真常常被用来验证设计的正确性。但是,有时候仿真结果会出现输出高阻态的情况,这个问题可能导致设计无法正常工作。本篇文章将详细分析这个问题出现的原因,并提供一些可能的解决方法。 当我们进行

    2024年02月09日
    浏览(147)
  • Vivado DDS IP核使用、仿真、多相处理和相关计算验证

    第一次学,查询了很多CSDN网页,也问了组里的技术专家,得到了很多指导。把我的个人学习笔记在这里保存记录分享,如果有问题欢迎大家批评指正。也欢迎大家点赞评论收藏,一起进步! 1 DDS IP核的配置 创建工程,在IP核配置页面选择DDS compiler 6.0。对IP核进行配置。 如图

    2024年02月02日
    浏览(50)
  • xilinx FPGA 除法器ip核(divider)的学习和仿真(Vivado)

    在设计中,经常出现除法运算, 实现方法 : 1、移位操作 2、取模取余 3、调用除法器IP核 4、查找表 简单学习除法器IP。 网上很多IP翻译文档,不详细介绍,记录几个重要的点: 1、三种算法模式(不同模式所消耗的资源类型不同) 2、分清除数和被除数;余数模式的选择 3、延

    2024年04月28日
    浏览(196)
  • 关于Xilinx、复旦微 7系列 FPGA “Init_B”引脚的深入探讨

    关注+ 星标公众 号 ,及时获取更多技术分享~ ​​​​​​​  作者 | 冰茶奥利奥 微信公众号 | 嵌入式电子创客街 这两年项目上提国产化的越来越非常严格,尤其是今年,军工项目更加特殊,总体单位直接提百分百纯国产化。这百分百国产化器件中,有外资控股的企业不

    2024年02月06日
    浏览(58)
  • 基于FPGA的AES加密解密vivado仿真,verilog开发,包含testbench

    目录 1.算法描述 2.仿真效果预览 3.verilog核心程序 4.完整verilog          AES, 高级加密标准, 是采用区块加密的一种标准, 又称Rijndael加密法. 严格上来讲, AES和Rijndael又不是完全一样, AES的区块长度固定为128比特, 秘钥长度可以是128, 192或者256. Rijndael加密法可以支持更大范围的区

    2024年02月01日
    浏览(57)
  • 基于fpga的图像处理之图像灰度化处理(Vivado+Modelsim+Matlab联合仿真验证)

    微信公众号上线,搜索公众号 小灰灰的FPGA ,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 源码工程链接 https://download.csdn.net/download/m0_50111463/88529260

    2024年02月10日
    浏览(61)
  • Verilog仿真文件中的阻塞和非阻塞赋值问题探讨

    在 RTL 代码中我们知道如果表达组合逻辑时使用“=”赋值,表达时序逻辑时使用“=”赋值,如果我们不按照这种规则来设计往往会得到意想不到的答案。虽然说在 Testbench 中我们对赋值号的要求并不是很在意,使用“=”和“=”赋值均可,都能够仿真出来结果,且最后不会被

    2024年02月07日
    浏览(40)
  • VIVADO和MODELSIM联合仿真编译库问题

    初次在VIVADO中使用MODELSIM仿真器,或仿真时由于编译库问题报错,可进行如下步骤,个人经验,源于百度,如有问题,请多多指教。 Compiled Library location处选择编译库存放的位置,可在任意处新建文件夹即可;Simulation executable path选择modelsim安装目录下win64文件夹,点击Compile进

    2024年02月12日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包