TCL

时间:2015-12-08 10:32:04

标签: tcl synopsys-vcs

以下是一些TCL命令的结果。

get_props -type assert
{"a", "b", "c", "d"}

现在所有这4个对象都具有与之关联的特定属性。但我对"启用"感兴趣仅属性。

get_attribute [get_props a] enabled
true

get_attribute [get_props b] enabled
false

get_attribute [get_props c] enabled
true

get_attribute [get_props d] enabled
false

现在我想只转换"启用"这些4"断言"中的对象(enabled = true)将对象输入" cover"类型对象(所以只有" a"&" c"应该被转换)和转换"断言"进入"封面",命令是fvcover。

我尝试过以下命令:

fvcover [get_props -type assert]

现在的问题是,这个fvcover命令会转换所有4"断言"将对象输入" cover"键入对象,而不仅仅是" a" &安培; " C"

所以我想,我需要结合使用get_props和amp; get_attributes命令,但我不知道该怎么做。

那么如何解决这个问题呢?

注意: - " a"," b"," c"," d"只是为了解释。实际上,get_props命令可以返回任意数量的任何名称的结果。但是在那个列表中,我需要转换,只转换那些"启用"属性为真。

1 个答案:

答案 0 :(得分:0)

列表不是Tcl格式。这里有一些测试代码可用于将格式转换为Tcl。

#### PROCS FOR TESTING ####
proc get_props {type {assert no}} {
    if {$type == "-type" && $assert == "assert"} {
        return {"a", "b", "c", "d"}
    }
    if {$type == "a" || $type == "c"} {
        return [list enabled true]
    } elseif {$type == "b" || $type == "d"} {
        return [list enabled false]
    }
    return [list NOT FOUND]
}

proc get_attribute {a k} {
    foreach {key value} $a {
        if {$key == $k} {
            return $value
        }
    }
    return NOT_FOUND
}


# get props. props is in a list format that is not native tcl list
set props [get_props -type assert]

# convert props to tcl list
set props_list [string map {, ""} $props]

# make a list to catch enabled props
set enabled_props [list]

# add enabled props to new list
foreach {prop_name} $props_list {
    if {[get_attribute [get_props $prop_name] enabled] == "true"} {
        lappend enabled_props "\"$prop_name\""
    }
}
# convert enabled_props to your format
set enabled_props "{[join $enabled_props ", "]}"

# run your program on $enabled_props

puts $enabled_props