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]
相关推荐
Nobody331 小时前
Verilog always语句详解:从组合逻辑到时序逻辑
fpga开发
李嘉图Ricado3 小时前
FPGA 时序约束与分析
fpga开发
潜创微科技--高清音视频芯片方案开发4 小时前
2026年切换器方案服务商市场格局分析与主流品牌选型指南
音视频·硬件工程
白又白、6 小时前
时序优化和上板调试小结
fpga开发
Z22ZHaoGGGG8 小时前
verilog实现采样电流有效值的计算
fpga开发
fei_sun8 小时前
牛客Verilog刷题篇
fpga开发
Pixlout10 小时前
《7元接口体系》v1.0
网络·算法·硬件工程
笨笨饿10 小时前
#55_NE595脉冲电路
stm32·单片机·硬件工程
my_daling11 小时前
DSMC通信协议理解,以及如何在FPGA上实现DSMC从设备(1)
学习·fpga开发
fei_sun1 天前
FPGA&数字前端
fpga开发