Tcl在Vivado中的使用


http://blog.chinaaet.com/detail/36014

 

 

Vivado是Xilinx最新的FPGA設計工具,支持7系列以后的FPGA及Zynq 7000的開發。與之前的ISE設計套件相比,Vivado可以說是全新設計的。無論從界面、設置、算法,還是從對使用者思路的要求,都是全新的。看了大家很多的博文,基本上都是用GUI創建工程,那我就簡單介紹一下Vivado的腳本使用。

 

    在ISE設計套件中,支持多種腳本: 可以用xperl來運行perl腳本,可以用xtclsh來運行Tcl腳本,還可以用windows批處理腳本來運行設計流程。

    ISE集成的Tcl腳本解釋器為8.4版本。同時,ISE GUI中的Tcl console功能不夠強大,部分組件使用的腳本也與Tcl有不同,導致Tcl腳本在ISE上並不十分流行。

    在Vivado上,Tcl已經成為唯一支持的腳本。並且,所有操作都有對應的Tcl腳本可以執行。所以,掌握Tcl腳本語言對掌握Vivado的使用有重要幫助。

    Vivado上集成的Tcl腳本解釋器為8.5版本,也是目前比較流行的Tcl版本。Vivado的核心就是一個腳本解釋器,GUI界面只是將各種腳本命令封裝為圖形化界面而已。

 

    下面以Windows為平台,用腳本的思路,運行一下Vivado:

  •     首先需要設置環境變量,在path環境變量中添加Vivado的路徑,路徑設置到bin文件夾,例如C:\Xilinx\Vivado\2014.1\bin
  •     在Windows界面下,“開始”->“運行”,輸入cmd,打開windows命令行終端。這個時候 有三個選擇:
1. 輸入“vivado”,啟動Vivado GUI界面,和點擊桌面上的圖標啟動Vivado沒什么區別;事實上,直接點擊桌面圖標,就是調用windows batch命令啟動vivado 
2. 輸入“vivado -mode batch -source file.tcl”,從腳本批處理的形式啟動Vivado,運行后直接執行file.tcl文件
3. 輸入“vivado -mode tcl”,啟動Tcl交互式命令行。
  • 使用第三種方法。啟動后顯示Vivado的版本,這里使用2014.1

            

  • 輸入命令 “info tclversion”可以查看到Vivado使用的Tcl的版本 8.5

            

 

    Tcl是一種很容易用戶自己定義命令的腳本語言,Xilinx在此基礎上增加了大量Vivado的命令。對於Vivado自定義的非標准的Tcl命令,輸入該命令后,繼續輸入空格+“-help”,可以查到該命令的詳細解釋。

 

    Vivado GUI中的Tcl console和CMD啟動的交互命令行功能基本相同,不同在於Vivado 在切換路徑時可以利用CMD的自動補缺功能更方便的切換路徑。

    

    Vivado有兩種設計流程:project模式和non-project模式。

    •     如果已經有設計工程了,可以使用Tcl腳本繼續進行project的流程,例如:
      1
      2
      3
      4
      5
      open_project TEST.xpr    #打開已有的工程文件TEST.xpr
      launch_runs synth_1      #運行綜合 synth_1
      wait_on_run synth_1      #等待綜合結束
      launch_runs impl_1 -to_step write_bitstream    #運行實現impl_1,並生成bit文件
      wait_on_run impl_1       #等待實現結束

       

      •     如果使用non-project模式,則腳本會復雜一些,下面提供一個模板。

      注:英文注釋是參考Xilinx相關文檔,中文注釋是為了方便閱讀,由於Vivado原生不支持中文,所以為了避免不必要的錯誤,建議使用時去除中文

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      ##############################################################################
      ##############################################################################
      ##############################################################################
      # STEP#1: define the output directory area.
      # 定義工程文件的存放路徑
      set outputDir . /PRJ
      # file mkdir $outputDir
      #
      # STEP#2: setup design sources and constraints
      #
      # VHDL
      #
      read_vhdl -library bftLib [ glob . /Sources/hdl/bftLib/ *.vhdl ] #指定需要添加的VHDL庫文件,glob是掃描某個路徑下的全部文件(這里是.vhdl文件)
      read_vhdl . /Sources/hdl/bft .vhdl              #指定需要添加的VHDL文件
      # ##############################
      # Verilog HDL
      #
      read_verilog  [ glob . /SRC/ *. v ]                #指定需要添加的Verilog文件,glob是掃描某個路徑下的全部文件(這里是.v文件)
      # ##############################
      # XDC
      #
      read_xdc [ glob . /CONSTRS/ *.xdc ]               #指定需要添加的xdc文件,glob是掃描某個路徑下的全部文件(這里是.xdc文件)
      # ##############################
      # EDIF and NGC
      #
      read_edif .. /test .edif                          #指定需要添加的網表文件
      # ##############################
      # IP XCI
      #
      read_ip . /CORE/MMCM/MMCM .xci                    #指定需要添加的xci IP文件
      # ##############################
      # STEP#3: run synthesis, write design checkpoint, report timing,
      # and utilization estimates
      # 運行綜合 ,同時設定相關綜合參數
      synth_design - top SCRIPT_TEST       \
                    -part xc7z100ffg900-2  \
                    -fanout_limit 1000     \
                    -shreg_min_size 3      \
                    -flatten_hierarchy full
      write_checkpoint -force $outputDir /post_synth .dcp #存檔
      report_timing_summary - file $outputDir /post_synth_timing_summary .rpt    #生成時序報告
      report_utilization - file $outputDir /post_synth_util .rpt #生成資源使用報告
      #
      #
      # STEP#4: run logic optimization, placement and physical logic optimization,
      # write design checkpoint, report utilization and timing estimates
      #
      opt_design        #優化設計
      place_design      #布局
      report_clock_utilization - file $outputDir /clock_util .rpt    #生成資源使用報告
      write_checkpoint -force $outputDir /post_place .dcp       #存檔
      report_timing_summary - file $outputDir /post_place_timing_summary .rpt #生成時序報告
      #
      # STEP#5: run the router, write the post-route design checkpoint, report the routing
      # status, report timing, power, and DRC, and finally save the Verilog netlist.
      #
      route_design      #布線
      write_checkpoint -force $outputDir /post_route .dcp #存檔
      report_route_status - file $outputDir /post_route_status .rpt #報告布線狀況
      report_timing_summary - file $outputDir /post_route_timing_summary .rpt    #生成時序報告
      report_power - file $outputDir /post_route_power .rpt  #生成功耗報告
      report_drc - file $outputDir /post_imp_drc .rpt        #運行DRC 生成DRC檢查報告
      # write_verilog -force $outputDir/cpu_impl_netlist.v -mode timesim -sdf_anno true
      #
      # STEP#6: generate a bitstream
      #
      write_bitstream -force $outputDir /SCRIPT_TEST .bit  #生成bit文件
        
      ##############################################################################
      ##############################################################################
      ##############################################################################
       
    • 另外,在運行Vivado GUI的時候,工程文件的路徑下會有一個.jou的文件,會自動記錄所有GUI操作對應的Tcl腳本,便於查找與使用。

          關於Tcl的學習,網上文章不少,這里只推薦xilinx的相關文檔

          UG892 講述Vivado設計流程,non-project模式中有針對Tcl腳本的說明

          http://www.xilinx.com/support/documentation/sw_manuals/xilinx2014_2/ug892-vivado-design-flows-overview.pdf

          UG894 講述如何在Vivado中使用Tcl的文檔

          http://www.xilinx.com/support/documentation/sw_manuals/xilinx2014_2/ug894-vivado-tcl-scripting.pdf


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM