FPGA学习笔记6-Quartus II中的TCL脚本
来源:互联网 发布:数据分析在中国 编辑:程序博客网 时间:2024/05/25 18:12
-TCL Scripting support in quartus II Software
-Creating Projects
-Compiling Designs
-Accessing Report Data
-Analyzing
TCL Scripting Benefits
-Custom Analysis
Extract Only Report Information You Need
-Automation
Eliminate Manual Steps in Graphical User Interface(GUI)
Interface with Other Design Software
-Reproducibility
Easier Project Maintenance and Documentation
Quartus II TCL Support
-Quartus II Software Provides Extensive Tcl Scripting Support
-Four Command-Line Executables Include Tcl Interpreter
-Quartus II Tcl API Include Over 150 Commands in 14 Packages
TCL Packages
-TCL Commands Grouped by Function in Packages
-Subset of Available Packages is Preloaded
Reduces Memory Footprint
Load Packages as Necessary In TCL Script
-Not All Packages Available in All Command-Line Executables
Packages Align with Executable Functionality
Timeing Analysis Package Only in quartus_tan
Commonly Used Packages
name Description::quartus::projectCreate Projects,Make Assignments::quartus::flow Complie Projects,Run Common Flows::quartus::reportAccess Report Tables,Create Custom Reports::quartus::timing Compute and Report Timing Paths::quartus::timing_report List Timing Paths-Loading Packages
load_package <name> [-version <version>]
::quartus:: in Name is Optional
Alternately Use TCL package require Command
::quartus::project Package
-Create Projects and Make Assignments
-Some Commonly Used Commands
Project and Revision
project_new,project_open,project_close,create_revision,set_current_revision
General Assignment
set_global_assignment,set_instance_assignment
Specific Assignment
set_location_assignment,set_input_delay,set_output_delay,
set_multicycle_assignment,create_base_clock,timegroup
::quartus::project Example
-Create Project and Make Assignments
Use fir_filter Tutorial Files
Example:
project_new fir_filter -revision filtref -overwrite
set_global_assignment -name FAMILY Cyclone
set_global_assignment -name DEVICE EP1C6F256C6
set_global_assignment -name BDF_FILE filtref.bdf
set_global_assignment -name TOP_LEVEL_ENTITY filtref
set_location_assignment -to clk Pin_G1
create_base_clock -fmax "100 MHZ" -target clk clocka
create_relative_clock -base_clock clocka -divede 2 \
-offset "500 ps" -target clkx2 clockb
set_multicycle_assignment -from clk -to clkx2 2
project_close
-Assignments Not Automatically Saved to Quartus II setting File(QSF)
-Assignments Must Be Saved to QSF before Using Them
Before a System Call,for Example
-Some Command Save Assignments Automatically
-project_close,execute_flow,execute_module
-Use export_assignments Command for Manual Control
export_assignments Scenario
-Commandly Used Before A System Call for Command-line Executable
Example:
project_open $project_name
set_global_assignments -name FAMILY Stratix
#Before calling quartus_map,save the FAMILY assignment
export_assignemnts
#Now call quartus_map
qexec "quartus_map $project_name"
::quartus::flow Package
-Compile Projects and Run Common Flows
-Two Commands
execute_flow <flow name>
compile,-check_ios,etc
execute_moudle -tool <tool>
map,fit,tan,etc
-Package Is Not Loaded by Default
Use load_package flow Before Either Command
::quartus::flow Example
-Open Project and Compile Design
Bulids on Previous Example
Example:
load_package flow
project_open fir_filter -revision filtref
execute_flow -compile
project_close
Create Project and Complie with One Script
Pop Quiz
-Write One Script that Creates and Compiles Project
-Combine Project Creation Script with Project Compilation Script
Pop Quiz Answer
load_package flow
project_new_filter -revision filtref -overwrite
set_global_assignment -name FAMILY Cyclone
set_global_assignment -name DEVICE EP1C6F256C6
set_global_assignment -name BDF_FILE filtref.bdf
set_global_assignment -name TOP_LEVEL_ENTITY filtref
set_location_assignment -to clk Pin_G1
create_base_clock -fmax "100 MHz" -target clk clocka
create_relative_clock -base_clock clocka -divide 2\
-offset "500 ps" -target clkx2 clockb
set_multicycle_assignment -from clk -to clkx2 2
execute_flow -compile
project_close
::quartus::report Package
-Access Report Tables and Create Custom Report
-Some Commonly Used Commands
Report Management
load_report,unload_report,create_report_panel
Information About Reports
get_report_panel_names,get_number_of_rows
Access Report Data
get_report_panel_row,get_report_panel_data,get_timing_analysis_summary_result
Report Structure
-Commands to Access Report Data Require Panel Name
-Panel Name is the Hierarchical Path to the Panel
-Hierarchy Uses || Characters
<Folder Name> || <Panel Name>
-Selected Report Panel Named "Timing Analyzer || Timing Analyzer Settings"
-First-Level Reports Have No ||
Flow Log Panel Named Flow Log
-Panels Are Tabular
Rows and Columns
-Refer to Rows and Columns by Number or Name
-Numbering Starts at Zero
-Row 0 Has Column Headings
Panel Structure Example
-row2
-row_name "Timing Models"
-col1
-col_name Setting
Example:
get_report_panel_data -name "Timing Analyzer||Timing Analyzer Settings"\
-row_name "Timing Models" -col_name Setting
::quartus::report Example
-Print Number of Failing Paths per Clock Domain
-Use Timing Analyzer Summary Panel
Failed Paths Column
-Print Number of Failing Path Per Clock Domain
Example:
load_package report
project_open fit_filter -revision filtref
load_report
set panel_name "Timing Analyzer||Timing Analyzer Summary"
set num_panel_rows [get_number_of_rows -name $panel_name]
for {set i 1} {$ < $num_panel_rows} {incr i}{
set summary_type [get_report_panel_data -name $panel_name \
-row $i -col_name Type]
if{[regexp {Clock Setup:(.*)}$summary_type match clk_name]}{
set num_failed_paths [get_report_panel_data -name $panel_name \
-row $i -col_name "Failed Paths"]
puts "Clock domain $clk_name has $num_failed_paths failing paths"
}
}
unload_report
project_close
Pop Quiz
-Print a Message Saying whether Project Meets Timing After Compilation
Assume Project is open
Hint:How many Paths Fail if Timing Is Met?
Pop Quiz Answer
#Assume project is open;don't forget to load the report load_report
if {0==[get_report_panel_data -name \
{Timing Analyzer||Timing Analyzer Summary} \
-row_name {Total number of failed paths} \
-col_name {Failed Paths}]}{
puts "Design meets timing"
}else{
puts "Design does not meets timing"
}
unload_report
::quartus::timing Package
-Compute and Report Timing Paths
Only Available in quartus_tan Executable
-Some Commonly Used Commands
create_timing_netlist
report_timing
delete_timing_netlist
Timing Netlist
-Timing Netlist Must Be Created before Reporting
-Use create_timing_netlist Command
-Options
Minimum Timing Analysis
Specify Speed Grade of Target Part
Specify Post-Synthesis Netlist
report_timing Command
-Computes and Reports Timing Paths on the Fly
Memory Efficient
Can Report Any Path in Design
includes Paths not in Timing Report Tables
-Examples
report_timing -tsu
report_timing -clock_setup -clock_filter clk
report_timing -tpd -npaths 5
::quartus::timing Example
-List Paths for All Failing Paths to Two Text Files
Clock Setup for Maximum Timing Analysis(Default)
Clock Hold for Minimum Timing Analysis
Example:
load_package timing
project_open fir_filter -revision filtref
create_timing_netlist
report_timing -clock_setup -src_clock_filter clk -clock_filter clkx2 \
-all_failures -file slow_corner_cross_domain_paths.txt
delete_timing_netlist
create_timing_netlist -fast_model
report_timing -clock_hold -src_clock_filter clk -clock_filter clkx2 \
-all_failures -file fast_corner_cross_domain_paths.txt
delete_timing_netlist
project_close
::quartus::timing_report Package
-List Timing Paths
Available in quartus_tan and GUI TCL Console
-One Command
list_path
-Reports Timing Paths in the Timing Analysis Report
Applies Only to Pre-computed Paths in Report
Paths not Shown Cannot Be Reported
-Similar Options as report_timing Command
Example:
list_path -from inst4 -to inst5* -stdout
Pop Quiz
-What Is the Different between These Two Commands?
report_timing
list_path
Pop Quiz Answer
-The list_path Command
Works Only for Paths in Timing Report Panels
-The report_timing Comand
Works for Any Path in Design Computes Reports Paths on the Fly
-Both Commands Have Similar Options
Conclusion
-Use Quartus II TCL API For Many Common Tasks
-Examples Demonstrate Common Uses
- FPGA学习笔记6-Quartus II中的TCL脚本
- FPGA学习笔记6-Quartus II中的TCL脚本(翻译)
- FPGA学习笔记7-Quartus II其余的部分TCL指令
- FPGA学习笔记7-Quartus II其余的部分TCL指令(翻译)
- 【学习】【FPGA】quartus II…
- quartus ii 学习使用笔记
- TCL脚本学习笔记
- FPGA学习之TCL自动化测试脚本
- Quartus/FPGA/Verilog HDL【学习笔记001】
- Quartus II 中的Warning
- Quartus II 中的Warning
- quartus II使用笔记
- FPGA 软件Quartus II 版本下载地址
- Quartus II 安装教程—FPGA入门教程
- Quartus II 破解教程—FPGA入门教程
- NIOS II IDE编译出错:no file name for '-include'。Quartus ii中的.tcl文件run不起来
- TCL脚本学习笔记1(原创)
- FPGA学习(第1节)-Quartus II 12.1创建FPGA-DEMO项目(LED流水灯)
- oracle不同版本间数据的导入导出
- GWTEXT之创建JS对象
- 面试信息获取_1
- An introduction to the SOLID principles of OO design
- GWTEXT之JSNI
- FPGA学习笔记6-Quartus II中的TCL脚本
- lsof[转载]
- 母版页中弹出模式对话框,并获取返回值
- USTCOJ 1281 Unhappy dots 快排模板
- 数据结构的排序
- FPGA学习笔记6-Quartus II中的TCL脚本(翻译)
- 他的统计学(转载)
- mac os 自带文件夹突然变为英文的解决办法
- http的header