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]
相关推荐
SmartRadio3 小时前
CH584M vs nRF52840 vs 主流BLE SoC全面对比
单片机·嵌入式硬件·mcu·物联网·开源·硬件工程
xgbing5 小时前
在ubuntu中安装modelsim
fpga开发·modelsim
复业思维2024010810 小时前
Altium Designer (24.2.2)中更改库以及保持器件参数不变
笔记·学习·硬件工程
碎碎思10 小时前
SURF:SLAC 开源 FPGA 与 ASIC 通用 RTL 框架详解
fpga开发
FPGA小迷弟12 小时前
FPGA在工业控制行业的应用,行业研究文章
fpga开发·制造·数据采集·fpga·工业控制
洋洋Young13 小时前
【Xilinx FPGA】CLB SliceL 与 SliceM
fpga开发·xilinx·clb
集芯微电科技有限公司13 小时前
PC1001超高频率(50HMZ)单通单低侧GaN FET驱动器支持正负相位配置
数据结构·人工智能·单片机·嵌入式硬件·神经网络·生成对抗网络·fpga开发
stars-he15 小时前
FPGA学习笔记(8)以太网UDP数据报文发送电路设计(二)
网络·笔记·学习·fpga开发
just a little bit!15 小时前
AD表格填充封装
硬件工程
FPGA_小田老师16 小时前
FPGA例程(3):按键检测实验
fpga开发·verilog·vivado·led灯·按键测试