Vivado IP Integrator: Using TTCL

ttcl語法和tcl一致,類似於JSP與Java的關係,只是載體有html變成了Verilog;

僅以Verilog內嵌入TCL語法做介紹:

TTCL內核心的三個語法是<: [TCL Segment] :>和<=: [TCL Expression] :>、<#: [TTCL FILE] :>

  1. TCL Segment:執行語句操作,執行的結果不會填入Verilog代碼裏;
  2. TCL Expression:TCL的表達式,用於計算和字符串等操作,執行結果會原封不動填入verilog相應位置,不需要eval或expr,因爲它默認執行expr,不需要顯示標註。另外若該語句獨佔一行,解釋器會在生成文件上留出一行,如果不獨佔一行,且<:只有空格無數據,則語句後的verilog代碼則根據:>的空格便宜會自動加到起始:

語句1:

<: for { set i 0 } { $i < $regnum } { incr i } { :>

reg<=: $i :>_o,

reg<=: $i :>_o_valid,

<: } :>

執行效果:

reg0_o,

reg0_o_valid,

 

reg1_o,

reg1_o_valid,

語句2:

<: for { set i 0 } { $i < $regnum } { incr i } { :>reg<=: $i :>_o,

reg<=: $i :>_o_valid,

<: } :>

執行效果:

reg0_o,

reg0_o_valid,

reg1_o,

reg1_o_valid,

語句3:

<: for { set i 0 } { $i < $regnum } { incr i } { :> reg<=: $i :>_o,

reg<=: $i :>_o_valid,

<: } :>

執行效果:

reg0_o,

reg0_o_valid,

reg1_o,

reg1_o_valid,

語句4:

//test<: for { set i 0 } { $i < $regnum } { incr i } { :> reg<=: $i :>_o,

reg<=: $i :>_o_valid,

<: } :>

執行效果:

//test reg0_o,

reg0_o_valid,

reg1_o,

reg1_o_valid,

語句3:

//tett<: for { set i 0 } { $i < $regnum } { incr i } { :>reg<=: $i :>_o,

reg<=: $i :>_o_valid,

<: } :>

執行效果:

tettreg0_o,

reg0_o_valid,

reg1_o,

reg1_o_valid,

  1. TTCL FILE: 需要包含的文件,類似於C語言的include語法,引用文件的所有操作都會被執行一遍。

除此之外,對於TTCL頭信息:

<: setFileName [ttcl_string_concat $CompName "_TOP"] ;#此行用於告知解釋器,生成的Verilog文件的文件名叫什麼:>

<: setFileExtension ".v" ;#此行用於告知解釋器,生成的Verilog文件的擴展名叫什麼:>

<: setOutputDirectory $c_dir_name ;# 此行用於告知解釋器,生成的Verilog文件放在相對於IP Root下什麼目錄:>

TCL的註釋用;#

TTCL上獲取工程信息的函數:

getProjectDevice]:獲取工程的器件類型;

getProjectSpeedGrade:獲取工程選用的器件的速度等級;

getStringValue "c_family":獲取工程的...(待實驗)

getComponentNameString:獲取IP被生成時的名字

getStringValue “[parameter]": 用於獲取parameter對應的屬性值,並以String傳遞;

getIntValue “[parameter]": 用於獲取parameter對應的屬性值,並以Int型傳遞;

get_property VERSION [current_ipcomp]]:獲取IP的版本號;

regexp {^(\d+)\.(\d+)$} $version -> major minor:剝離IP版本號成major和minor

get_property CORE_REVISION [current_ipcomp]:獲取IP的REV號;

expr {([isVerilogOutputRequired])?true:false}:...

expr {([isDefined "rtl_simulation"])?true:false}:...

get_parameter_property "SupportLevel":...

......繼續補充中

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章