返回文章列表
davisDAVISAPI开发者

DAVIS API 参考文档

2024-06-2512 min

模块概览

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)

  • 新增分支管理功能
  • 新增讨论板功能