vivado在前一段时间更新了2023.2版本,经过一段时间的使用这个版本还是很丝滑的,用起来挺舒服。
特别是增加了一个lint检查的按钮,可以让我们提前知道rtl设计有什么风险。做数字ic设计的时候写完代码之后可能不是直接就去仿真,而是先拿spyglass做一次检查,消除掉lint错误之后再拿去仿真,vivado增加了这个功能,让我们能够更好的去掌控自己的代码。
这个lint检查有什么作用呢,先来看一小段代码。
`timescale 1ns / 1psmodule top( input [7:0] a , input b , output [7:0] c );always @(*) begin if(b == 1'b1)begin c = a; endendendmodule
没有几行代码,直接一看有两处问题,第一是c在always begin end里面进行赋值的,应该用reg类型,第二会产生一个latch。
代码比较少,可以一眼发现问题,如果代码比较多呢,还能一眼发现问题吗?之前版本没有lint检查的时候,我们会拿去直接综合,也许会给我们报一个警告出来,但是又有多少次我们会去一个一个的看这个警告报的什么问题呢?
现在增加了lint功能,直接点击run一下看看。
vivado直接报错了,告诉我们c不是reg类型的。
把c改成reg类型的,代码如下
`timescale 1ns / 1psmodule top( input [7:0] a , input b , output reg [7:0] c );always @(*) begin if(b == 1'b1)begin c = a; endendendmodule
先来综合一下看看,下面是报告。
看起来一点问题都没有,报了一大堆信息,也许你仔细看还能看到其中一条警告说c被综合成一个latch了,要是信息更多的话还会看到他不。
而运行lint之后,会帮我们生成一个表,可以很清晰的看到这些信息:
再来看另外一个典型的多驱动问题:
`timescale 1ns / 1psmodule 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; endendalways @(posedge clk) begin c <= a2;endendmodule
在综合后会有一个关键警告产生,但也不会报错,这个会在之后的布局布线的时候报错。
同样lint也会把这个问题给暴露出来:
还有一些小问题比如位宽不匹配的问题,lint也能帮我们查出来
`timescale 1ns / 1psmodule 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; endendsubmodule submodule_inst( .a (kkk))endmodulemodule submodule ( output [3:0] a); assign a = 3'b111;endmodule
不知道大家能一眼看出来这个代码的问题不。
先看看综合的结果:
看着似乎没啥问题。
lint报了一堆位宽不匹配的问题。
先看看第一个kkk的位宽不匹配,可以看到在在submodule这个模块里面输出了一个4bit的变量,但是我们在例化这个模块的时候kkk忘记定义了,这个时候kkk就被隐式推断为了一个1bit的wire类型的变量,这样就出现了潜在的bug。其他几个位宽不匹配也是一样的,当然不是所有的位宽不匹配都是bug,这个就需要我们明确知道哪些是我们故意这样设计的。
通过观察lint报告,可以让我们更加了解自己的设计,让问题发现在最开始的地方,而不是等到最后布局布线了甚至更晚,才发现这种低级的问题。
手机大厂也来抢一杯羹 TWS蓝牙耳机市场今年预增长52.9%
防爆电动执行器的安装和连接
蚂蚁金服在区块链上的发力点在哪里
华润矽威入围“2009年德勤亚太区高科技高成长500强”
MLX90640 红外热成像仪测温传感器模块开发笔记(六)
Vivado 2023.2版本的新增功能
触控产业竞争激烈 厂商加速整并、技术升级
谷歌这技术太牛了,以后手机可以像电脑一样升级处理器、内存等
正弦交流电的三要素是 正弦交流电的有效值怎么求
求一种FPC、CCS测试完整解决方案
富士康A股IPO进程按下快进键 独角兽的春天要来了
业务下滑,三星关停天津手机工厂向东南亚市场转移
curl工具的简易实现
浅谈引领物联网时代的先锋--RFID
WowWee公司展示了可手势控制的智能车和智能恐龙
功率、光源与RF推动 化合物半导体市场规模将快速增长
华为最快今年超越苹果_成全球第二大手机厂商
LTE基带目标设计平台方案详解
纳米材料的应用领域
AI在医疗领域的应用仍处于飞速发展阶段 不断拓展着新的疆域