VivadoAndTcl: namespace

命名空间,其实际是一系列变量和过程的合集,从而让TCL 解释器能够对这些变量和过程进行分类管理。

复制代码
# 声明如下
namespace eval ns0 {
    proc print {} {
        puts "Tcl Proc 0"    
    }
    proc add {a b} {
        return [expr {$a + $b}]    
    }
}

namespace eval ns1 {
    proc print {} {
        puts "Tcl Proc1"    
    }
    proc sub {a b} {
        return [expr {$a - $b}]    
    }
}
# 调用如下
# 该语句调用了ns0里的print过程
ns0::print
# 该语句进行了4+5的计算
ns0:add 4 5

如果一个命名空间里的不同过程之间是有关联的,需要用到同一个变量时,就可以创建命名空间变量。

复制代码
namespace eval counter {
    variable cnt 0
    proc AddOne {} {
        variable cnt
        return [incr cnt]    
    }
    
    proc SubOne {} {
        variable cnt
        return [incr cnt -1]    
    }
    
    proc reset {} {
        variable cnt
        set cnt 0    
    }
}
# 调用如下
# 该语句调用了counter里的加一过程
[counter::AddOne]
# 该语句进行了counter里的减一过程
[counter::SubOne]
# 该语句进行了counter里的复位过程
[counter::reset]
相关推荐
雨洛lhw3 小时前
FPGA JTAG接口设计全解析
fpga开发·jtag
裕工实验室7 小时前
高速射频 PCB 信号完整性优化:从电源回路到地平面设计全解析
硬件工程·pcb工艺·材料工程
minglie112 小时前
iverilog 配合 Makefile 搭建 Verilog 仿真工程
fpga开发
芒果树技术12 小时前
MangoTree案例分享:基于AtomRIO FPGA平台,客户实现自适应主动减振
测试工具·fpga开发·模块测试
雨洛lhw13 小时前
按键电路设计的细节
fpga开发
GesLuck15 小时前
伺服电机(200 smart & )调试文档
开发语言·驱动开发·硬件工程
minglie117 小时前
vio_uart的浏览器版上位机
fpga开发
weixin_4787963418 小时前
kinghelm品牌的产品
人工智能·硬件工程·射频工程
不吃鱼的羊19 小时前
达芬奇PWM模块
单片机·嵌入式硬件·fpga开发
FPGA小迷弟20 小时前
京微齐力FPGA联合modelsim仿真操作
fpga开发·ic·verilog·fpga·仿真