jackzhang的个人空间 https://blog.eetop.cn/jack1 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

用生成式AI设计芯片,实例1:从有限状态机图片直接生成SV代码 ...

热度 31已有 2700 次阅读| 2023-10-29 11:47 |系统分类:芯片设计

在当今快节奏的世界中,半导体设计的创新是一项永恒的需求。对更快、更准确、更创新的解决方案的需求为探索生成式人工智能(#GenerativeAI)在半导体设计开发领域的潜力铺平了道路。能做到吗?当然可以!在本系列文章中,我们将深入探讨令人兴奋的实验,展示生成式人工智能如何彻底改变半导体设计。


实例 1 - 从 FSM 图到 SV 代码


第一个实验通过将有限状态机 (FSM) 图转换为 SystemVerilog (SV) 代码,展示了生成式人工智能的非凡能力。

在本例中,谷歌的生成式人工智能模型--BARD 被用来生成一个自动售货机 FSM 的 SystemVerilog 实现。

状态机图片:

图片



图片


代码如下:

// Vending machine FSM
// Disclaimer: This code is not tested for correctness

module vending_machine (
  input clk,
  input reset,
  input coin_inserted,
  input product_selected,
  input product_dispensed,

  output reg dispense_product,
  output reg return_coin
);

  // Define the states
  localparam [2:0] IDLE = 3'b000;
  localparam [2:0] COIN_INSERTED = 3'b001;
  localparam [2:0] PRODUCT_SELECTED = 3'b010;
  localparam [2:0] PRODUCT_DISPENSED = 3'b011;
  localparam [2:0] OUT_OF_STOCK = 3'b100;

  // Define the registers
  reg [2:0] current_state;

  // Transition logic
  always @(posedge clk or posedge reset) begin
    if (reset) begin
      current_state <= IDLE;
    end else begin
      case (current_state)
        IDLE: begin
          if (coin_inserted) begin
            current_state <= COIN_INSERTED;
          end else begin
            current_state <= IDLE;
          end
        end
        COIN_INSERTED: begin
          if (product_selected) begin
            current_state <= PRODUCT_SELECTED;
          end else begin
            current_state <= COIN_INSERTED;
          end
        end
        PRODUCT_SELECTED: begin
          if (product_dispensed) begin
            current_state <= PRODUCT_DISPENSED;
          end else if (out_of_stock) begin
            current_state <= OUT_OF_STOCK;
          end else begin
            current_state <= PRODUCT_SELECTED;
          end
        end
        PRODUCT_DISPENSED: begin
          current_state <= IDLE;
        end
        OUT_OF_STOCK: begin
          current_state <= IDLE;
        end
      endcase
    end
  end

  // Output logic
  always @(posedge clk) begin
    case (current_state)
      PRODUCT_DISPENSED: begin
        dispense_product <= 1'b1;
      end
      default: begin
        dispense_product <= 1'b0;
      end
    endcase
  end

  always @(posedge clk) begin
    case (current_state)
      OUT_OF_STOCK: begin
        return_coin <= 1'b1;
      end
      default: begin
        return_coin <= 1'b0;
      end
    endcase
  end

endmodule

有限状态机在芯片设计中得到广泛应用,以下是生成式人工智能如何发挥关键作用:

提高生产力:有了生成式人工智能,创建和更新图表变得轻而易举。设计人员现在可以专注于高级概念,让人工智能来做基础工作。这不仅加快了开发过程,还能在需要更改设计时迅速进行迭代。
更高的准确性:FSM 已经成为硬件设计的标准化工具。生成式人工智能模型经过大量数据集的训练,能够熟练地将这些图表转换为准确的 SV 代码。减少了人为错误,提高了代码质量。
提高创新能力:生成式人工智能的速度和准确性为快速探索新的设计理念打开了大门。设计人员可以利用各种 FSM 图表进行头脑风暴和实验,从而推动创新。这种灵活性使每一代半导体器件都能更快地集成先进功能。
虽然生成式人工智能前景广阔,但必须谨慎行事。生成的代码不一定总是完美的。在将人工智能生成的代码部署到生产环境之前,设计人员必须对其进行审查和严格测试。彻底的验证过程对于确保最终半导体设计的可靠性和功能性至关重要。
本文由EETOP综合编译自semiwiki


17

点赞

刚表态过的朋友 (17 人)

发表评论 评论 (4 个评论)

回复 cham 2023-11-28 05:51
免费版的ChatGPT还不支持图片功能
回复 churchmice 2023-12-1 14:15
也就自动售货机可以吹吹牛逼了,翻译还一股浓浓的机翻味道
回复 sun029 2023-12-29 12:10
实际上会消耗大量人工,提升并不明显或不太合算 914134105@qq.com
回复 llbaobao 2024-1-24 15:36
仅就这个状态机而言,20多年前siliconcanvas(似乎是这个名称),后不知道被谁收了,就已经可以实现这个功能了。

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 8

    关注
  • 133

    粉丝
  • 565

    好友
  • 228

    获赞
  • 200

    评论
  • 49309

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-1 08:04 , Processed in 0.021076 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部