脚本学习(1)验证目录自动化生成脚本

1、脚本介绍

旨在一键创建符合IC验证规范的目录结构,避免手动创建目录和文件的重复劳动。

优点:模块级验证目录可一键创建,代码简单易懂,可复用性高。

缺点:子系统或系统级不适用。

2、生成的目录结构

/home/user/projects/ahb2apb/

├── rtl

│ └── dut.sv # 占位文件

├── tb

├── dv_env

│ ├── env

│ ├── agent

│ ├── interface

│ │ └── dut_if.sv # 占位文件

│ ├── sequences

│ └── cfg

├── tests

├── sim

├── scripts

│ └── run_sim.py # 占位文件

└── coverage

3、使用方法

在脚本目录下,使用命令:

python3 create_project.py --name your_project_name --root your_target_path

路径如果在当前目录可不写,默认是在当前目录下。

4、具体场景

加入了一些打印用来辅助观察生成了哪些目录以及是否完成生成。

具体场景如下:

5、脚本源码

python 复制代码
#第一个IC验证脚本
import os
import argparse

def create_project(project_name, root_path="."):
    """
    创建完整的项目目录结构
    :param project_name: 项目名称(如 ahb2apb)
    :param root_path:    项目根路径(默认为当前目录)
    """
    # 定义目录结构(严格按您的要求)
    dir_structure = [
        "rtl",                              # RTL设计代码
        "tb",                               # 测试平台顶层
        os.path.join("dv_env", "env"),       # 验证环境组件
        os.path.join("dv_env", "agent"),     # UVM Agent
        os.path.join("dv_env", "interface"),# 接口定义
        os.path.join("dv_env", "sequences"),# 测试序列
        os.path.join("dv_env", "cfg"),      # 配置类
        "tests",                            # 测试用例
        "sim",                              # 仿真目录
        "scripts",                          # 脚本目录
        "coverage"                          # 覆盖率报告
    ]

    # 项目根目录路径
    project_root = os.path.join(root_path, project_name)

    print(f"🏗️ 正在创建项目目录结构:{project_root}")

    # 遍历创建所有目录
    for dir_path in dir_structure:
        full_path = os.path.join(project_root, dir_path)
        os.makedirs(full_path, exist_ok=True)
        print(f"📂 已创建目录: {full_path}")

    # 创建关键占位文件(可选)
    placeholders = {
        "rtl/dut.sv": f"// {project_name} RTL设计模块占位文件",
        "dv_env/interface/dut_if.sv": f"interface dut_if;\n// {project_name} 接口信号定义\nendinterface",
        "scripts/run_sim.py": f"# {project_name} 自动化仿真脚本"
    }

    for rel_path, content in placeholders.items():
        full_path = os.path.join(project_root, rel_path)
        with open(full_path, "w") as f:
            f.write(content + "\n")
        print(f"📄 已创建占位文件: {full_path}")

    print(f"✅ 项目 '{project_name}' 目录生成完成!")

if __name__ == "__main__":
    # 配置命令行参数
    parser = argparse.ArgumentParser(description="生成IC验证项目目录结构")
    parser.add_argument("--name", required=True, help="项目名称(如 ahb2apb)")
    parser.add_argument("--root", default=".", help="项目根路径(默认当前目录)")
    
    args = parser.parse_args()

    # 调用主函数
    create_project(args.name, args.root)
相关推荐
B站_计算机毕业设计之家几秒前
豆瓣电影推荐系统 | Python Django Echarts构建个性化影视推荐平台 大数据 毕业设计源码 (建议收藏)✅
大数据·python·机器学习·django·毕业设计·echarts·推荐算法
小镇敲码人7 分钟前
探索华为CANN框架中的ACL仓库
c++·python·华为·acl·cann
KIKIiiiiiiii7 分钟前
微信个人号API二次开发中的解决经验
java·人工智能·python·微信
ZH15455891319 分钟前
Flutter for OpenHarmony Python学习助手实战:Web开发框架应用的实现
python·学习·flutter
Ekehlaft11 分钟前
这款国产 AI,让 Python 小白也能玩转编程
开发语言·人工智能·python·ai·aipy
开源技术16 分钟前
Python GeoPandas基础知识:地图、投影和空间连接
开发语言·ide·python
hedley(●'◡'●)19 分钟前
基于cesium和vue的大疆司空模仿程序
前端·javascript·vue.js·python·typescript·无人机
Cult Of19 分钟前
Alicea Wind的个人网站开发日志(2)
开发语言·python·vue
啊阿狸不会拉杆25 分钟前
《机器学习导论》第 5 章-多元方法
人工智能·python·算法·机器学习·numpy·matplotlib·多元方法
wangsir.42 分钟前
测试之自动化测试常用函数
python·测试