XML TO TCL Parsing for Xilinx Vivado to generate Architecture

XML TO TCL Parsing for Xilinx Vivado to generate Architecture

我正在使用 Xilinx Vivado 2014.4。我正在做一个项目来为 Vivado 上的自定义架构生成框图。为此,我想使用 XML 文档生成一个 TCL 文件。我已经用尽了互联网上所有可用的资源,但找不到将 XML 文件解析为 TCL 脚本的任何答案。

使用 UARTLITE 外设生成 Microblaze 架构的示例 XML 文件

<?xml version="1.0"?>
<System>
 <MicroBlaze id="0">
    <Parameter>
        <NAME>mb0</NAME>
        <ICACHE_BASEADDR>0xa0000000</ICACHE_BASEADDR>
        <ICACHE_HIGHADDR>0xafffffff</ICACHE_HIGHADDR>
    </Parameter>
    <Bus_Interface>
        <M_AXI_DP>axiinter0</M_AXI_DP>
    </Bus_Interface>
 </MicroBlaze>
 <AXI_Interconnect id="0">
    <Parameter>
        <NAME>axiinter0</NAME>
    </Parameter>
 </AXI_Interconnect>
 <Uartlite id="0">
    <Parameter>
        <NAME>uart0</NAME>
        <BASEADDR>0x40600000</BASEADDR>
        <HIGHADDR>0x4060ffff</HIGHADDR>
    </Parameter>
 <Bus_Interface>
    <S_AXI>axiinter0</S_AXI>
 </Bus_Interface>
 </Uartlite>
 </System>

如何将其转换为 Xilinx Vivado 的工作 TCL 脚本

XML(通常)是一种通用的文档描述语言。 Tcl 是一种编程语言。他们完全不同。

您可以告诉 Tcl 解析 XML 文档。 首选 包是 tDOM:

package require tdom

# Parse the XML document
set f [open "theinputfile.xml"]
set doc [dom parse [read $f]]
close $f

# Get the interesting part
set root [$doc documentElement]

# Iterate over the child elements
foreach elem [$root selectNodes "./*"] {
    puts "I've got a [$elem nodeName]"
}

这将产生如下输出:

I've got a MicroBlaze
I've got a AXI_Interconnect
I've got a Uartlite

如何将其转化为您真正想要的……好吧,您比我更清楚。