模块概览
DAVIS API 主要包含以下模块:
| 模块 | 文件 | 用途 | |------|------|------| | connect | connect.py | 数据库连接 | | info | *.py | 信息管理 | | datatrans | *.py | 数据传输 | | base | basedefs.py | 基础定义 |
connect 模块
connect 类
数据库连接管理模块,提供所有数据库操作的入口。
方法列表
from connect import connect
# 获取所有 Block
blocks = connect.all_blocks()
# 获取 Block 映射
block_pair_dic = connect.block_user_dir_dic_optimized_sorted()
# 获取最新标记的运行
mark_best_run = connect.get_mark_best_run_dic()
常用 API
# 获取芯片层次结构
chip_hier = connect.gen_block_structure(mode=1)
# 搜索最近的运行记录
search_latest_date = connect.search_latest_date
info 模块
Prjtree6 - 项目树
from info import Prjtree6
# 创建项目树窗口
tree = Prjtree6()
tree.display()
Branch4 - 分支管理
from info import Branch4
# 创建分支
Branch4.create_branch(name, base)
# 合并分支
Branch4.merge_branch(source, target)
# 查看分支状态
Branch4.status(branch_name)
Bboard - 讨论板
from info import Bboard
# 创建话题
Bboard.create_topic(title, content)
# 添加回复
Bboard.reply(topic_id, content)
# 获取话题列表
topics = Bboard.get_topics()
Datatrans6 - 数据传输
from info import Datatrans6
# 创建传输任务
task = Datatrans6.create_task(
source=src_block,
target=dst_block,
data_type="timing"
)
DataRelease - 数据发布
from info import DataRelease
# 发布数据
DataRelease.publish(
block_name=block,
release_type="PV" # PV/PT/PWR
)
datatrans 模块
Chat - 讨论功能
from datatrans import Chat
# 发送消息
Chat.send_message(
user=username,
message=content,
channel="general"
)
# 获取历史消息
history = Chat.get_history(channel="general", limit=100)
BestSum - 数据汇总
from datatrans import BestSum
# 生成汇总报告
summary = BestSum.generate(
block_name="top",
metrics=["wns", "tns", "area", "power"]
)
BestSum2 - 扩展汇总
from datatrans import BestSum2
# 多维度汇总
summary = BestSum2.generate_multi_dim(
blocks=[block1, block2],
dimensions=["timing", "power", "area"]
)
base 模块
basedefs - 基础定义
from base import basedefs
# YAML 转字典
config = basedefs.yaml2dic("config.yaml")
# 字典转 YAML
basedefs.dic2yaml(config, "output.yaml")
# 获取最新搜索日期
latest_date = basedefs.get_search_latest_date(days=30)
数据模型
Block 结构
{
"name": "block_name",
"path": "/path/to/block",
"level": 0, # 层级
"parent": None,
"children": ["child1", "child2"]
}
运行记录
{
"run_id": "run_001",
"block_name": "top",
"date": "2024-06-25",
"metrics": {
"wns": -0.05,
"tns": -2.3,
"area": 1000,
"power": 50
},
"status": "completed"
}
事件钩子
DAVIS 支持在特定操作时触发自定义事件:
# 事件类型
DAVIS_EVENTS = [
"on_project_open",
"on_data_transfer",
"on_release_publish",
"on_branch_create",
"on_chat_message"
]
# 注册钩子
def my_handler(event_data):
print(f"Event triggered: {event_data}")
DAVIS.register_hook("on_data_transfer", my_handler)
错误码
| 错误码 | 描述 | |--------|------| | 1001 | 数据库连接失败 | | 1002 | 权限不足 | | 2001 | Block 不存在 | | 2002 | 数据版本冲突 | | 3001 | 文件传输失败 | | 3002 | 存储空间不足 |
示例代码
完整数据发布流程
from connect import connect
from info import DataRelease
# 1. 获取目标 Block
blocks = connect.all_blocks()
target = "top_block"
# 2. 准备数据
data_path = f"/path/to/{target}/output"
# 3. 发布数据
result = DataRelease.publish(
block_name=target,
release_type="PV",
data_path=data_path,
notes="Weekly release"
)
# 4. 验证结果
if result["status"] == "success":
print(f"Published to {result['path']}")
else:
print(f"Error: {result['error']}")
更新日志
v1.6.0 (2025-11-30)
- PPTG 模块重构,提升生成速度
- 新增多维度数据汇总功能
- 优化数据库查询性能
v1.5.8 (2025-08-20)
- 运行效率优化
- 新增数据版本管理
- 修复若干 Bug
v1.1 (2024-08-20)
- 新增分支管理功能
- 新增讨论板功能