vivado tcl开发流程

news2024/11/18 3:43:10

本文以简单的led灯为例,阐述基于tcl的Vivado开发流程。
文件内容编写如下:
led.v

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2022/12/12 14:57:22
// Design Name: 
// Module Name: alu
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module led(
input wire clk,
input wire rst,
output reg led
    );
 reg [31:0] cnt;
 always@(posedge clk,posedge rst)
 if(rst)
    led<=0;
 else if(cnt<500)
    led<=1;
 else
    led<=0;
 //
 always@(posedge clk,posedge rst)
 if(rst)
    cnt<=0;
 else if(cnt==1000-1)
    cnt<=0;
 else
    cnt<=cnt+1;
endmodule

test.v

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2022/12/12 14:59:34
// Design Name: 
// Module Name: test
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module test(

    );
reg clk;
reg rst;
wire led;

initial
begin
   clk=0;
   forever
      #5 clk=~clk;
end
initial
begin
   rst=1;
   #100
   rst=0;
end
//inst
led U(
.clk(clk),
.rst(rst),
.led(led)
    );
endmodule

约束文件led.xdc

set_property PACKAGE_PIN T22 [get_ports led]
set_property IOSTANDARD LVCMOS33 [get_ports led]
set_property PACKAGE_PIN Y9 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property PACKAGE_PIN P16 [get_ports rst]
set_property IOSTANDARD LVCMOS33 [get_ports rst]

开发流程

  1. 指定一个设计文件的输出路径,所有生成的报告、结果文件等都将存放在该路径文件夹下
set outputDir ./Out
file mkdir $outputDir

运行结果:
在这里插入图片描述
2. 读取设计的Verilog源文件和XDC约束文件

read_verilog led.v
read_xdc led.xdc

在这里插入图片描述
3. 对设计进行综合,需要指定目标FPGA器件型号。

synth_design -top led -part xc7z020clg484-2

结果:
在这里插入图片描述
4. 综合后写入一个检查点。

write_checkpoint -force $outputDir/post_synth
  1. 生成综合后的时序报告和功耗报告。
report_timing_summary -file $outputDir/post_synth_timing_summary.rpt
report_power -file $outputDir/post_synth_power.rpt
  1. 对设计、功耗进行优化,并对设计布局,对布局后的设计进行逻辑物理优化
opt_design  #对设计进行优化
power_opt_design #对功耗进行优化
place_design #对设计进行布局
phys_opt_design #对布局后的设计进行逻辑物理优化
  1. 布局后写入一个设计检查点。
write_checkpoint -force $outputDir/post_place
  1. 生成布局后的时序总结报告
report_timing_summary -file $outputDir/post_place_timing_summary.rpt
  1. 对设计进行布线。
route_design

结果如图所示
在这里插入图片描述
10. 布线后写入一个检查点。

write_checkpoint -force $outputDir/post_route
  1. 生成布线后的时序总结报告。
report_timing_summary -file $outputDir/post_route_timing_summary.rpt
  1. 生成布线后的时序报告
report_timing -sort_by group -max_paths 100 -path_type summary -file $outputDir/post_route_timing.rpt
  1. 生成布线后的利用率报告。
report_clock_utilization -file $outputDir/post_route_util.rpt
  1. 生成布线后的功耗报告。
report_power -file $outputDir/post_imp_drc.rpt
  1. 生成布线后的drc报告。
report_drc -file $outputDir/post_impl_drc.rpt
  1. 写Verilog文件。
write_verilog -force $outputDir/top_impl_netlist.v
  1. 写xdc文件。
write_xdc -no_fixed_only -force $outputDir/top_impl.xdc
  1. 生成bit流文件。
write_bitstream -force $outputDir/test.bit

在这里插入图片描述

至此,Out文件夹中的内容如下:
在这里插入图片描述
打开文件post_synth_power.rpt,可以查看综合后的功耗情况:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/82648.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

这10种神级性能优化手段,你用过几个?

引言&#xff1a;取与舍 软件设计开发某种意义上是“取”与“舍”的艺术。 关于性能方面&#xff0c;就像建筑设计成抗震9度需要额外的成本一样&#xff0c;高性能软件系统也意味着更高的实现成本&#xff0c;有时候与其他质量属性甚至会冲突&#xff0c;比如安全性、可扩展性…

React源码分析8-状态更新的优先级机制

这是我的剖析 React 源码的第二篇文章&#xff0c;如果你没有阅读过之前的文章&#xff0c;请务必先阅读一下 第一篇文章 中提到的一些注意事项&#xff0c;能帮助你更好地阅读源码。 文章相关资料 React 16.8.6 源码中文注释&#xff0c;这个链接是文章的核心&#xff0c;文…

Maven打包同时引入本地jar包

Maven打包同时引入本地jar包 若依分离版作为案例 &#xff0c;实际测试 方法一(pom文件指定jar包目录进行引入) 1.将需要手动引入的jar包放入ruoyi-admin的resources下&#xff0c;例如&#xff1a; 2.手动jar依赖则在ruoyi-common模块下的pom.xml中引入 <dependency>…

Sqlite数据库操作(一)—— 命令行操作

目录 1、sqlite 数据库安装 2、数据库常用命令 (1) 创建数据库 (2) 系统命令 (3) sql语句 1、sqlite 数据库安装 在终端输入 sudo apt-get install sqlite3 安装sqlite3&#xff0c;安装完毕以后&#xff0c;在终端输入 sqlite3 &#xff0c;若出现以下内容&#xff0c;…

MySQL数据库学习(5)

一、概念 视图是数据库中常用对象之一&#xff0c;它的内容是数据库部分数据或以聚合等方式重构的数据。 只存放视图的定义&#xff0c;不存放数据。不存储数据&#xff0c;所以视图是一个虚表。 因为数据存在基本表中&#xff0c;基本表的数据发生变化&#xff0c;视图查询的结…

MySQL集群解决方案(1):MySQL数据库的集群方案

1、系统架构存在的问题 在我们的系统架构中&#xff0c;DBserver方面我们只是使用了单节点服务&#xff0c;如果面对大并发&#xff0c;海量数据的存储&#xff0c;显然单节点的系统架构将存在很严重的问题&#xff0c;所以接下来&#xff0c;我们将实现MySQL的集群&#xff0c…

双12有哪些宝藏数码好物值得入手、这份超值数码清单收藏好

作为一年一度的电商大促狂欢日&#xff0c;不知道各位小伙伴儿有没有入手哪些心仪的数码产品呢&#xff1f;如果确实不知道要入啥好&#xff0c;不妨一起来看看我为各位精心准备的这份最值得入手的数码产品清单吧&#xff0c;这份清单的产品最主要突出的是颜值、产品实力还有性…

anaconda使用arcpy库

anaconda使用Arcpy环境1. 查看Arcgis版本2. 创建虚拟环境3. 将anaconda环境放入jupyter中1. 查看Arcgis版本 找到Arcgis安装python路径【电脑需要下载Arcgis】点击python.exe&#xff0c;查看python版本 2. 创建虚拟环境 管理员身份打开Anaconda PowerShell Prompt 查看ana…

安卓玩机搞机技巧综合资源-----“另类更新“偷渡”操作步骤 无需解锁bl 无需内侧用户【十三】

接上篇 安卓玩机搞机技巧综合资源------如何提取手机分区 小米机型代码分享等等 【一】 安卓玩机搞机技巧综合资源------开机英文提示解决dm-verity corruption your device is corrupt. 设备内部报错 AB分区等等【二】 安卓玩机搞机技巧综合资源------EROFS分区格式 小米红…

如何排查CPU 100%的应用

一台机器&#xff0c;CPU100%&#xff0c;如何找到相关服务&#xff0c;如何定位问题代码&#xff0c;今天简单分享下思路。 简要步骤如下&#xff1a; 找到最耗CPU的进程&#xff1b;找到最耗CPU的线程&#xff1b;查看堆栈&#xff0c;定位线程在干嘛&#xff0c;定位对应代码…

linux安装docker教程+mysql安装

一、linux安装docker教程 第一步、关闭SELINUX服务 修改文件后的重启linux&#xff0c;重启命令为&#xff1a;reboot 注意此处虚拟机里修改重启无法启动linux系统成功&#xff0c;处理方法&#xff1a; 1、重启Linux按e进入系统启动项修改参数 2、在linux16的行位添加 seli…

k8s编程operator——(4) kubebuilder controller-runtime

文章目录1、KubeBuilder使用1.1 下载1.2 使用2、controller-runtime参考资料&#xff1a;https://book.kubebuilder.io/k8s编程operator系列&#xff1a; k8s编程operator——(1) client-go基础部分 k8s编程operator——(2) client-go中的informer k8s编程operator——(3) 自定…

【PostgreSQL的wal_buffers】

1、什么是wal buffer? wal buffer是预写日志(wal)缓冲区 2、wal buffer的作用是什么 用于还未写入磁盘的 WAL 数据的共享内存。 每次变更事务提交时候,需要将变更事务日志落盘&#xff0c;在PG中为了提高性能&#xff0c;并非采用实时flush到磁盘,而是在PG中提供XLog Buff…

DFS学习

一、DFS 1、简介 最初听到DFS还以为是深度优先遍历&#xff0c;实际上是分布式文件存储服务(Distributed file system)。 FastDFS是一套分布式文件存储服务&#xff0c;Titans将FastDFS提供的接口进行了封装&#xff0c;屏蔽了一些无需关注的操作细节&#xff0c;让用户可以更…

Java基础:Lambda表达式

1. 函数式编程思想概述 在数学中&#xff0c;函数就是有输入量、输出量的一套计算方案&#xff0c;也就是“拿什么东西做什么事情”。相对而言&#xff0c;面向对象过分强调“必须通过对象的形式来做事情”&#xff0c;而函数式思想则尽量忽略面向对象的复杂语法——强调做什么…

《Fluent Python》笔记 | 函数对象和装饰器

在Python中函数是对象&#xff0c;本质是function类的实例。同样函数对象也是“一等对象”&#xff0c;即满足以下条件&#xff1a; 在运行时创建能赋值给变量或数据结构中的元素能作为参数传给函数能作为函数的返回结果 函数对象的__doc__属性用于生成对象的帮助文本。 接受…

【避坑指南】快准狠!一键采购电子元器件(文末优惠券)

在采购元器件的过程中&#xff0c;经常会出现一些或这或那的情况&#xff0c;比如遇到假货问题、不具备专业知识、工作经验不够丰富、采购型号错误等等&#xff0c;因此采购下单如赌注&#xff0c;每个订单都下得心惊肉跳。 那么有哪些坑是可以避开的&#xff0c;又有什么方法可…

AI大模型加持,生成式搜索来了!

梦晨 发自 凹非寺量子位 | 公众号 QbitAI最近有两件事&#xff0c;让搜索引擎重回聚光灯下。百度发布“文心百中”&#xff0c;用AI大模型技术驱动的产业级搜索系统。构建企业内部搜索引擎的人力成本减少90%以上&#xff0c;同时只需要极低数据。几乎同一时间&#xff0c;OpenA…

算法---DFS和BFS

一 : 什么是DFS和BFS? 转载自 : 什么是DFS和BFS? 简介&#xff1a; 深度优先遍历&#xff08;Depth First Search, 简称 DFS&#xff09; 与广度优先遍历&#xff08;Breath First Search&#xff09;是图论中两种非常重要的算法&#xff0c;生产上广泛用于拓扑排序&#xf…

软考高级信息系统项目管理师如何备考?

从以下两个方面&#xff1a; 1.首先分析一下高项考试的各个科目&#xff1b; 2.如何备考高项&#xff1f; 高项考试有三个科目&#xff1a; 综合知识&#xff0c;案例分析&#xff0c;和论文。 一、综合知识 信息系统项目管理师上午综合知识科目范围广&#xff0c;知识点非…