2014-10-02 69 views
0

我想在調用Tcl命令時有條件地追加選項。我正在使用Xilinx Tcl命令synth_design,如UG835 p.1042中所示,使用Tcl版本8.5。如何使用條件選項調用Tcl命令

例如,我想:

  1. 構建的數據結構,將附加0或更大的-verilog_define MACRO其中-verilog_define不是字符串而是一個選項,
  2. 通該結構於該命令在其擴展形式。

凡本:

synth_design -top ${top}_top -part ${part} -verilog_define MACRO1 -verilog_define MACRO2 
              ^-------------------------------------------^ 

變爲這樣的:

​​
+0

如果你使用的是8.5以前的Tcl版本,你可以使用'eval synth_design -top $ {top} _top -part $ {part} $ options' – Jerry 2014-10-03 07:26:18

+0

嚴格來說,'eval [list synth_design -top $ {top} _top - 如果'$ top'或'$ part'包含Tcl元字符,則可以避免出現部分$ {part}] $ options'。 – 2014-10-03 12:08:30

回答

2

隨着{*}$makro(膨脹)

例如爲:

set makro {-verilog_define MACRO1 -verilog_define MACRO2} 
synth_design -top ${top}_top -part ${part} {*}$makro 
+0

確定什麼,如果宏是一個字符串 '設置DEFS {}' '陣列設置選項$ :: argv' '設置git_ver $選項(-git_ver)' 'lappend DEFS {-verilog_define GIT_VERSION = $ { git_ver}}' 'foreach i $ defs {puts $ i}'...這給了我'-verilog_define GIT_VERSION = $ {git_ver}' – hancock 2014-10-03 18:11:14

+0

您正在使用'lappend'可能是錯誤的。嘗試'lappend defs -verilog_define GIT_VERSION = $ {git_ver}' – 2014-10-04 15:22:51