第二章 开发环境搭建
做RTL代码检查工具,第一步就是把开发环境搭好。这活儿看着简单,但坑不少。我见过太多人卡在环境配置上,一卡就是半天。今天咱们就把这事儿捋清楚。
2.1 Python环境配置
Python是我们的主力语言。为什么选它?说白了,就是生态好。做代码检查需要的正则表达式、文件解析、语法树分析,Python都有现成的库。
版本选择
我个人习惯用Python 3.8以上版本。3.6以下就别考虑了,很多新特性不支持。我建议直接上3.10或3.11,性能提升明显。
安装步骤:
- 去python.org下载对应版本
- 安装时勾选「Add Python to PATH」
- 打开终端验证:
python --version
虚拟环境
这个必须用。每个项目独立环境,避免包冲突。我在项目中吃过这个亏——两个项目依赖不同版本的numpy,折腾了一下午。
# 创建虚拟环境
python -m venv rtl_check_env
# 激活(Windows)
rtl_check_env\Scripts\activate
# 激活(Linux/Mac)
source rtl_check_env/bin/activate
# 安装依赖
pip install pyparsing # 语法解析
pip install pytest # 单元测试
pip install black # 代码格式化
小技巧:把常用依赖写进requirements.txt,下次直接pip install -r requirements.txt搞定。
2.2 Tcl/Tk环境配置
你可能要问:做RTL检查工具,为啥还要配Tcl/Tk?
嗯,这里要注意。很多EDA工具(比如Vivado、Quartus)的脚本接口就是Tcl。你的检查工具如果能直接调用Tcl命令,那集成起来就方便多了。
安装Tcl/Tk
| 系统 | 安装方式 | 验证命令 |
|---|---|---|
| Windows | 下载ActiveTcl安装包 | tclsh |
| Linux | sudo apt install tcl tk |
echo 'puts "hello"' | tclsh |
| Mac | brew install tcl-tk |
tclsh |
Python调用Tcl
用Python的tkinter库就能调用Tcl解释器。我曾经用这个方式,把Tcl的时序分析命令封装成了Python接口,效果不错。
import tkinter as tk
# 创建Tcl解释器
root = tk.Tk()
tcl = root.tk
# 执行Tcl命令
tcl.eval('set design_name "top_module"')
result = tcl.eval('puts $design_name')
print(result) # 输出: top_module
避坑指南:我曾经在Windows上装了两个版本的Tcl,结果Python死活找不到正确的解释器。解决方案:把需要的Tcl路径加到系统PATH的最前面。
2.3 Git版本控制
做开发不用Git?那跟裸奔没区别。RTL代码检查工具迭代快,今天加个规则,明天修个bug,没有版本控制会乱成一锅粥。
基本配置
# 设置用户信息
git config --global user.name "Your Name"
git config --global user.email "your@email.com"
# 推荐配置
git config --global core.autocrlf true # 换行符处理
git config --global alias.st status # 别名,少打字
.gitignore怎么写
这个文件很重要。我见过有人把虚拟环境目录也提交了,结果仓库体积暴涨。
# Python
__pycache__/
*.pyc
*.pyo
*.egg-info/
# 虚拟环境
venv/
rtl_check_env/
# IDE配置
.vscode/
.idea/
# 临时文件
*.log
*.tmp
我的工作流:
- 每天开始先
git pull拉取最新代码 - 每个功能点开一个分支:
git checkout -b feat/add-rule-101 - 完成一个子功能就commit一次,注释写清楚
- 合并前跑一遍测试:
pytest
2.4 VS Code插件推荐
编辑器我推荐VS Code。免费、轻量、插件多。下面这几个插件,是我做RTL检查工具开发时必装的。
| 插件名 | 用途 | 为什么推荐 |
|---|---|---|
| Python | Python语言支持 | 代码补全、调试、格式化一条龙 |
| Verilog-HDL/SystemVerilog | RTL语法高亮 | 看Verilog代码不费眼 |
| GitLens | Git增强 | 每行代码谁写的、什么时候写的,一目了然 |
| Error Lens | 错误提示增强 | 错误信息直接显示在代码行尾,不用看底部面板 |
| Todo Tree | TODO管理 | 代码里的TODO、FIXME标记全部汇总显示 |
配置建议
打开VS Code的设置(Ctrl+,),加入这些配置:
{
"python.formatting.provider": "black",
"python.linting.enabled": true,
"python.linting.pylintEnabled": true,
"editor.formatOnSave": true,
"files.exclude": {
"**/__pycache__": true,
"**/*.pyc": true
}
}
个人经验:把editor.formatOnSave打开,保存代码时自动格式化。这样团队代码风格统一,code review时少了很多「这里少个空格」的废话。
2.5 环境验证
配置完了,跑个简单的测试,看看环境通不通。
# test_env.py
import sys
import tkinter as tk
import subprocess
def check_python():
print(f"Python版本: {sys.version}")
def check_tcl():
root = tk.Tk()
tcl_version = root.tk.eval('info patchlevel')
print(f"Tcl版本: {tcl_version}")
root.destroy()
def check_git():
result = subprocess.run(['git', '--version'], capture_output=True, text=True)
print(f"Git版本: {result.stdout.strip()}")
if __name__ == "__main__":
check_python()
check_tcl()
check_git()
print("环境检查完成!")
运行python test_env.py,如果三个版本信息都正常显示,恭喜你,环境搭好了。
注意:如果Tcl那步报错,多半是tkinter没装好。Linux下需要sudo apt install python3-tk。Windows下重装Python时记得勾选「tcl/tk support」。
环境搭好了,接下来就是写代码了。记住:环境配置不是一次性的活儿。换电脑、换项目、升级依赖,都得重新来一遍。把配置步骤写成文档,下次直接照着做,省心。