第1章:设计流租命今行设计流程图10是一个标准命今行脚本的示例。该示例说明了建立工程、进行分析和综合,进行布局布线、时序分析以及为Quartus ll软件filtref教程设计生成编程文件的方法。如果已安装教程设计,宅位于/altera/qdesigns<versionnumber>/tutorial目录中。Altera建议您建立新目录,并将所有设计文件(*.v,*.bsf,*.bdf)从/altera/qdesigns<versionnumber>/tutorial目录复制到新目录下,以便编译设计流程示例。可以从新工程目录中的命今提示符下运行图10中的四个命令,也可以将这些命令存储在批处理文件或shell脚本中。这些示例假定在您的PATH环境变量中包括/<Quartusllsystemdirectory>/bin目录(或UNIX以及Linux工作站上的/<Quartusllsystemdirectory>/<platform>目录,其中,<platform>可以是solaris、linux或者hp_l)。图10.金本行牌本示例quartus_map filtref--family=stratix建立针对Stratix原件集列的新Quartus ll工程guartus_fit fi1tref--part=EP1s10F780c5--fmax=80MHztsu=8ns为EPIS10F780C5原件进行市局市统并指定全局时序要求quartus_tan filtref进行财序分新quartus_asm filtref生成编程文件图11是一个用于UNIX工作站命今行脚本示例的摘录。此脚本假定当前目录中存在名为fir filter的Quartus Il教程工程。此脚本分析fir filter工程中的每个设计文件,并报告任何含语法错误的文件。图11.UNIX金本行Shell肿本示例(第1部分,共2部分)#!/bin/shFILES_WITH ERRORS=""forfilenameinls*.bdf*.v21ALTERA公司QUARTUSII简介
第 1 章 : 设计流程 命令行设计流程 ALTERA 公司 QUARTUS II 简介 21 图 10 是一个标准命令行脚本的示例。该示例说明了建立工程、进行分析和 综合、进行布局布线、时序分析以及为 Quartus II 软件 filtref 教程设计生成 编程文件的方法。如果已安装教程设计,它位于 /altera/qdesigns<version number>/tutorial 目录中。Altera 建议您建立新目 录,并将所有设计文件 (*.v, *.bsf, *.bdf) 从 /altera/qdesigns<version number>/tutorial 目录复制到新目录下,以便编译设计流程示例。可以从新 工程目录中的命令提示符下运行图 10 中的四个命令,也可以将这些命令存 储在批处理文件或 shell 脚本中。 这些示例假定在您的 PATH 环境变量中包括 /<Quartus II system directory>/bin 目录 ( 或 UNIX 以及 Linux 工作站上的 /<Quartus II system directory>/<platform> 目录,其中,<platform> 可 以是 solaris、linux 或者 hp_II) 。 图 10. 命令行脚本示例 图 11 是一个用于 UNIX 工作站命令行脚本示例的摘录。此脚本假定当前目录 中存在名为 fir_filter 的 Quartus II 教程工程。此脚本分析 fir_filter 工程中的 每个设计文件,并报告任何含语法错误的文件。 quartus_map filtref -family=Stratix quartus_fit filtref -part=EP1S10F780C5 -fmax=80MHz -tsu=8ns quartus_tan filtref quartus_asm filtref 建立针对 Stratix 器件系列的新 Quartus II 工程 为 EP1S10F780C5 器件进行布局布 线并指定全局时 序要求 进行时序分析 生成编程文件 图 11. UNIX 命令行 Shell 脚本示例 ( 第 1 部分,共 2 部分 ) #!/bin/sh FILES_WITH_ERRORS="" for filename in `ls *.bdf *.v`
第1章:设计流程命今行设计流程图11.UNIX金本行Shell肿本示例(第2部分,共2部分)doquartus_map fir_fiiter--analyze_file=sfilenameif[s?-ne o]thenFILES_WITH_ERRORS-"SFILES_WITH_ERRORS $filename"fidoneif[-z"SFILES_WITHERRORS"]thenecho "All files passed the syntax check"exit oelseecho "There were syntax errors in the following file(s)"echo$FILES_WITH_ERRORSexit 1fi有英信息清參阁命今行脚本Altera网站上QuartusllHandbook第2卷"Command-LineScripting"Altera网站上QuartusllScriptingReferenceManual使用 Tcl 命令在QuartusIl软件中,可以使用QuartusIl可执行文件运行Tcl命今或者建立并运行Tcl脚本,执行Quartusll工程中的以下任务。TclAPl功能包括以下类别:工程与分配功能O器件功能O高级器件功能0O流程功能时序功能0O高级时序功能OSimulator功能报告功能OO时序报告功能O反标功能22QUARTUSII简介ALTERA公司
第 1 章 : 设计流程 命令行设计流程 22 QUARTUS II 简介 ALTERA 公司 使用 Tcl 命令 在 Quartus II 软件中,可以使用 Quartus II 可执行文件运行 Tcl 命令或者建立 并运行 Tcl 脚本,执行 Quartus II 工程中的以下任务。Tcl API 功能包括以下 类别 : <> 工程与分配功能 <> 器件功能 <> 高级器件功能 <> 流程功能 <> 时序功能 <> 高级时序功能 <> Simulator 功能 <> 报告功能 <> 时序报告功能 <> 反标功能 do quartus_map fir_filter -analyze_file=$filename if [ $? -ne 0 ] then FILES_WITH_ERRORS="$FILES_WITH_ERRORS $filename" fi done if [ -z "$FILES_WITH_ERRORS" ] then echo "All files passed the syntax check" exit 0 else echo "There were syntax errors in the following file(s)" echo $FILES_WITH_ERRORS exit 1 fi 图 11. UNIX 命令行 Shell 脚本示例 ( 第 2 部分,共 2 部分 ) f 有关信息 请参阅 命令行脚本 Altera 网站上 Quartus II Handbook 第2卷 “Command-Line Scripting” Altera 网站上 Quartus II Scripting Reference Manual
第1章:设计流租命今行设计流程LogicLock功能ChipEditor功能其宅功能可以采用多种方法在QuartusIl软件中使用Tcl脚本。可以使用针对Tcl的QuartusIlAPI命今建立Tcl脚本。应将Tcl脚本另存为TclScriptFile(.tcl)。可以使用QuartusllTextEditor中的Templates命今(Edit菜单)在文本文件中插入Tcl模板和QuartusllTcl模板(对于Quartusll命令),建立Tcl脚本。QuartusIl Tcl模板中使用的命今与Tcl API命今语法相同。若要将现有工程引入到另一个工程中,可以使用GenerateTcl FileforProject命今(Project菜单)为该工程生成Tcl脚本文件。可以在Quartus Il Tcl Console窗口或在Tcl Scripts对话框(Tools菜单)中使用quartus_sh可执行文件在命今行模式下运行Tcl脚本。获取有买Td个本的信息Quartusll软件包括QuartusIl命今行和TclAPIHelp测览器,此测览是基于Tcl和Tk的GUI,用于测览命今行和TcIAPI帮助。若要使用此帮助,请在命今提示符下键入以下命令:quartus_sh --qhelp-也可以在Quartusll Help中查看TCLAPIHelp,该帮助为困形用户界面。更详细的信息,请参阅Quartus IlHelp中的“Overview:UsingTcl Scripting和“APIFunctionsforTcl。图12是一个Tcl脚本示例。图12.Tcl肺本示例(第1部分,共3部分)# since ::quartus::report is not pre-loaded# by quartus_sh,load this package now# before using the report Tcl ApIload package report# since ::quartus::flow is not pre-loaded# by quartus_sh, load this package now# before using the flow Tcl ApI# Type"help -pkg flow"toview information# about the packageloadpackage flow#------Get Actual Fmax data from the Report Fileproc get_fmax_from report23QUARTUSII简介ALTERA公司
第 1 章 : 设计流程 命令行设计流程 ALTERA 公司 QUARTUS II 简介 23 <> LogicLock 功能 <> Chip Editor 功能 <> 其它功能 可以采用多种方法在 Quartus II 软件中使用 Tcl 脚本。可以使用针对 Tcl 的 Quartus II API 命令建立 Tcl 脚本。应将 Tcl 脚本另存为 Tcl Script File(.tcl)。 可以使用 Quartus II Text Editor 中的 Templates 命令 (Edit 菜单 ) 在文本文件 中插入 Tcl 模板和 Quartus II Tcl 模板 ( 对于 Quartus II 命令 ),建立 Tcl 脚 本。Quartus II Tcl 模板中使用的命令与 Tcl API 命令语法相同。若要将现有工 程引入到另一个工程中,可以使用 Generate Tcl File for Project 命令 (Project 菜单 ) 为该工程生成 Tcl 脚本文件。 可以在 Quartus II Tcl Console 窗口或在 Tcl Scripts 对话框 (Tools 菜单 ) 中使 用 quartus_sh 可执行文件在命令行模式下运行 Tcl 脚本。 图 12 是一个 Tcl 脚本示例。 ! 获取有关 Tcl 命令的信息 Quartus II 软件包括 Quartus II 命令行和 Tcl API Help 浏览器,此浏览器是基于 Tcl 和 Tk 的 GUI,用于浏览命令行和 Tcl API 帮助。若要使用此帮助,请在命令提示符下键入以下命令 : quartus_sh -qhelp r 也可以在 Quartus II Help 中查看 TCL API Help, 该帮助为图形用户界面。更详细的信息,请 参阅 Quartus II Help 中的 “Overview: Using Tcl Scripting” 和 “API Functions for Tcl”Ó。 图 12. Tcl 脚本示例 ( 第 1 部分,共 3 部分 ) # Since ::quartus::report is not pre-loaded # by quartus_sh, load this package now # before using the report Tcl API load_package report # Since ::quartus::flow is not pre-loaded # by quartus_sh, load this package now # before using the flow Tcl API # Type "help -pkg flow" to view information # about the package load_package flow #- Get Actual Fmax data from the Report File -# proc get_fmax_from_report {} { #-#
第1章:设计流租命令行设计流程图12.Tl胖本示例(第2部分,共3部分)global project_name# Load the project report databaseload report $project name# Get the actual Fmaxset actual_fmax [get_timing_analysis_summary_results -clock_setupclock -actual]# Now unload the project report databaseunload_reportreturn sactual_fmax1Set the project name to chiptrip=#----+set project name chiptrip#------Create or open project .-----#if (project_exists sproject_name)(Project already exists --open project#-----project_open sproject_nameJ else (#--..-Project does not exist -- create new projectproject_new sproject_name1#--.--Fmax requirement:155.55MHz-set required_fmax155.55MHz#------ Make a clock assignment with the Fmax requirementcreate_base_clock clock -fmax srequired_fmax#--.-.- Make global assignments -...--#set_global_assignment -name family sTRATIxset_global_assignment -name device EP1S10F484C5set_global_assignment -name tsu_requirement 7.55ns#---..- Make instance assignments .....-## The following is the same as doing:"set_instance_assignment -name location -to clock Pin_M20"set_location_assignment -to clock Pin_M20#------Compile using ::quartus::flow-execute_flow-compile24QUARTUSII简介ALTERA公司
第 1 章 : 设计流程 命令行设计流程 24 QUARTUS II 简介 ALTERA 公司 global project_name # Load the project report database load_report $project_name # Get the actual Fmax set actual_fmax [get_timing_analysis_summary_results -clock_setup clock -actual] # Now unload the project report database unload_report return $actual_fmax } #- Set the project name to chiptrip -# set project_name chiptrip #- Create or open project -# if {project_exists $project_name} { #- Project already exists - open project -# project_open $project_name } else { #- Project does not exist - create new project -# project_new $project_name } #- Fmax requirement: 155.55MHz -# set required_fmax 155.55MHz #- Make a clock assignment with the Fmax requirement -# create_base_clock clock -fmax $required_fmax #- Make global assignments -# set_global_assignment -name family STRATIX set_global_assignment -name device EP1S10F484C5 set_global_assignment -name tsu_requirement 7.55ns #- Make instance assignments -# # The following is the same as doing: # "set_instance_assignment -name location -to clock Pin_M20" set_location_assignment -to clock Pin_M20 #- Compile using ::quartus::flow -# execute_flow -compile 图 12. Tcl 脚本示例 ( 第 2 部分,共 3 部分 )
第1章:设计流租命今行设计流程图12.Tcl本示例(第3部分,共3部分)#--.--Report Fmax from reportset actual_fmax [get_fmax_from_report]puts.puts".puts"Required Fmax:$required_fmax Actual Fmax:$actual_fmax"puts"请拳阁有美信息Tl脚本Altera网站上Quartusll Handbook第2巷"Tcl ScriptingQuartusII Help中的"Overview: Using TclScripting"Altera网站上Quartusll ScriptingReferenceManual建立Makefile脚本Quartusll软件支持使用Quartusll可执行文件的Makefile脚本,将您的脚本与各种脚本语言集成在一起。图13是标准Makefile脚本的摘录。图13. Makefile脚本辅录(第1部分,共3部分)#################################################################### Project Configuration:# Specify the name of the design (project) and Quartus II Settings# File (.gsf) and the list of source files used################################################################PROJECT = chiptripSOURCE FILEs = auto_max.v chiptrip.v speed ch.vtick_cnt.vtime_cnt.vASSIGNMENT_FILES = chiptrip.qpf chiptrip.qsf################################################################## Main Targets##all:build everything# clean: remove output files and database#################################################################25ALTERA公司QUARTUSII简介
第 1 章 : 设计流程 命令行设计流程 ALTERA 公司 QUARTUS II 简介 25 建立 Makefile 脚本 Quartus II 软件支持使用 Quartus II 可执行文件的 Makefile 脚本,将您的脚本 与各种脚本语言集成在一起。图 13 是标准 Makefile 脚本的摘录。 #- Report Fmax from report -# set actual_fmax [get_fmax_from_report] puts "" puts "-" puts "Required Fmax: $required_fmax Actual Fmax: $actual_fmax" puts "-" 图 12. Tcl 脚本示例 ( 第 3 部分,共 3 部分 ) f 有关信息 请参阅 Tcl 脚本 Altera 网站上 Quartus II Handbook 第 2 卷 “Tcl Scripting” Quartus II Help 中的 “Overview: Using Tcl Scripting” Altera 网站上 Quartus II Scripting Reference Manual 图 13. Makefile 脚本摘录 ( 第 1 部分,共 3 部分 ) ################################################################### # Project Configuration: # # Specify the name of the design (project) and Quartus II Settings # File (.qsf) and the list of source files used. ################################################################### PROJECT = chiptrip SOURCE_FILES = auto_max.v chiptrip.v speed_ch.v tick_cnt.v time_cnt.v ASSIGNMENT_FILES = chiptrip.qpf chiptrip.qsf ################################################################### # Main Targets # # all: build everything # clean: remove output files and database ###################################################################