vivado tcl开发流程

news/2024/11/15 3:31:07/

本文以简单的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;elseled<=0;//always@(posedge clk,posedge rst)if(rst)cnt<=0;else if(cnt==1000-1)cnt<=0;elsecnt<=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
beginclk=0;forever#5 clk=~clk;
end
initial
beginrst=1;#100rst=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.ppmy.cn/news/3033.html

相关文章

CMake交叉编译工具编写

CMake交叉编译工具编写 CMake交叉编译工具编写CMake交叉编译工具编写前言一、编写toolchain.cmake二、编写CMakeLists.txt三、编写build.sh前言 在嵌入式设备应用时&#xff0c;需要在X86架构下编译板卡需要的ARM架构的文件&#xff0c;需要配置交叉编译器等来完成。这时就需要…

matlab智能算法之遗传算法

智能算法之遗传算法智能算法之遗传算法1.背景2.算法3.案例3.1 案例求解二元函数的最大值智能算法之遗传算法 1.背景 2.算法 3.案例 3.1 案例求解二元函数的最大值 例1&#xff1a;计算二元函数f(x,y)20x2y2−10∗(cos(2πx)cos(2πy))f(x,y)20x^2y^2-10*(cos(2\pi x)cos(2…

手写js——继承

原型链继承 所谓 函数 也就是 函数 Father其本身&#xff0c;也叫作构造函数 &#xff0c;当一个函数被创建的同时&#xff0c;也会为其创建一个 prototype 属性&#xff0c;而这个属性&#xff0c;就是用来指向 函数原型&#xff0c;的我们可以把 prototype 理解为 Father的一…

教育的本质——采用不同学习方式,学习者在两周后还能记住的内容有多少

目录 一、学习金字塔模型 二、学习曲线 三、左右脑交替学习法 一、学习金字塔模型 “学习金字塔模型”&#xff0c;人们学习的效率一共分为七个层次&#xff1a; 第一层 ~ 第四层&#xff1a;这是我们最熟悉不过的形式&#xff0c;在学生时代&#xff0c;老师在上面讲课、…

冯诺依曼体系和操作系统概念

Ⅰ. 冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系。 截至目前&#xff0c;我们所认识的计算机&#xff0c;都是有一个个的硬件组件组成 输入单元&#xff1a;包括键盘, 鼠标&#xf…

redis 主从复制(读写分离)集群搭建(含错误处理)

目录 1.概述 2.搭建 2.1.安装配置 2.2.认主 2.3.错误处理 3.原理 1.概述 当面临大流量时&#xff0c;redis可以采取集群的方式进行扩容&#xff0c;将压力分散到集群中的多个结点上去防止redis被打挂。redis的扩容方式有两种&#xff1a; 垂直扩容&#xff0c;即读写分离…

MATLAB | 一起来感受数学之美,第一届迷你黑客大赛回顾

Hey真的是好久不见&#xff0c;最近确实是比较忙更新频率也下来了&#xff0c;过段时间应该能恢复正常更新速度&#xff0c;之前给大家解说过今年举办的math is beautiful迷你黑客大赛&#xff0c;但这其实是第二届大赛&#xff0c;本期推送带大家回顾一下第一期大赛&#xff0…

大一作业HTML个人网页作业(宠物狗)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…