日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python tcl quartus_TCL脚本在Quartus II中的应用

發布時間:2024/8/1 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python tcl quartus_TCL脚本在Quartus II中的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文討論的話題:

-TCL腳本在Quartus II中

-創建一個工程

-編譯工程

-查看報告數據

-時序分析

TCL腳本的優勢

-顧客分析:只提取你所需要的信息

-自動設置:在GUI界面中節省手動設置的步驟;其他的EDA設計軟件的接口

-可重用性:能夠更簡單的管理維護以及獲得相應文檔

Quartus II支持TCL

-Quartus II軟件提供了多方面的TCL支持

-四種可執行命令行包含編譯TCL

-Quartus II的TCL API在14個Package中包含超過150個指令

TCL package

-TCL指令分組通過package的形式

-可用package的子集是被預加載的:減少內存占用;在TCL腳本中加載package是十分重要的

-不是所有的package都是能夠在命令行中應用的:通過功能排列package;時序分析的package只能在quartus_tan上使用

package的通常用法

用法

描述

::quartus::project

創建一個工程,進行設置

::quartus::flow

編譯工程,運行標準編譯流程

::quartus::report

連接報告表,創建一個標準的報告

::quartus::timing

估算并且報告時序路徑

::quartus::timing_report

列出所有的時序路徑

-加載package

load_package [-version ]

::quartus::在這里可以被忽略的

需要被指定交替使用的package

::quartus::project -建立工程

-創建一個工程,進行設置

-一些常用的指令

工程和版本修訂相關:project_new,project_open,project_close,create_revision,set_current_revision

一般設置:set_global_assignment,set_instance_assignment

特殊設置:

set_location_assignment,set_input_delay,set_output_delay,

set_multicycle_assignment,create_base_clock,timegroup

::quartus::project 實例

-創建一個工程,進行設置,使用fir_filter教程文件

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

保存設置至QSF中

-設置不會全部自動存儲在Quartus II的QSF(Quartus

II的設置文件)中

-設置在使用前一定需要存儲在QSF中,舉例,在系統調用之前

-一些指令會自動存儲在設置中:project_close,execute_flow,execute_moudle

-使用外部設置命令進行手動設置

外部設置方法

-通常使用在系統調用之前的命令行

例子:

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"

-使用execute-moudle -tool

map去替代qexec的設置自動保存

::quartus::flow -編譯包

-編譯工程并且運行命令流

-兩種指令

execute_flow

compile,check_ios,etc

execute_moudle -tool

map,fit,tan,etc

-Package不能默認的被加載:使用load_package于編譯流程中任意一個指令之前

::quartus::flow 例子

-打開一個工程并且進行編譯,在之前例子的基礎上

例子:

load_package flow

project_open fir_filter -revision filtref

execute_flow -compile

project_close

-添加execute_flow

-compile指令到之前的例子中

建立工程并且編譯通過一個腳本

小測驗

-編寫一段腳本能夠建立一個工程并且編譯

-通過編譯腳本來合并工程

測驗答案

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 -編譯報告

-訪問報告表單并且創建一個標準的報告

-一些通常被使用在報告上的指令

報告管理:load_report,unload_report,create_report_panel

關于報告的信息:get_report_panel_names,get_number_of_rows

訪問報告數據:get_report_panel_row,get_report_panel_data,get_timing_analysis_summary_result

報告形式

-通過控件名字進行數據訪問

-控件是按照層級進行排列的

-多重訪問通過使用||標識符

||

-選擇層級下的報告控件"Timing Analyzer ||

Timing Analyzer Settings"

-頂層報告不含有||

流程記錄控件被命名為流程記錄

-控件是列表化的

通過表格呈現

-行數通過數字標識,列通過姓名標識

-行數從零開始

-第零行含有列標題

獲取報告例子

-row2 第二行

-row_name "Timing Models" ?標題為“時序模型”

-col1 第一列

-col_name Setting ?讀取設置

通過TCL腳本讀取第二行第一列的設置

例子:

get_report_panel_data -name "Timing

Analyzer||Timing Analyzer Settings"\

-row_name "Timing Models"

-col_name Setting

::quartus::report 例子

-列出每一個錯誤的時序

-采用列表概要時序分析的結果

--列出時序錯誤的欄目

-列出所有錯誤的時序的TCL腳本

例子:

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

小測驗

-在編譯時驗證是否有遇到時序錯誤

假設項目是打開的

提示:多少時序錯誤會被遇到

答案

#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 時序驗證

-估算仿真并且報告時序驗證

只能在quartus_tan中執行

-一些常用的指令

create_timing_netlist

report_timing

delete_timing_netlist

時序的網絡表

-時序的網絡表一定在報告之前創建

-創建通過指令create_timing_netlist

-選項

Minimum

Timing Analysis?Specify Speed Grade of Target

Part?Specify Post-Synthesis

Netlist

一般時序報告的指令

-估算并且報告時序路徑分析在FLY上

包含內存影響

能夠報告設計中的任意部分路徑

包含所有不含在時序報告表中的項目

-例子

report_timing

-tsu

report_timing -clock_setup -clock_filter clk

report_timing -tpd -npaths 5

::quartus::timing 例子

-在兩個文件中列出所有的時序錯誤的時序路徑

默認是完整規模的時序分析

最小規模的時序分析

例子:

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

-列出時序路徑

能夠使用在quartus_tan中以及GUI界面中

-一種指令

list_path

-在時序報告中報告時序路徑

只應用于預估算時序路徑中

非顯性的時序路徑不被報告

-相似的選項指令有report_timing

例子:

list_path -from inst4 -to inst5*

-stdout

小測試

-在兩種指令之間有什么不同

report_timing

list_path

答案

-list_path

只能夠在時序分析控件面板上的時序路徑

-report_timing

可以分析任意設計中的任意時序路徑

-兩種指令包含相似的選擇

總結

-采用quartus II的TCL API指令

-通過一些例子來描述指令的用法

總結

以上是生活随笔為你收集整理的python tcl quartus_TCL脚本在Quartus II中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。