第二章 开发环境搭建

做RTL代码检查工具,第一步就是把开发环境搭好。这活儿看着简单,但坑不少。我见过太多人卡在环境配置上,一卡就是半天。今天咱们就把这事儿捋清楚。

2.1 Python环境配置

Python是我们的主力语言。为什么选它?说白了,就是生态好。做代码检查需要的正则表达式、文件解析、语法树分析,Python都有现成的库。

版本选择

我个人习惯用Python 3.8以上版本。3.6以下就别考虑了,很多新特性不支持。我建议直接上3.10或3.11,性能提升明显。

安装步骤:

  1. 去python.org下载对应版本
  2. 安装时勾选「Add Python to PATH」
  3. 打开终端验证: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

我的工作流:

  1. 每天开始先git pull拉取最新代码
  2. 每个功能点开一个分支:git checkout -b feat/add-rule-101
  3. 完成一个子功能就commit一次,注释写清楚
  4. 合并前跑一遍测试: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」。

开发环境搭建知识体系 开发环境 Python 3.8+ Tcl/Tk 8.6+ Git 版本控制 VS Code 插件 虚拟环境 pip依赖管理 tkinter调用 EDA工具集成 分支管理 .gitignore 5个必装插件 格式化配置 环境验证 → test_env.py

环境搭好了,接下来就是写代码了。记住:环境配置不是一次性的活儿。换电脑、换项目、升级依赖,都得重新来一遍。把配置步骤写成文档,下次直接照着做,省心。

专注资料整理