问题描述
有没有办法生成可以为Project Navigator项目设置的所有选项的列表?
解决/修复方法
Project Navigator GUI中提供的所有项目流程属性都可以通过Tcl shell读取或设置。 Tcl中的属性名称与GUI中显示的属性名称相同。
要查看可用属性,请输入以下命令:
项目属性
对于以行分隔的可用属性列表,请输入以下命令:
对于每个道具[项目属性] {置入“$ prop”}
要获取特定流程属性的当前值,请输入“project get”<process name>“
例:
项目得到“宏搜索路径”
如果多个进程使用相同的属性名称,则还必须指定进程。
例:
项目得到“注册复制” – 进程“综合 – XST”
要从Tcl设置流程属性,请键入“project set <property_name> <property_value>”
例:
项目集“宏搜索路径”“c:/ Ip / netlist_directory”
有关这些或任何Xilinx Tcl命令的更多信息,请键入“help <command name>”
#!xtclsh
#
#ISE xtclsh的示例脚本。该脚本读取所有进程
来自开放ISE项目的#properties属性并创建两个文件:
#1. <项目名称> _process_properties.txt是一个人类可读的报告
#表中列出了所有属性及其值。
#2. <项目名称> _process_properties.csv旨在导入
#进入诸如Micorsoft Excel之类的扩展程序。
#3。<项目名称> _clone_script.tcl将创建一个Tcl脚本
#可用于将当前打开的项目克隆到另一个项目中
#project。
#
#要运行此脚本,项目必须是打开的,并且必须有一个或
#综合视图中的更多设计文件,如HDL,EDIF,NGO等。
#然后,使用source命令获取scipt:
#%source generate_process_property_report.tcl
#
#ISE的Tcl命令的文档可以在
#ISE 9.1i开发参考指南,第3章。
#可以在http://tcl.tk找到有关Tcl本机命令的文档。
#
#
#
#$ Id:generate_process_property_report.tcl,v 1.2 2007/06/07 22:45:28 hgebb Exp $
#
#proc get_properties
#
#构建存储进程,进程属性的变量,
#和他们的价值观。此数据结构是一个列表列表,看起来像
#{{proc1 {{prop1 val1} {prop2 val2}}} {proc2 {{prop1 val1}}}}
#
#参数:
#props_name:inout数据结构,用于存储进程属性值
#return:none
#
proc get_properties {props_name} {
upvar $ props_name道具
设置进程[project get_processes]
设置projName [项目获取名称]
把“从$ projName中读取流程属性”
foreach proc_iter $ processes {
把“$ proc_iter”
设置属性[项目属性-process $ proc_iter]
把“$ properties”; #DEBUG
foreach prop_iter $ properties {
把“$ prop_iter”;#DEBUG
set val [project get $ prop_iter -process $ proc_iter]
把“$ prop_iter $ val”; #DEBUG
lappend prop_list [list $ prop_iter $ val]
}
lappend props [list $ proc_iter $ prop_list]
unset prop_list
}
}
#proc create_text
#
#创建文本文件报告。
#
#参数:
#phoet:输入数据结构,持有进程属性。请参阅get_properties
#作为描述
#fileName:要创建的文件的输入名称。如果它存在,它将被覆盖。
#返回:无。
#
proc create_text {props fileName} {
设置fid [open $ fileName w]
设置name_len 0
设置val_len 0
foreach proc_iter $ props {
foreach prop_iter [lindex $ proc_iter 1] {
设置x [字符串长度[lindex $ prop_iter 0]]
if {$ x> $ name_len} {set name_len $ x}
设置x [字符串长度[lindex $ prop_iter 1]]
if {$ x> $ val_len} {set val_len $ x}
}
}
set majorDivide [string repeat“=”[expr $ name_len + $ val_len + 7]]
set majorDivide [string replace $ majorDivide 0 0“|”]
set majorDivide [string replace $ majorDivide end end“|”]
set minorDivide [string repeat“ – ”[expr $ name_len + $ val_len + 7]]
set minorDivide [string replace $ minorDivide 0 0“|”]
set minorDivide [string replace $ minorDivide end end“|”]
set lineTemplate“|”
追加lineTemplate [string repeat“”$ name_len]
追加lineTemplate“|”
追加lineTemplate [string repeat“”$ val_len]
追加lineTemplate“|”
设置name_start 2
set val_start [expr $ name_len + 5]
放入$ fid“版权所有(c)1995-2007 Xilinx,Inc。保留所有权利。\ n”
把$ fid“[时钟格式[时钟秒] – 格式%c \ n]”
put $ fid“INFO:处理ISE项目的属性值。”
put $ fid“1。<项目名称> _process_properties.txt文件(此文件)”
put $ fid“以人类可读的ASCII文本格式报告流程属性值。”
put $ fid“2.用于电子表格的<project name> _propcess_properties.csv文件”
把$ fid“程序,如MS Excel。\ n”
把$ fid“INPUT FILE:[project get name]”
put $ fid“OUTPUT FILE:$ fileName \ n”
foreach proc_iter $ props {
set proc_name [lindex $ proc_iter 0]
把$ fid $ majorDivide
设置行$ lineTemplate
set line [string replace $ line [expr $ name_len + 3] [expr $ name_len + 3]“”]
set line [string replace $ line $ name_start [expr $ name_start + [string length $ proc_name] – 1] $ proc_name]
把$ fid $ line
把$ fid $ minorDivide
foreach prop_iter [lindex $ proc_iter 1] {
set prop_name [lindex $ prop_iter 0]
set prop_val [lindex $ prop_iter 1]
设置行$ lineTemplate
set line [string replace $ line $ name_start [expr $ name_start + [string length $ prop_name] – 1] $ prop_name]
set line [string replace $ line $ val_start [expr $ val_start + [string length $ prop_val] – 1] $ prop_val]
把$ fid $ line
}
}
把$ fid $ majorDivide
关闭$ fid
将“生成的流程属性报告文件$ fileName”放入
}
#proc create_excel
#
#创建旨在导入电子表格程序的CSV文件。
#
#参数:
#phoet:输入数据结构,持有进程属性。请参阅get_properties
#作为描述
#fileName:要创建的文件的输入名称。如果它存在,它将被覆盖。
#返回:无。
#
proc create_excel {props fileName} {
设置fid [open $ fileName w]
放入$ fid“\#Copyright(c)1995-2007 Xilinx,Inc。保留所有权利。\ n \#”
把$ fid“\#[时钟格式[时钟秒] -format%c \ n \#]”
put $ fid“\#INFO:处理ISE项目的属性值。”
put $ fid“\#1. <项目名称> _process_properties.csv文件(此文件)”
将$ fid“\#报告过程属性值设置为导入到”
将$ fid“\#电子表格程序(如Microsoft Excel)用于查看,打印和排序。\ n \#”
把$ fid“\#INPUT FILE:[project get name]”
put $ fid“\#OUTPUT FILE:$ fileName \ n \#\ n \#”
foreach proc_iter $ props {
set proc_name [lindex $ proc_iter 0]
foreach prop_iter [lindex $ proc_iter 1] {
set prop_name [lindex $ prop_iter 0]
set prop_val [lindex $ prop_iter 1]
put $ fid“$ proc_name,$ prop_name,$ prop_val”
}
}
关闭$ fid
将“生成的流程属性电子表格文件$ fileName”放入
}
proc handleSpecialCharsImpl {x chr} {
upvar $ x str
设置lastmatch 0
while {[set idx [string first $ chr $ str $ lastmatch]]> = 0} {
设置lastmatch [expr {$ idx + 2}]
set str [string replace $ str $ idx $ idx“\\ $ chr”]
}
}
proc handleSpecialChars {x} {
upvar $ x str
handleSpecialCharsImpl str \\
handleSpecialCharsImpl str \ $
}
#proc create_excel
#
#创建旨在导入电子表格程序的CSV文件。
#
#参数:
#phoet:输入数据结构,持有进程属性。请参阅get_properties
#作为描述
#fileName:要创建的文件的输入名称。如果它存在,它将被覆盖。
#返回:无。
#
proc create_clone_script {props fileName} {
设置fid [open $ fileName w]
放入$ fid“\#Copyright(c)1995-2007 Xilinx,Inc。保留所有权利。\ n \#”
把$ fid“\#[时钟格式[时钟秒] -format%c \ n \#]”
put $ fid“\#INFO:克隆ISE项目的流程属性值。”
put $ fid“\#1. <项目名称> _clone_sciprt.tcl文件(此文件)”
put $ fid“\#旨在将一个ISE项目克隆到另一个项目中。”
put $ fid“\#这仅限于实现流程属性。”
put $ fid“\#不支持仿真流程属性。\ n \#”
把$ fid“\#INPUT FILE:[project get name]”
put $ fid“\#OUTPUT FILE:$ fileName \ n \#\ n \#”
foreach proc_iter $ props {
set proc_name [lindex $ proc_iter 0]
foreach prop_iter [lindex $ proc_iter 1] {
set prop_name [lindex $ prop_iter 0]
set prop_val [lindex $ prop_iter 1]
设置lastMatch 0
handleSpecialChars prop_name
handleSpecialChars prop_val
if {$ prop_name ==“name”|| $ prop_name ==“top”} {
put $ fid“puts \ {=====过滤掉项目集合”$ prop_name \“\”$ prop_val \“-process \”$ proc_name \“\}”
put $ fid“#project set \”$ prop_name \“\”$ prop_val \“-process \”$ proc_name \“”
} else {
put $ fid“puts \ {execution project set \”$ prop_name \“\”$ prop_val \“-process \”$ proc_name \“\}”
put $ fid“project set \”$ prop_name \“\”$ prop_val \“-process \”$ proc_name \“”
}
}
}
关闭$ fid
将“生成的流程属性电子表格文件$ fileName”放入
}
#验证项目是否已打开
if [catch {project get name} iseName] {
错误$ iseName
}
设置textFile“[file rootname $ iseName] _process_properties.txt”
set csvFile“[file rootname $ iseName] _process_properties.csv”
set cloneFile“[file rootname $ iseName] _clone_script.tcl”
get_properties属性
create_text $ properties $ textFile
create_excel $ properties $ csvFile
create_clone_script $ properties $ cloneFile
没有回复内容