首页 > 其他分享 >Warning[204-68] 以及 Vivado HLS与Vivado的资源差异

Warning[204-68] 以及 Vivado HLS与Vivado的资源差异

时间:2024-07-22 14:01:08浏览次数:18  
标签:204 HLS Vivado WARNING xilinx com synthesis

        这篇学习记录起源于项目以ip导出后,在HLS综合(synthesis)资源与Vivado内ip综合(synthesis)存在巨大差异,本文没有数据仅以文字记录。

        所有问题均基于Vivado HLS 2019.1。

目录

1、资源差异

1.1、首先vivado内的ip综合分为Global 和 Out-Of-Context两种

1.2、在HLS中生成RTL时输出Vivado synthesis,place and route

2、资源类型使用不同

2.1、WARNING: [SCHED 204-68]

2.2、WARNING: [ANALYSIS 214-52]

2.3、axis端口


1、资源差异

        我们可以通过四种方式得到资源:

        HLS synthesis

        HLS implementation

        Vivado ip synthesis as Global

        Vivado ip synthesis as Out-Of-Context

1.1、首先vivado内的ip综合分为Global 和 Out-Of-Context两种

        以Out-Of-Context综合时可以很便捷地对综合条件进行约束。如我的这个项目在HLS综合时未使用DSP资源,但以Global全局综合时会自动使用DSP,Out-Of-Context可以在选项中将其约束为0更方便地进行资源对比。

此步有很多关于Vivado的教程可以学习,不赘述。

1.2、在HLS中生成RTL时输出Vivado synthesis,place and route

        该步骤也就是HLS中的实现(implementation),如下图勾选,有些会教程会忽略该步骤只得出synthesis后资源。该步骤会在后台调用Vivado,所得到资源占用更接近实际情况,并且也会给出IP的时钟数据。

        注:我是用的是Vivado HLS 2019.1(不是Vits),如果此时报错需把系统时钟调至2020年

        

        这部分参照下面的链接得出结论:

1、HLS综合(synthesis)后和实现(implementation)后资源差别巨大,实现后资源很少,为何都优化掉了? (xilinx.com)

对照这四组资源占用情况可以得出的结论:

以HLS implementation参考,导入Vivado进行Global综合结果最接近实际情况。

2、资源类型使用不同

2.1、WARNING: [SCHED 204-68]

在我的工程中只存在一个可疑警告

WARNING: [SCHED 204-68] The II Violation in module 'HLS_IP' 
(Function: HLS_IP): Unable to enforce a carried  dependence 
constraint (II = 4, distance = 1, offset = 1)  
between axis read on port 'data_in_V' (hls_prj_line/src/proj_line.cpp:104) 
and axis read on port 

        “数据依赖关系”或“存储器依赖关系”的典型用例是在完成上一次读操作或写操作后再次发生读操作或写操作,移除假性依赖关系可以改善循环流水打拍。

        这个警告很直接地指明了依赖关系导致pipeline II无法为1,此时只需告知HLS实际的依赖关系即可。有关DEPENDENCE的使用网上也有很多资料,首先得判断出此时依赖关系是否真实存在,若存在是否仅存在于循环内,具体步骤Xilinx官网也有给出。

#pragma HLS DEPENDENCE variable=rRam inter false

这部分的参考依旧很多:

1、HLS: Pipeline II violation, where is the problem and how can I solve it? (xilinx.com)

2、Widget (xilinx.com)

3、Vitis 高层次综合用户指南  管理流水线依赖关系

当然这个操作无法解决所有的依赖问题,也并不是都有效果(我也没解决该问题)如:

Found false intra dependency for variable (xilinx.com)

关于Vitis 2020.1 #pragma HLS dependence的问题 (xilinx.com)

2.2、WARNING: [ANALYSIS 214-52]

        该警告通常与[204-68]一起出现,也给出参考链接A pipeline problem of stream (xilinx.com),问题也多在于变量的依赖关系。

2.3、axis端口

        我的问题主要在与为什么实现时使用了DSP资源,由于上述步骤未解决依赖问题,我直接换了端口,将 axis port 替换成 hls::stream ,再次综合、实现

        问题解决了。。。DSP都是0.。。。

        看来似乎HLS对于不同的接口有不同的优化策略。

        再换端口后会出现新的warning,不过这个可以忽略,并不会对结果造成太大影响,相关的参考链接也给出WARNING: [XFORM 203-302] Region has multiple begin anchors. (xilinx.com)

标签:204,HLS,Vivado,WARNING,xilinx,com,synthesis
From: https://blog.csdn.net/qq_43961144/article/details/140606850

相关文章

  • 0204-可移动相机
    环境Time2022-11-17WSL-Ubuntu22.04Rust1.65.0前言说明参考:https://raytracing.github.io/books/RayTracingInOneWeekend.html目标将相机的位置和远近参数化,可以调节相机的位置。叉乘//向量的叉乘pubfncross(self,other:Vector3)->Vector3{Vector3{......
  • 【Dison夏令营 Day 25】用Python写个2048
    在本文中,我们将用python代码和逻辑来设计一款你经常在智能手机上玩的2048游戏。如果您对该游戏不熟悉,强烈建议您先玩一下该游戏,以便了解其基本功能。如何玩2048.NET?1.有一个4*4的网格,可以填入任何数字。一开始,随机填入两个2的单元格。其余单元格为空。我们......
  • vivado HLUTNM
    HLUTNMHLUTNM属性允许您将两个特定且兼容的LUT图元分组为通过分配相同的<group_name>将其放入单个物理LUT中。当LUT可用性较低时,Vivadoplacer可以自动组合LUT实例将其配对到单个LUT上,以成功地适应设计。您还可以使用DISABLED值用于特定LUT上的HLUTNM属性,以防止Vivado砂矿......
  • verilog实现ram16*8 (vivado)
    moduleram_16x2(inputclk,//时钟信号inputwe,//写使能inputen,//使能信号input[3:0]addr,//地址线input[1:0]datain,//输入数据线outputreg[1:0]dataout//输出数据线);//定义存储器数组......
  • videojs hls视频流播放器
     需要用到的包"video.js":"^8.6.1","videojs-contrib-hls":"^5.15.0", 给两个测试流地址 <el-select v-model="hlsUrl" placeholder="请选择下拉选择下拉选择" clearable :style="{width:'100%&......
  • HTML2048小游戏(最新版)
    比上一篇文章的2048更好一点。控制方法:WASD键(小写)或页面上四个按钮效果图如下:         源代码在图片后面  源代码 ·HTML·<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="wid......
  • 《战地2042》DX报错无法启动游戏怎么处理,战地2042启动游戏DX报错解决方法
    《战地2042》作为一款以现代战争为题材的、大规模的、可供多人在线游玩的第一人称射击游戏,其在上线初期以及后续的运营期间,有部分玩家在启动游戏时遇到了与DirectX有关的错误提示,以致无法顺利进入游戏。DirectX,又称DX,它是由微软公司推出的一套多媒体编程接口,主要用于处理游戏......
  • FFmpeg开发笔记(三十七)分析SRS对HLS协议里TS包的插帧操作
    ​《FFmpeg开发实战:从零基础到短视频上线》一书的“2.1.2 音视频文件的封装格式”介绍了视频流的PS格式和TS格式。由于TS包的长度固定,从TS流的任一片段开始都能独立解码,因此可以把TS当成音视频文件的封装格式。鉴于TS包的独立解码特性,HLS协议引入了TS格式作为传输单元。HLS协......
  • Ubuntu 2204 安装使用 mariadb
    1.查看mariadb版本,实际上使用的还是mysqld命令:mysqld--version 2.安装完成之后它的生命周期依然由systemctl进行维护,服务名为:mariadb.servicectlstatusmariadb.service 3.它的服务端配置文件位于 /etc/mysql/mariadb.conf.d/50-server.cnf,修改端口也是在里面,一看......
  • COMP2041 |9044 - 24T2
    COMP(2041|9044)-24T2Assignment1:GiveAimsThisassignmentaimstogiveyoupracticeinShellprogramminggenerallyIntroductionYouaregoingtoimplementsimplebutfunctionalversionsofgiveandautotest.Yourtaskinthisassignmentistowrite8......