Tcl  –  Xilinx Tcl shell中是否有一种方法可以列出当前项目的所有可用属性?-Altera-Intel社区-FPGA CPLD-ChipDebug

Tcl – Xilinx Tcl shell中是否有一种方法可以列出当前项目的所有可用属性?

问题描述

有没有办法生成可以为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

请登录后发表评论

    没有回复内容