0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Vivado 2023.2版本的新增功能

FPGA开源工坊 来源:FPGA开源工坊 2024-01-02 09:39 次阅读

Vivado在前一段时间更新了2023.2版本,经过一段时间的使用这个版本还是很丝滑的,用起来挺舒服。

特别是增加了一个Lint检查的按钮,可以让我们提前知道RTL设计有什么风险。做数字IC设计的时候写完代码之后可能不是直接就去仿真,而是先拿Spyglass做一次检查,消除掉lint错误之后再拿去仿真,Vivado增加了这个功能,让我们能够更好的去掌控自己的代码。

3d482ac4-a87f-11ee-8b88-92fbcf53809c.png

这个lint检查有什么作用呢,先来看一小段代码。

`timescale 1ns / 1ps
module top(
    input  [7:0] a  ,
    input        b  ,
    output [7:0] c  
    );


always @(*) begin
    if(b == 1'b1)begin
        c = a;
    end
end


endmodule

没有几行代码,直接一看有两处问题,第一是c在always begin end里面进行赋值的,应该用reg类型,第二会产生一个latch。

代码比较少,可以一眼发现问题,如果代码比较多呢,还能一眼发现问题吗?之前版本没有lint检查的时候,我们会拿去直接综合,也许会给我们报一个警告出来,但是又有多少次我们会去一个一个的看这个警告报的什么问题呢?

现在增加了Lint功能,直接点击run一下看看。

3d614c48-a87f-11ee-8b88-92fbcf53809c.png

vivado直接报错了,告诉我们c不是reg类型的。

把c改成reg类型的,代码如下

`timescale 1ns / 1ps
module top(
    input      [7:0] a  ,
    input            b  ,
    output reg [7:0] c  
    );


always @(*) begin
    if(b == 1'b1)begin
        c = a;
    end
end


endmodule

先来综合一下看看,下面是报告。

3d71ed64-a87f-11ee-8b88-92fbcf53809c.png

看起来一点问题都没有,报了一大堆信息,也许你仔细看还能看到其中一条警告说c被综合成一个latch了,要是信息更多的话还会看到他不。

而运行lint之后,会帮我们生成一个表,可以很清晰的看到这些信息:

3d8fbc22-a87f-11ee-8b88-92fbcf53809c.png

再来看另外一个典型的多驱动问题:

`timescale 1ns / 1ps
module top(
    input            clk,
    input      [7:0] a1 ,
    input      [7:0] a2 ,
    input            b  ,
    output reg [7:0] c  
    );


always @(posedge clk) begin
    if(b == 1'b1)begin
        c <= a1;
    end
end


always @(posedge clk) begin
    c <= a2;
end


endmodule

在综合后会有一个关键警告产生,但也不会报错,这个会在之后的布局布线的时候报错。

3e01d65e-a87f-11ee-8b88-92fbcf53809c.png

同样lint也会把这个问题给暴露出来:

3e1ab962-a87f-11ee-8b88-92fbcf53809c.png

还有一些小问题比如位宽不匹配的问题,lint也能帮我们查出来

`timescale 1ns / 1ps
module top(
    input            clk,
    input      [7:0] a  ,
    input            b  ,
    output reg [6:0] c  
    );


always @(posedge clk) begin
    if(b == 3'b101)begin
        c <= a;
    end
end


submodule submodule_inst(
    .a (kkk)
)


endmodule


module submodule (
    output [3:0] a
);
    assign a = 3'b111;
endmodule

不知道大家能一眼看出来这个代码的问题不。

先看看综合的结果:

3e31a064-a87f-11ee-8b88-92fbcf53809c.png

看着似乎没啥问题。

3e4e22c0-a87f-11ee-8b88-92fbcf53809c.png

lint报了一堆位宽不匹配的问题。

先看看第一个kkk的位宽不匹配,可以看到在在submodule这个模块里面输出了一个4bit的变量,但是我们在例化这个模块的时候kkk忘记定义了,这个时候kkk就被隐式推断为了一个1bit的wire类型的变量,这样就出现了潜在的bug。其他几个位宽不匹配也是一样的,当然不是所有的位宽不匹配都是bug,这个就需要我们明确知道哪些是我们故意这样设计的。

通过观察lint报告,可以让我们更加了解自己的设计,让问题发现在最开始的地方,而不是等到最后布局布线了甚至更晚,才发现这种低级的问题。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IC设计
    +关注

    关注

    38

    文章

    1292

    浏览量

    103807
  • 仿真
    +关注

    关注

    50

    文章

    4054

    浏览量

    133452
  • RTL
    RTL
    +关注

    关注

    1

    文章

    385

    浏览量

    59720
  • 代码
    +关注

    关注

    30

    文章

    4762

    浏览量

    68408
  • Vivado
    +关注

    关注

    19

    文章

    808

    浏览量

    66370

原文标题:Vivado2023.2的一个小功能

文章出处:【微信号:FPGA开源工坊,微信公众号:FPGA开源工坊】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Vitis2023.2使用之—— updata to Vitis Unified IDE

    上一章聊了一下vitis2023.2怎样使用classic Vitis IDE,这章我们来说一说基于classic Vitis IDE的工程怎么样更新到新版本的Vitis Unified IDE
    发表于 03-24 17:14

    Hanlp1.7版本新增功能一览

    `Hanlp1.7版本在去年下半年的时候就随大快的DKH1.6版本同时发布了,截至目前1.7大版本也更新到了1.7.1了。本篇分别就1.7.0和1.7.1中新增
    发表于 03-22 09:56

    怎么将vivado12.3更新到最新的15.4版本

    你好我有完整版的vivado 2012.3版本,我使用的是DVDalong和ZC 706 Board。我想将软件更新到最新版本。请让我知道这是可能的,免费的。
    发表于 04-14 06:48

    Xilinx 发布Vivado2013.3新增全新设计方法及功能

    中国北京- All Programmable 技术和器件的全球领先企业赛灵思公司(Xilinx, Inc. (NASDAQ:XLNX))今天发布Vivado Design Suite2013.3版本
    发表于 10-29 10:29 859次阅读

    Xilinx发布Vivado 2013.3 新增全新设计方法及功能

    Xilinx发布Vivado Design Suite 2013.3版本新增最新UltraFast设计方法及新一代即插即用IP和部分重配置功能,丰富设计流程,实现前所未有的IP易用性
    发表于 12-24 17:51 1334次阅读

    赛灵思Vivado设计套件推出2013.1版本,提供IP 集成器和高层次综合功能

    关键词:Vivado , 设计套件 赛灵思公司(Xilinx)今天宣布, 其业界首款可编程SoC级增强型Vivado设计套件的最新版本在生产力方面进行了两大改进。Vivado设计套件2
    发表于 09-25 09:18 402次阅读

    Vivado设计套件2017.3的新功能介绍

    视频重点向您介绍了Vivado设计套件2017.3版本中的增强功能,包括操作系统和器件支持,高级增强功能,加速集成,实施和验证的各种升级和
    的头像 发表于 11-21 06:15 3621次阅读
    <b class='flag-5'>Vivado</b>设计套件2017.3的新<b class='flag-5'>功能</b>介绍

    Vivado Design Suite 2015.3新增量编译功能介绍

    了解Vivado实现中2015.3中的新增量编译功能,包括更好地处理物理优化和自动增量编译流程。
    的头像 发表于 11-20 06:56 2837次阅读

    Vivado Design Suite 2018.1设计套件中的新增功能介绍

    视频重点介绍了Vivado设计套件2018.1版本中的新增功能,包括对操作系统以及器件的支持情况,还有高层次增强
    的头像 发表于 11-20 06:28 2531次阅读
    <b class='flag-5'>Vivado</b> Design Suite 2018.1设计套件中的<b class='flag-5'>新增</b><b class='flag-5'>功能</b>介绍

    Vivado 2015.3中的新增量编译功能介绍

    了解Vivado实现中2015.3中的新增量编译功能,包括更好地处理物理优化和自动增量编译流程。
    的头像 发表于 11-29 06:32 3639次阅读

    Vivado 2015.3的新增量编译功能

    了解Vivado实现中2015.3中的新增量编译功能,包括更好地处理物理优化和自动增量编译流程。
    的头像 发表于 11-30 19:24 4494次阅读

    Vivado™ 设计套件 2023.2 版本:加速自适应 SoC 和 FPGA 产品设计

    很高兴为大家详细介绍 AMD 最新发布的 Vivado 设计套件2023.2 ,以及它的更多优势——将帮助设计人员快速实现
    的头像 发表于 11-02 08:10 1474次阅读

    Vitis2023.2全新GUI的功能特性介绍

    Vitis2023.2之前就安装过了,vivado 2023.2相比于2023.1区别不明显,但嵌入式平台vitis2023.2的变化很大,有种vscode的既视感,更符合软件开发人员
    的头像 发表于 01-05 09:42 1290次阅读
    Vitis<b class='flag-5'>2023.2</b>全新GUI的<b class='flag-5'>功能</b>特性介绍

    Vivado 2024.1版本的新特性(1)

    Vivado 2024.1已正式发布,今天我们就来看看新版本带来了哪些新特性。
    的头像 发表于 09-18 10:30 1093次阅读
    <b class='flag-5'>Vivado</b> 2024.1<b class='flag-5'>版本</b>的新特性(1)

    使用Vivado通过AXI Quad SPI实现XIP功能

    博客提供了基于2023.2 Vivado的参考工程,展示如何使用Microblaze 地执行(XIP)程序,并提供一个简单的bootloader。
    的头像 发表于 10-29 14:23 230次阅读
    使用<b class='flag-5'>Vivado</b>通过AXI Quad SPI实现XIP<b class='flag-5'>功能</b>