AI 加速器 RTL 数字系统设计深度解析:从 MAC 阵列 Verilog 实现到时序收敛与时钟功耗的芯片落地全链路

AI 加速器 RTL 数字系统设计深度解析:从 MAC 阵列 Verilog 实现到时序收敛与时钟功耗的芯片落地全链路

  • 核心痛点:架构师纸面上的 1024 个 MAC、92 TOPS 脉动阵列,落到 RTL 时一个乘加链关键路径没切流水、一处跨时钟域没打两拍同步器、一个时钟门控带毛刺,就会让流片回来的芯片降频一半甚至变成随机死机的硅垃圾------AI 算力的最后一公里是数字电路时序
  • 适配人群:AI 芯片 RTL/数字设计工程师、体系结构与微架构方向研究生、想从 CUDA/Triton 层下沉到电路实现层的基础设施工程师、开源芯片爱好者
  • 收获能力:掌握 AI 加速器 PE 单元与脉动阵列的 Verilog 级实现、时序收敛(setup/hold 约束、关键路径切分、retiming)、CDC 跨时钟域设计、时钟门控与动态功耗优化,以及从 RTL 到 GDS 的商用 EDA 与 OpenLane/SKY130 全开源流片落地能力

技术背景与演进逻辑

  • 算力抽象栈的最底层断层:Triton/CUDA 工程师眼中的 Tensor Core 是一条 mma 指令,编译器工程师眼中是一段 PTX,而 RTL 工程师眼中是一张乘法器阵列网表------组合逻辑必须在单个时钟周期内通过建立时间检查,否则整个阵列频率塌方
  • 关键认知:峰值算力公式只关心两件事,MAC 数量和时钟频率,前者由架构决定,后者由数字电路时序收敛决定,两者共同决定芯片能不能兑现规格书上的数字
  • NVDLA 的工业级参照价值:NVIDIA 2017 年开源的深度学习加速器,RTL、C 仿真模型(Cmodel)、testbench 全部开放,是唯一可以逐行阅读的商用质量 AI 加速器代码库
  • Gemmini 的学术参照价值:UC Berkeley 的脉动阵列生成器,用 Chisel 参数化生成 PE 阵列,可配置 weight-stationary/output-stationary 双数据流,并与 RISC-V Rocket 核组成完整 SoC
  • 开源流片通道:SkyWater SKY130 开源 PDK 加上 Efabless MPW/chipIgnite 拼车,把一次 130nm 流片成本打到数千美元级,RTL 技能第一次可以低门槛验证到真实硅片
  • 演进时间线:
text 复制代码
AI 加速器 RTL 演进时间线
├── 2016 -> Google TPU v1 论文: 28nm、700MHz、256x256 INT8 脉动阵列、92 TOPS
├── 2017 -> NVIDIA NVDLA 开源: 工业 RTL + Cmodel + 验证环境免费开放
├── 2019 -> Berkeley Gemmini: Chisel 脉动阵列生成器,参数化 dataflow
├── 2020 -> SKY130 开源 PDK + Efabless MPW: 免费低价流片通道打通
├── 2021 -> OpenLane 发布: yosys + OpenROAD 组成全开源 ASIC 流程
├── 2023 -> Chipyard 生态成熟: Gemmini 一键生成 RISC-V 加速器 SoC
└── 2024-2025 -> 开源 EDA 链进入教学与初创流片验证阶段
  • 总结:AI 芯片竞争从架构创新下沉到实现质量,RTL 时序/功耗工程能力决定同一架构能跑出多少有效 TOPS

核心原理深度解析

AI 加速器的 RTL 微架构骨架

  • 以 NVDLA 卷积核心为例的流水线分解(这是几乎所有 CNN 推理加速器的通用骨架):
text 复制代码
NVDLA 卷积核心流水线(RTL 视角)
├── CDMA 卷积 DMA
│   ├── [职责]: 从 DBBIF/SRAMIF 总线搬运 weight 与 feature 进 CBUF
│   └── [机制]: 独立寄存器组 + ping-pong 双缓冲配置
├── CBUF 卷积缓冲 SRAM
│   ├── [结构]: bank 数 x bank 容量可配置(4x8KB 小配置到 16x32KB 大配置)
│   └── [带宽]: 读端口宽度 = data_size x Atomic-C(INT8、Atomic-C=16 即 128bit)
├── CSC 卷积流控制器
│   ├── [职责]: 从 CBUF 取数、展宽成 MAC 阵列的输入流
│   └── [机制]: 双缓冲配置寄存器 + 激进预取
├── CMAC 乘累加阵列
│   ├── [规模]: Atomic-C x Atomic-K 个 MAC(标准 16x64 = 1024 个 INT8 乘法器)
│   └── [精度]: INT8 全并行;INT16/FP16 并行度减半复用同一阵列
├── CACC 累加器
│   ├── [结构]: 32 元素累加阵列 + 移位对齐 + 精度裁剪
│   └── [机制]: 部分和链式累加,结束后量化输出到后处理
└── SDP/PDP/CDP 后处理引擎
    ├── [SDP]: 激活函数、缩放、bias 逐元素流水
    ├── [PDP]: 池化平面操作
    ├── [CDP]: 跨通道局部响应归一化
    └── [Fused 模式]: 块间小 FIFO 直连,绕开访存往返
  • 洞察:CMAC 只是流水线中间一级------RTL 工程的真正难点是让 CBUF 带宽、CSC 发射速率、CMAC 吞吐、CACC 累加深度四级流水同频无气泡,任何一级欠配置都会让 MAC 阵列饿死

PE 处理单元:一切 AI 算力的最小电路单元

  • PE(Processing Element)内部只有三样东西:被乘数寄存器、乘法器、累加寄存器,但它的关键路径决定整个阵列的频率上限
  • 峰值算力第一公式:
    m a t h r m T O P S m a t h r m p e a k = 2 × N m a t h r m M A C × f m a t h r m c l k mathrm{TOPS}{mathrm{peak}} = 2 × N{mathrm{MAC}} × f_{mathrm{clk}} mathrmTOPSmathrmpeak=2×NmathrmMAC×fmathrmclk
  • TPU v1 代入验证:256 x 256 = 65536 个 INT8 MAC,主频 700MHz,2 x 65536 x 0.7GHz = 91.75 TOPS------与论文披露的 92 TOPS 吻合
  • 单周期乘加链的时序问题:8x8 或 16x16 乘法器(部分积生成 + Wallace 压缩树 + 进位传播加法)串联一个 32bit 累加加法器,28nm 工艺下这条组合逻辑约 1.5-2ns,直接封顶频率在 500-650MHz;要上 1GHz 以上必须切两级流水
  • 时序收敛核心公式:
    f m a x = d f r a c 1 t c q + t m a t h r m l o g i c + t m a t h r m w i r e + t s u f_{max} = dfrac{1}{t_{cq} + t_{mathrm{logic}} + t_{mathrm{wire}} + t_{su}} fmax=dfrac1tcq+tmathrmlogic+tmathrmwire+tsu
  • 洞察:式中的 t_wire(布线延迟)在 16x16 小阵列里可忽略,在 64x64 以上阵列里会反超逻辑延迟------这是阵列规模与频率互相打架的物理根源

脉动阵列 RTL:数据流即连线

  • 脉动阵列的本质是把"访存数据"变成"流动数据":每个 PE 只和左右上下邻居说话,全局总线下沉为局部寄存器到寄存器的短连线
  • 两种主流数据流的 RTL 差异:
text 复制代码
Weight-Stationary(TPU/NVDLA 主线)vs Output-Stationary(Gemmini 可选)
├── Weight-Stationary:
│   ├── [权重]: 预载入 PE 并锁定整个层计算周期
│   ├── [激活]: 沿列方向逐拍流入,每拍推进一格
│   ├── [部分和]: 沿行方向逐拍流动累加
│   └── [RTL 代价]: PE 内需 weight 寄存器 + 累加寄存器两组状态
├── Output-Stationary:
│   ├── [部分和]: 固定在 PE 内累加,不动
│   ├── [权重/激活]: 两个正交流向穿过阵列
│   └── [RTL 代价]: PE 内只需一个累加寄存器,但阵列边界发射更复杂
└── [选型规律]: 权重复用高(卷积)选 WS,输出通道多(GEMM)选 OS,
    Gemmini 提供 dual-dataflow 参数让同一硬件跑两种模式
  • NVDLA 的 MAC 利用率教训:Atomic-C=16、Atomic-K=64 的 1024 MAC 阵列遇到输入通道 8、输出核 16 的层,只有 128 个 MAC 有效,利用率 1/8------RTL 规模固定后,层形状失配直接把峰值打骨折,NVDLA 用 image-input 通道扩展把第一层利用率拉回约 50%

时序收敛:从 RTL 到频率签核

  • 建立时间约束(决定最高频率):数据必须在时钟沿前 t_su 之前稳定,即整条寄存器到寄存器路径的 t_cq + t_logic + t_wire 必须小于时钟周期减 t_su
  • 保持时间约束(决定功能正确性,违例无法靠降频修复):t_cq + t_logic_min 必须大于 t_h,否则新数据穿透覆盖旧数据,造成不可复现的功能错误
  • 流水线切分的三个抓手:手工在乘法器与累加器之间插寄存器(一级变两级)、综合工具 retiming 自动搬移寄存器平衡两侧逻辑、对累加链使用 multicycle path(部分和并非每拍都要落寄存器的场景)
  • 频率-面积换算直觉:切一级流水,频率约提升 40-70%,代价是每个 PE 多一拍数据到位延迟与一组寄存器的面积功耗

跨时钟域 CDC:AI SoC 的隐形杀手

  • 真实 AI 芯片必然多时钟域:加速器核心域(数百 MHz 到 1GHz+)、总线 AXI 域、外设低速域、SRAM 独立域------NVDLA 明确把核心做成单时钟域、CSB 配置总线做成可异步接口,就是为了把 CDC 复杂度压缩到接口边界
  • 三级武器库:
text 复制代码
CDC 三级武器
├── 单 bit 慢速控制信号
│   └── [方案]: 两级触发器同步器(2FF),成本低,仅限电平/慢边沿
├── 多 bit 数据流
│   └── [方案]: 异步 FIFO,读写指针用格雷码跨域,空满判断防亚稳态
├── 数据路径成组传输
│   └── [方案]: 握手协议(req/ack 各自 2FF 同步),带宽低但安全
└── [铁律]: 多 bit 指针绝不允许各自 2FF------必须整体格雷码,
    否则同步瞬间各位跳变不一致,FIFO 深度判断直接错乱

功耗三件套:门控、隔离、多电压域

  • 动态功耗公式:
    P m a t h r m d y n = α × C × V 2 × f P_{mathrm{dyn}} = α × C × V^2 × f Pmathrmdyn=α×C×V2×f
  • 洞察:时钟树本身通常吃掉动态功耗的 30-50%,而 MAC 阵列在 padding 浪费、层间空泡、无效通道时根本不在做有效乘法------时钟却在照常翻转,这是 AI 加速器功耗优化的第一靶子
  • 时钟门控(clock gating):在时钟路径插入 ICG 单元,用 valid 信号关掉空转触发器簇的时钟;工业实现一律用锁存器型 ICG(低电平期间锁存使能)避免毛刺穿透
  • 操作数隔离(operand isolation):乘法器输入前加与门,让无效周期的输入保持零,切断翻转功耗传播
  • 功率域级手段:DVFS 多电压域按负载降压(V 项平方收益,电压降 10% 动态功耗约降 19%)、power gating 用隔离单元 + 保持寄存器彻底断电空闲引擎

核心模块 / 流程 / 机制详解

PE 单元 RTL 实现

  • Weight-Stationary PE 的 Verilog 参考实现(单周期版本,暴露关键路径问题):
verilog 复制代码
module pe_ws #(
    parameter W = 8,
    parameter ACC_W = 32
)(
    input  wire                   clk,
    input  wire                   rst_n,
    input  wire                   weight_en,
    input  wire                   step,
    input  wire signed [W-1:0]    weight,
    input  wire signed [W-1:0]    act_in,
    output wire signed [W-1:0]    act_out,
    input  wire signed [ACC_W-1:0] psum_in,
    output wire signed [ACC_W-1:0] psum_out
);
    reg  signed [W-1:0]     w_reg;
    reg  signed [ACC_W-1:0] acc_reg;
    wire signed [2*W-1:0]   prod;

    assign prod = w_reg * act_in;

    always @(posedge clk or negedge rst_n) begin
        if (!rst_n) begin
            w_reg   <= 0;
            acc_reg <= 0;
        end else if (weight_en) begin
            w_reg   <= weight;
            acc_reg <= 0;
        end else if (step) begin
            acc_reg <= psum_in + prod;
        end
    end

    assign act_out  = act_in;
    assign psum_out = acc_reg;
endmodule
  • 关键路径诊断:acc_reg 更新路径 = 累加加法器(32bit)+ 乘法器组合逻辑(16bit 乘),两个大块串联在一拍内完成------700MHz 以上基本收不掉
  • 两级流水改造(乘法单独一拍,累加一拍):
verilog 复制代码
    reg signed [2*W-1:0] prod_q;
    always @(posedge clk or negedge rst_n) begin
        if (!rst_n) begin
            prod_q  <= 0;
            acc_reg <= 0;
        end else if (step) begin
            prod_q  <= w_reg * act_in;
            acc_reg <= psum_in + prod_q;
        end
    end
  • 代价说明:psum_in 与 prod_q 必须对齐同拍(上游 PE 的输出寄存器天然错开一拍),阵列级联时逐行补偿一拍------这正是 Gemmini 的 MeshWithDelays 模块存在的意义

脉动阵列 RTL 组装

  • 用 generate 语句把 PE 织成二维网格:
verilog 复制代码
module array_ws #(
    parameter DIM = 16,
    parameter W = 8,
    parameter ACC_W = 32
)(
    input  wire clk,
    input  wire rst_n,
    input  wire load_en,
    input  wire step,
    input  wire signed [W-1:0] weights [0:DIM-1],
    input  wire signed [W-1:0] acts    [0:DIM-1],
    output wire signed [ACC_W-1:0] psums [0:DIM-1]
);
    genvar i, j;
    generate
        for (j = 0; j < DIM; j = j + 1) begin : g_col
            wire signed [W-1:0]     a_sig [0:DIM];
            wire signed [ACC_W-1:0] p_sig [0:DIM];
            assign a_sig[0] = acts[j];
            assign p_sig[0] = 0;
            for (i = 0; i < DIM; i = i + 1) begin : g_row
                pe_ws #(.W(W), .ACC_W(ACC_W)) u_pe (
                    .clk(clk), .rst_n(rst_n),
                    .weight_en(load_en), .step(step),
                    .weight(weights[i]),
                    .act_in(a_sig[i]),
                    .act_out(a_sig[i+1]),
                    .psum_in(p_sig[i]),
                    .psum_out(p_sig[i+1])
                );
            end
            assign psums[j] = p_sig[DIM];
        end
    endgenerate
endmodule
  • 结构解读:a_sig/p_sig 就是阵列的"血管"------每一段都是寄存器到寄存器的单拍路径,阵列频率由最慢的一拍决定,而不是由阵列规模决定(规模只增加走线电容拖慢 t_wire)

Ping-Pong 双缓冲与层间零开销切换

  • NVDLA 每个 DMA/引擎的配置寄存器组做成两份乒乓:当前层在硬件上跑时,CPU 已在写第二份配置,层结束零周期切换------RTL 实现就是每组寄存器配一个 index 翻转位
  • CBUF 的 double buffering 同理:weight bank 与 feature bank 轮换读写,DMA 为下一层预取与当前层计算并行

毛刺安全的时钟门控

verilog 复制代码
module icg_latch (
    input  wire clk,
    input  wire en,
    output wire gclk
);
    reg en_l;
    always @(clk) begin
        if (!clk)
            en_l = en;
    end
    assign gclk = clk & en_l;
endmodule
  • 原理:使能信号在时钟低电平窗口被锁存,时钟高电平期间 en 变化不产生门控输出毛刺;直接 and 门门控会在使能翻转瞬间切出窄脉冲,打到触发器就是误采样
  • 稀疏感知门控进阶:当 weight 或 act 为零(INT8 稀疏量化模型天然存在大量零),gate 掉该 PE 的 step 与时钟,功耗随有效数据密度弹性收缩

验证体系:RTL 与黄金模型对拍

  • 四层验证金字塔:
text 复制代码
AI 加速器验证金字塔
├── L1 黄金模型对拍
│   ├── [Python]: numpy matmul 逐层比对 RTL 仿真输出
│   └── [C/C++]: NVDLA Cmodel、Gemmini 的 systolique 周期精确模型
├── L2 定向边界测试
│   ├── [用例]: 层形状失配(通道 8 vs Atomic-C=16)、零填充边界
│   └── [用例]: 权重复用/批处理/Winograd 模式切换
├── L3 随机与覆盖率
│   ├── [UVM]: 约束随机配置 + functional coverage 收敛
│   └── [门限]: 行/分支/表达式覆盖率不低于 100-95-90
└── L4 门级签核
    ├── [SDF 反标]: 综合后/布局后时序仿真
    └── [形式等价]: Formality/yosys 证明网表与 RTL 逻辑等价
  • 黄金模型最小实现:
python 复制代码
import numpy as np

def golden_matmul(weights, acts):
    w = np.array(weights, dtype=np.int64)
    a = np.array(acts, dtype=np.int64)
    return np.matmul(a, w)

def check(dut_psums, weights, acts):
    expect = golden_matmul(weights, acts)
    got = np.array(dut_psums, dtype=np.int64).reshape(expect.shape)
    assert (got == expect).all(), "RTL vs golden mismatch"
  • 洞察:加速器 bug 十有八九不是乘法错,而是数据排布错(reshape/转置/行主序列主序)------黄金模型对拍要在 tile 级和整层级各做一次,只做整层级会漏掉 tile 边界 off-by-one

技术优缺点与适用场景

  • 对比总览:
text 复制代码
AI 算力实现路径对比(RTL ASIC vs GPU vs FPGA)
├── 能效比(INT8 典型量级):
│   ├── 专用 RTL ASIC(边缘 NPU): 数 TOPS/W 量级,最优
│   ├── 数据中心 GPU: 约 1-4 TOPS/W 量级
│   └── FPGA: 受 LUT 布线与频率上限拖累,通常垫底
├── 灵活性:
│   ├── ASIC: 网表冻结即定死,改架构等于重流片
│   ├── GPU: CUDA 软件层完全可编程
│   └── FPGA: bitstream 可重配置
├── 开发周期:
│   ├── ASIC RTL->GDS: 6-12 个月 + 流片费用
│   ├── GPU kernel: 数天到数周
│   └── FPGA: 数周到数月
└── 失败成本:
    ├── ASIC: 一次硅失败 = 数月与六位数美元蒸发
    └── GPU/FPGA: 出错即改,风险后移
  • RTL 数字系统设计的核心优势:能效比天花板(时钟门控/操作数隔离/数据流局部性全部可定制)、单位成本(量产摊薄)、确定性延迟(无 GPU 调度抖动,自动驾驶/工业场景刚需)
  • 主要局限:架构冻结、验证成本占项目 60% 以上、先进工艺流片费用指数级、团队需要 RTL+架构+物理实现复合能力
  • 适用场景 ↓
  • ✅ 边缘推理芯片:功耗预算瓦级以下、模型结构收敛(CNN/检测头固定),NVDLA/Gemmini 类架构直接可套
  • ✅ 大模型推理专用引擎:GEMM 数据流稳定,阵列+片上 HBM 的 RTL 定制收益最大(TPU 十年路线证明)
  • ✅ 科学研究与人材培养:SKY130 + OpenLane + Gemmini/Chipyard 全开源链路可零许可费走到真实硅片
  • 禁忌场景 ↓
  • ❌ 模型结构高频迭代的产品:架构三个月一换,ASIC 冻结节奏跟不上,选 GPU/FPGA
  • ❌ 极小批量(百片以内):NRE 费用摊不平,FPGA/现成模组更经济
  • ❌ 团队无数字后端能力:时序签核/物理实现外包可以,但 CDC/门控这类 RTL 层决策外包不出去

实战落地

  • 商用与开源对照的完整流程:
text 复制代码
RTL 到 GDS 全流程
├── 编码与静态检查
│   ├── [代码]: Verilog/SystemVerilog + lint(Verilator / SpyGlass)
│   └── [CDC]: Questa CDC / OpenLane 内建检查,亚稳态报告清零
├── 功能验证
│   ├── [对拍]: numpy/Cmodel 黄金模型
│   ├── [随机]: UVM + 覆盖率收敛
│   └── [原型]: FPGA 板级(Vivado,乘法器映射 DSP48 对照时序)
├── 综合
│   ├── [商用]: Design Compiler / Genus,-gate_clock 自动插 ICG
│   └── [开源]: yosys + abc 映射 SKY130 标准单元
├── 布局布线与 CTS
│   ├── [商用]: Innovus / ICC2
│   └── [开源]: OpenROAD(含自动时钟树与优化)
├── 签核
│   ├── [时序]: PrimeTime / OpenSTA,setup 与 hold 双清
│   ├── [功耗]: PrimePower 功耗矢量分析
│   ├── [物理]: Calibre DRC/LVS 或 Magic + Netgen
│   └── [等价]: Formality / yosys 等价性检查
└── 流片
    ├── [商用]: Foundry MPW 拼车
    └── [开源]: Efabless chipIgnite(SKY130 工艺)
  • Chipyard + Gemmini 的 SoC 生成路径:在 Scala 配置里声明 Gemmini 参数(阵列维度、dataflow、累加位宽),Chipyard 生成 Rocket 核 + Gemmini RoCC 加速器 + 物理实现脚本一体的 GDS 目标
  • OpenLane 最小实战:把 array_ws 顶层的 Verilog 交给 OpenLane config(指定 SKY130 工艺、时钟约束 create_clock -period、时钟门控使能),自动跑完综合到 GDS 并产出 STA 报告
  • 频率约束设定经验:先给目标频率的 110% 过约束综合,布线后回弹到真实延迟,避免布线后才发现逻辑深度不够
  • 避坑经验
  • 参数误区:阵列维度越大越好------64x64 的走线延迟平方级增长,t_wire 反超逻辑延迟后频率不升反降,16/32 是频率与吞吐的常见甜点
  • 参数误区:流水级数越多越好------每加一级寄存器,阵列填充时间加一拍、控制状态机复杂度上涨,深流水在高频目标(1GHz+)才划算
  • 常见报错:STA 负 slack 集中在累加路径------按上文两级流水切分,或对乘法器输出用 retiming 让工具自动搬寄存器
  • 常见报错:hold 违例集中在时钟门控簇------检查 ICG 是否 latch 型、CTS 后插入 delay buffer 修复,hold 违例靠降频救不了
  • 线上隐患:CDC 只仿真不检查------亚稳态 bug 概率性触发,仿真跑一万遍不等于流片安全,必须跑静态 CDC 检查工具
  • 线上隐患:异步复位释放不同步------recovery/removal 违例导致部分寄存器复位释放错拍,阵列整体进入非法状态,复位释放也要过 2FF 同步器
  • 错误用法复盘:只跑行为级仿真不做 SDF 门级仿真------功能全对但延迟违例,流片后频率腰斩;门级仿真至少覆盖一个完整层的前 N 拍
  • 错误用法复盘:稀疏门控在层切换边界忘清 weight 寄存器------上一层的残留权重被零激活误触发,精度离线掉点且无法在测试集复现

全文总结

  • 核心原理:AI 加速器 RTL 是把脉动阵列架构翻译成"寄存器到寄存器单拍收敛路径"的数字系统,峰值算力 = 2 x MAC 数 x 频率,频率由关键路径时序公式决定
  • 关键结论:PE 乘加链是频率命门,两级流水与 retiming 是提频主手段;CDC 与时钟门控毛刺是流片失败两大隐形雷;MAC 利用率失配让纸面算力打折
  • 落地重点:以 NVDLA 流水线为骨架、PE/阵列 Verilog 为核心资产,走 lint-CDC-验证-综合-布局-签核六步流程,OpenLane + SKY130 提供零门槛全开源验证通道
  • 技术本质:AI 算力的尽头是时序------架构决定乘法器数量,数字电路设计决定每秒能翻转多少次,两者相乘才是芯片真实交付的 TOPS

系列说明

  • 本文为《AI 深度解析》系列文章之一,该系列长期更新 AI 软硬件底层基础设施原理、架构机制、工程实战与前沿技术解读,覆盖从软件运行时、编译器、算子内核、指令集、硬件微架构到数字电路、半导体物理与制造工艺的完整技术栈

专栏推荐

参考资料

相关推荐
无所畏俱的老尹2 小时前
OpenAI 等支持 robots.txt 共享 AI 训练偏好信号:policy token 一次声明多厂商,落地仍待实现
人工智能·深度学习·机器学习·aigc
zhangfeng11332 小时前
用世界模型做AI制药:扰动之心发布虚拟细胞推演模型AlphaCell 1.0 Pr
人工智能·ai药物
slacker-kian2 小时前
M 系列 Mac 清除顽固的 CorpLink
macos·corplink·m系列
信息安全失业大专人员2 小时前
每日了解一个智能体-WorkBuddy
开发语言·ai·c#·智能体
猫头_2 小时前
MCP 开发实战:把你自己的后端 API 接入 Agent
人工智能·typescript·mcp
OpenAnolis小助手2 小时前
龙蜥社区亮相 GOSIM AI Vision Forum 共话“Agentic Native”开源新
人工智能·ai·开源·操作系统·龙蜥社区·agent
恩喜玛生物3 小时前
03_GROMACS分子动力学实战:从 Factor Xa 输入准备到轨迹分析
ai
Bode_20023 小时前
机器人装配线的监测和预测
人工智能·机器人装配