這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)Quartus命令行及腳本使用介紹是怎樣的,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),嵩縣企業(yè)網(wǎng)站建設(shè),嵩縣品牌網(wǎng)站建設(shè),網(wǎng)站定制,嵩縣網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,嵩縣網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
Quartus本身除了GUI以外,還可以在不打開GUI的情況下通過命令行執(zhí)行命令或者腳本來進行工程創(chuàng)建、指定器件及型號、讀取源碼、引腳分配、編譯、布局布線、約束等操作,本教程涉及工程創(chuàng)建、指定器件及型號、讀取源碼、編譯以及生成blif,至于后面的布局布線、引腳分配、約束等功能可以看完教程后查看相關(guān)資料搞定。
認真閱讀完上面的鏈接對應(yīng)的內(nèi)容,讀完以后基本就可以掌握了。
首先將quartus的路徑加入到用戶變量中去。
quartus的命令行和腳本功能一共包含兩個部分:可執(zhí)行命令和包。不同的命令可以調(diào)用不同的包,而不同的包有著不同的功能。
先說在前面,flow
包中的execute_module
指令后面可以接map、fit、sim、sta
等選項,其功能與quartus_map、quartus_fit、quartus_sim、quartus_sta
一致,并且后面可以跟-args
選項,這就將外部命令和內(nèi)部包聯(lián)系在了一起,即使在tcl
下面也可以執(zhí)行外部的命令。
比如,quartus_sh
是一個可執(zhí)行命令,除了-h、--help等這些所有可執(zhí)行命令都有的選項以外,quartus_sh
還可以調(diào)用project
這個包,而project
這個包內(nèi)包含的project_new、project_open
等功能都可以被quartus_sh
使用,但每個可執(zhí)行命令后面跟的選項并沒有包含所有可調(diào)用包的所有命令,而僅僅包含了少量包的常用命令,比如在終端輸入quarus_sh --help
,會顯示后面可以跟的選項:
zli@lizhen:~$ quartus_sh --help Quartus Prime Shell Version 18.1.0 Build 625 09/12/2018 SJ Lite Edition Copyright (C) 2018 Intel Corporation. All rights reserved. Usage: ------ quartus_sh [-h | --help[=<option|topic>] | -v] quartus_sh -g | --gui [<project_name>] quartus_sh <other options> quartus_sh -t <script file> [<script args>] quartus_sh -s quartus_sh --tcl_eval <tcl command> Description: ------------ Options: -------- -f <argument file> --archive --clean --flow --ip_upgrade --lower_priority --platform --platform_install --prepare --qboard --qhelp --qslave --relcon --restore --set --simlib_comp --write_flow_template Help Topics: ------------ arguments return_codes tcl For more information on specific options, use --help=<option|topic>.
flow
是一個可以被quartus_sh
調(diào)用的包,上面的Option
下面的--flow
就代表了這個包,后面可以接compile
,完整命令是quartus_sh --flow compile xxx
,該命令會打開名為xxx
的project并編譯。
但quartus_sh
后面跟的選項并沒有包含所有包的所有命令,比如flow
包的delete_netlist、execute_module
等功能并沒有在選項中出現(xiàn),剛剛講過的project
包及功能也沒有在選項中出現(xiàn),我們?nèi)绾握{(diào)用呢?
答案是:進入交互式界面--Tcl Console。
quartus
的每一個可執(zhí)行命令如quartus_sh、quartus_sta、quartus_map
后面都可以接-s
,回車以后就進入了相應(yīng)命令的交互式界?,注意是相應(yīng)命令,意思是該界?下只 能執(zhí)?該命令對應(yīng)的包的功能,?如我輸?quartus_sh -s
進?quartus_sh
的交互式界 ?:
zli@lizhen:~$ quartus_sh -s ...... tcl>
在該界面下quartus_sh
所能調(diào)用的包的所有命令都可以執(zhí)行,但不被quartus_sh
調(diào)用的包的命令不能被執(zhí)行,比如: 當(dāng)我執(zhí)行check_timing
這條命令時就會顯示不能執(zhí)行,并且會提示可以調(diào)用該命令的可執(zhí)行命令:
tcl> check_timing ERROR: Quartus Prime Tcl command "check_timing" is only available for use in the following executables: quartus_fit quartus_sta
如果想要執(zhí)行check_timing
,就需要退出并進入到對應(yīng)命令的交互式界面,所以這就要求我們操作前想清楚命令屬于哪個模塊。
一條條打命令再回車非常麻煩,所以還可以把所有的包的命令放在一個.tcl
文件中,然后用對應(yīng)的可執(zhí)行命令執(zhí)行這個腳本,比如寫一個創(chuàng)建工程、指定源碼、指定器件、進行編譯的xxx.tcl
,然后用quartus_sh -t xxx.tcl
執(zhí)行這個腳本,就會自動完成一系列操作。
當(dāng)然如果你的腳本里面有類似于check_timing
這種專屬命令的話,就需要用對應(yīng)的可執(zhí)行命令來執(zhí)行腳本。
那么如何知道哪些包可以被對應(yīng)的可執(zhí)行命令調(diào)用呢?兩個辦法:
1.手冊里有講
實心圓代表可執(zhí)行語句默認加載了這個包。比如說,所有的可執(zhí)行語句即quartus_xxx
都加載了project
這個包,那么就默認可以執(zhí)行project
下面的所有命令。這意味著,不管用任何可執(zhí)行命令執(zhí)行.tcl
腳本,腳本中的project
包下命令都可以被執(zhí)行。
空心圓代表可執(zhí)行語句無法加載這個包,比如假如用quartus_sh
這條語句執(zhí)行sdc
這個包下的語句,就是不行的。
半空半滿圓表示,可執(zhí)行語句默認沒有加載這個包,要是想用的話需要自己進行手動加載。在.tcl
腳本內(nèi)相關(guān)命令前面寫入 load_package <package name>
或者package require ::quartus::<package name>
之后,就可以使用對應(yīng)包內(nèi)的指令了。
需要注意的一點是,表格里的Tcl Console
應(yīng)該是指quartus_sh
對應(yīng)的Tcl Console
,其可調(diào)用包比單純的quartus_sh
要多一些,同時也等于GUI界面的Tcl Console
。
2.quartus_sh --qhelp
可以顯示所有的可執(zhí)行命令及包
###跑個示例 找一個編譯好的工程,從菜單的project那里生成一個xxx.tcl
文件,然后和verilog源碼或者vhdl源碼一起復(fù)制到一個新的文件夾,當(dāng)前文件夾打開終端執(zhí)行quartus_sh -t xxx.tcl
,就會得到與原先一模一樣的工程。
接下來我們照葫蘆畫瓢手動寫一個xxx.tcl
試一下。
工程叫test_blif,只有一個verilog源碼,頂層模塊叫top,top.v
文件放在src/v
下面。
新建一個test_blif.tcl文件,前兩行載入包并設(shè)置一些參數(shù):
package require ::quartus::project set need_to_close_project 0 set make_assignments 1
然后判斷test_blif工程有沒有打開,以及當(dāng)前目錄下有沒有test_blif工程,沒有就新建一個:
# Check that the right project is open if {[is_project_open]} { if {[string compare $quartus(project) "test_blif"]} { puts "Projec test_blif is not open" set make_assignments 0 } } else { # Only open if not already open if {[project_exists test_blif]} { project_open -revision top test_blif } else { project_new -revision top test_blif } set need_to_close_project 1 }
注意上面的-revision
后面的top
,這是revision
的名字,即.qsf
文件的名字,也是在不設(shè)置TOP_ENTITY
時默認的頂層模塊的名字。
注意:
當(dāng)文件夾內(nèi)有同樣工程(有qsf文件、qpf文件)的時候,上面的代碼在改動.tcl
腳本的make_assignments
以后,所做的改變并不會同步到原有的qsf
文件,quartus
只會添加原來qsf
沒有的設(shè)置,想要每一次運行腳本后qsf
都全部重寫的話需要修改.tcl
前半部分的代碼:
package require ::quartus::project package require ::quartus::flow set need_to_close_project 0 set make_assignments 1 # Check that the right project is open if {[is_project_open]} { if {[string compare $quartus(project) "test_blif"]} { puts "Projec test_blif is not open" set make_assignments 0 } } else { # Only open if not already open #if {[project_exists test_blif]} { # project_open -revision top test_blif #} else { project_new -revision top test_blif -overwrite #} set need_to_close_project 1 }
這樣每一次tcl的改動在執(zhí)行后都會導(dǎo)致qsf
的完全重寫。
接下來設(shè)置器件、型號、讀取verilog代碼、并把設(shè)置寫入對應(yīng)的qsf文件:
# Make assignments if {$make_assignments} { set_global_assignment -name FAMILY "Cyclone V" set_global_assignment -name DEVICE 5CGXFC7C7F23C8 set_global_assignment -name VERILOG_FILE src/v/top.v set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files # Commit assignments export_assignments #execute_flow -compile # Close project if {$need_to_close_project} { project_close } }
這里需要注意:
我沒有設(shè)置TOP_ENTITY
,所以默認用revision
的名字top
作為頂層文件,這是可以的。
整個tcl
文件只用到了project
一個包的命令,所以執(zhí)行后只是復(fù)制了工程,沒有編譯。
保存后執(zhí)行quartus_sh -t test_blif.tcl
,就可以在對應(yīng)文件夾生成工程。
那想要執(zhí)行編譯怎么辦呢?可以先quartus_sh -s
進入交互式界面,執(zhí)行flow
包的execute_flow -compile
指令;也可以在tcl腳本最前面先聲明flow
包:package require ::quartus::flow
,再在關(guān)閉工程前面加上一句execute_flow -compile
指令,這樣執(zhí)行腳本的時候會執(zhí)行編譯。
上述就是小編為大家分享的Quartus命令行及腳本使用介紹是怎樣的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當(dāng)前文章:Quartus命令行及腳本使用介紹是怎樣的
文章地址:http://aaarwkj.com/article10/pjccgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、營銷型網(wǎng)站建設(shè)、網(wǎng)站設(shè)計公司、移動網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、品牌網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)