DVC Central Native Command 软件语法规格书
一、简介
本规格文件定义 DVC Native Command(原生命令)集的功能与使用方式,涵盖项目、阶段、模块、版本、容器等对象在设计版本控制(Design Version Control, DVC)系统中的创建、签出、签入、更新、删除与路径操作等任务。
本文件规范 dvc_ 开头的一系列命令之调用语法。该类命令通常位于 bin/ 目录,其本质为链接至 csh/ 中的 C-shell 脚本。命令集用于在 DVC 系统中实现设计数据的建置、签入、签出、删除、链接与路径设置等,支持五层设计结构。
二、DVC 安装与环境设置
2.1 一次性安装(Install Once)
cd /tools/icdop/
git clone https://github.com/icdop/dvc.git
cd $HOME
/tools/icdop/dvc/setup.cshrc
此步骤将建立 $HOME/CSHRC.dvc,用于后续 source DVC 环境。
2.2 使用环境初始化(每次登录)
source $HOME/CSHRC.dvc
此文件设置:
DVC_HOME=/tools/icdop/dvcPATH=$DVC_HOME/bin:$PATH
三、项目结构说明
$DESIGN_PROJT/
└── $DESIGN_PHASE/
└── $DESIGN_BLOCK/
└── $DESIGN_STAGE/
└── $DESIGN_VERSN/
| 层级 | 命名示例 | 定义来源 |
|---|---|---|
| Phase | P1-trial, P2-final | PM |
| Block | chip, cpu, ddr | Design Lead |
| Stage | 000-DATA, 400-APR | Tool Flow |
| Version | 170910-apr | Designer |
建议 Version 命名格式为 <日期>-<标签>。
四、SVN 文件服务器初始化(CAD/IT)
编辑 /projects/<proj_id>/flow/CSHRC.dvc:
setenv DVC_HOME /tools/icdop/dvc
setenv PATH $DVC_HOME/bin:$PATH
setenv SVN_ROOT /projects/<proj_id>/svn
setenv SVN_MODE svn
setenv SVN_HOST svn_server
setenv SVN_PORT 13301
初始化方式:
- File 模式:
dvc_init_server --root $SVN_ROOT --mode file
- SVN 模式:
dvc_init_server --root $SVN_ROOT --mode svn --host $SVN_HOST --port $SVN_PORT
五、DVC 原生命令语法分类
所有 DVC 路径遵循以下格式:
<project>/<phase>/<block>/<stage>/<version>[/container]
必要层级为前五层,容器为可选子目录。
- Project:项目代码,顶层目录。
- Phase:项目阶段,如 P1-trial、P2-stable 等。
- Block:功能模块,如 cpu、chip。
- Stage:设计阶段,如 000-DATA、200-LOGIC、400-APR。
- Version:具体版本,如 20240615_v1。
- Container:容器目录(选用),用于储存多个流程步骤(如 place, route)。
六、命令语法分类
6.1 设计对象建构命令(Create)
dvc_create_project <project>
dvc_create_phase <phase>
dvc_create_block <block>
dvc_create_stage <stage>
dvc_create_version <version>
dvc_create_container <container>
dvc_create_design <phase>/<block>/<stage>/<version>
dvc_create_folder <path>
| 命令 | 功能说明 |
|---|---|
| dvc_create_project | 创建项目 |
| dvc_create_phase | 创建阶段 |
| dvc_create_block | 创建模块 |
| dvc_create_stage | 创建设计阶段 |
| dvc_create_version | 创建设计版本 |
| dvc_create_container | 创建设计容器(子流程) |
| dvc_create_folder | 创建文件夹 |
6.2 签出命令(Checkout)
dvc_checkout_project <project> [--recursive]
dvc_checkout_phase <phase> [--recursive]
dvc_checkout_block <block> [--recursive]
dvc_checkout_stage <stage> [--recursive]
dvc_checkout_version <version> [--recursive]
dvc_checkout_design <phase>/<block>/<stage>/<version>
dvc_checkout_container <container>
dvc_checkout_folder <path>
dvc_checkout_dvc_path <path>
| 命令 | 功能说明 |
|---|---|
| dvc_checkout_project | 签出整个项目数据结构 |
| dvc_checkout_phase | 签出阶段下所有模块数据 |
| dvc_checkout_block | 签出模块下所有阶段 |
| dvc_checkout_stage | 签出阶段下所有版本 |
| dvc_checkout_version | 签出版本下所有容器 |
| dvc_checkout_design | 签出完整设计资料 |
| dvc_checkout_container | 签出容器数据 |
| dvc_checkout_folder | 签出任意指定目录结构 |
| dvc_checkout_dvc_path | 依路径签出任意节点数据 |
6.3 签入命令(Checkin)
dvc_checkin_project <project>
dvc_checkin_phase <phase>
dvc_checkin_block <block>
dvc_checkin_stage <stage>
dvc_checkin_version <version>
dvc_checkin_design <phase>/<block>/<stage>/<version>
dvc_checkin_container <container>
dvc_checkin_folder <path>
dvc_checkin_dvc_path <path>
| 命令 | 功能说明 |
|---|---|
| dvc_checkin_project | 签入项目数据 |
| dvc_checkin_phase | 签入阶段资料 |
| dvc_checkin_block | 签入模块资料 |
| dvc_checkin_stage | 签入阶段资料 |
| dvc_checkin_version | 签入版本资料 |
| dvc_checkin_design | 签入整个设计版本 |
| dvc_checkin_container | 签入容器内容 |
| dvc_checkin_folder | 签入目录(一般用于 GUI 工具) |
| dvc_checkin_dvc_path | 签入指定路径 |
6.4 对象管理命令(Object Management)
dvc_copy_object <src_path> <dst_name>
dvc_link_object <src_path> <link_name>
dvc_rename_object <old_name> <new_name>
dvc_delete_object <object_name>
| 命令 | 功能说明 |
|---|---|
| dvc_copy_object | 复制对象(如 netlist) |
| dvc_link_object | 链接对象至当前目录 |
| dvc_rename_object | 重命名对象 |
| dvc_delete_object | 删除对象(通用) |
6.5 删除命令(Remove)
dvc_remove_project <project>
dvc_remove_phase <phase>
dvc_remove_block <block>
dvc_remove_stage <stage>
dvc_remove_version <version>
dvc_remove_design <phase>/<block>/<stage>/<version>
dvc_remove_container <container>
dvc_remove_folder <folder>
| 命令 | 功能说明 |
|---|---|
| dvc_remove_block | 删除模块 |
| dvc_remove_container | 删除容器 |
| dvc_remove_design | 删除设计 |
| dvc_remove_folder | 删除文件夹 |
| dvc_remove_phase | 删除阶段 |
| dvc_remove_project | 删除项目 |
| dvc_remove_stage | 删除阶段 |
| dvc_remove_version | 删除版本 |
6.6 环境与路径管理命令(Env/Path)
dvc_set_env [--local|--global|--server] <var> <value>
dvc_get_env [--info|--csv|--tcl] [--all | <var>...]
dvc_set_path <path>
dvc_set_project <project>
dvc_set_folder <folder>
dvc_set_server <server>
| 命令 | 功能说明 |
|---|---|
| dvc_set_server | 设置 SVN 主机配置 |
| dvc_set_env | 设置 DVC 全局或本地变量 |
| dvc_get_env | 查询环境变量状态 |
| dvc_set_path | 设置当前路径标志 |
| dvc_set_project | 设置当前项目 |
| dvc_set_folder | 设置当前工作目录 |
6.7 容器更新命令
dvc_update_container <container>
| 命令 | 功能说明 |
|---|---|
| dvc_update_container | 更新容器状态或内容 |
七、设置
- 所有
dvc_*.csh脚本文件位于csh/目录中。 - 所有
bin/命令为其符号链接,用户直接使用bin中命令即可。 - 所有设计操作需在已 checkout 的路径下执行,若无路径设定,脚本会读取当前工作目录环境变量。
八、脚本行为说明
- 所有路径默认相对
$DVC_WORKING。 - 环境变量通过
.dop/env/维护,可跨 session 保持一致。 - 所有对象操作(create/checkin/checkout)皆会更新
last链接指向最新版本。
九、错误处理说明
| 情境 | 处理方式 |
|---|---|
| 找不到对象 | 提示错误信息并中断 |
| 环境变量未设定 | 要求先执行 dvc_set_env |
| 版本路径不完整 | 提示必须为 4 层以上结构 |
| 权限问题 | 仅允许 owner 或项目账号操作 |
十、参考范例
dvc_create_design P1-stable/cpu/400-APR/20250620_test
dvc_checkout_design
dvc_copy_object ./netlist.v block.v
dvc_checkin_design
