ttcl語法和tcl一致,類似於JSP與Java的關係,只是載體有html變成了Verilog;
僅以Verilog內嵌入TCL語法做介紹:
TTCL內核心的三個語法是<: [TCL Segment] :>和<=: [TCL Expression] :>、<#: [TTCL FILE] :>
- TCL Segment:執行語句操作,執行的結果不會填入Verilog代碼裏;
- 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,
- 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":...
......繼續補充中