大模型与EDA工具

       EDA工具,目标是硬件设计,而硬件设计,您也可以看成是一个编程过程。

        大模型可以辅助软件编程,相信很多人都体验过了。但大都是针对高级语言的软件编程,比如:C++,Java,Python,JavaSctipt。面向的行为是软件(CPU或GPU)。有多大用处,见仁见智,我在之前的博客里也提到过。这里不再多说,但是对于硬件编程,也就是我们所说的RTL编程,EDA工具的使用。大语言模型是否有效,有多大的帮助,实际上没有认真思考过。

        首先,RTL编程,最常用的仍然是VS-Code,在线工具可以使用EDA Playgroud。如果针对FPGA编程,使用的是专用的Vivado和 Quarters,如果要仿真,用得最多的是Mentor 的 ModelSim,还有一个很有名的综合工具:Synopsys Design。可以看到,这些工具,大多数都是厂家特制的工具,并不是针对语言级别的,这些厂家是否会提供 AI Assistant,目前并没有见到。但我们有时会使用 chatGPT来生成System Verilog,来做一些验证测试程序。

一:RTL & EDA

        对于RTL代码,它的考量指标,不止是性能和可维护性,终极目标是实现的硬件的PPA,可以说,它的目标与软件编程有所不同。

  • RTL设计需要符合综合工具的要求,而综合工具很有可能是厂家私有定制的。这对于AI有一定的难度。提供一些建议是可以的,要100%的正确,可能还得综合工具原厂的配合。对于综合工具反馈的问题,需要有能力修复,否则不可用。
  • 不仅仅是语法问题,RTL运行依赖于SDC,LLM必须要理解SDC所描述的约束。否则无法用于实际的硬件设计。
  • RTL的逻辑验证,也就是重要的测试是在仿真工具中完成,写仿真需要的激励代码和测试环境非常重要,输出的波形也是在仿真器中完成调试的,这个是否只能人工来完成?还是有可能让AI工具通过图形或视频来自动验证?

        可以看出,硬件编程会与芯片的综合过程有关,与约束相关,测试验证与仿真相关,这些重要的过程,AI必须要干预,最终的目标,当然是提供更好的PPA。这些既是要求,机会,也是LLM要达成目标的难点。

二:硬件编程的关注点

        那我们进一步来看看,如果要让AI生成RTL代码,需要聚焦哪些点?

2.1:PPA

        和软件有很大不同,硬件开发更注重最终实现的硬件的性能,因为产出物最重是要投入大批量生产的。并不像软件那样,更注重代码的生产量。RTL设计中,代码最终的硬件性能指标往往是更重要的,也就是我们说的PPA。

        PPA:Power,Performance,Area,功耗,性能,面积 是RTL设计中最重要的衡量指标。

        生成代码不仅要逻辑正确,还需要能优化硬件资源的使用量(面积),满足性能需求(时序能够收敛),并且能尽量降低功耗。这些要求与软件设计中对逻辑正确性和运行Runtime性能优化有很大的不同。

        硬件设计的错误,代价极大,因为在芯片流片后发现问题,修复BUG有巨大的时间和经济成本。这意味着,对于RTL代码在生成和测试阶段要求会比软件开发更加严格。


2.2:综合,仿真,调试

        对于综合工具,仿真工具,调试器的依赖很高

        这里我们又强调一次,综合就是将逻辑转成实际的物理硬件(芯片会提供Primtive组件)。

        仿真工具就是模拟RTL的运行,需要有激励代码和测试环境,需要查看运行时的波形。

        调试器可以随时查看程序中的变量和IO值。

        总的来说,RTL的编程,复杂度更高,依赖性更强,不仅仅是RTL语法的问题。

2.3:期望和猜想

        对于RTL开发团队,最在意什么?上面讲了,更好的PPA,那如何得到?

        硬件编程不仅仅是写好RTL,需要和EDA其它工具很好的整合,提供相应EDA工具的更好的使用方法,为综合,仿真,调试提供建议(实际上,要做到这个就很难了,因为相应的工具是闭源的

        所以,我们可以看出,RTL编码对于AI的要求,与纯软件编程是完全不同的,目标不同,环境不同。

        我们期望:工程师使用 Prompt(自然语言)直接生成电路的设计:

        (来自 ChipGPT的思路)

  1. 提示生成:它根据用户给出的规范描述为ChatGPT创建提示(例如:“设计带有进位和进位输出的4位加法器”)
  2. 程序生成:它使用 ChatGPT 生成每个提示的 Verilog 代码。
  3. 程序优化:输出管理器通过机器反馈和人工反馈修复和改进 Verilog 代码(原始程序),并将它们放在最终的设计空间(程序列表)中。这个空间包含了所有可能的解决方案。
  4. 设计选择: ChipGPT 搜索最终的设计空间,并根据目标指标选择最佳设计。

        好了,然后 如何优化,达成合理的PPA?

        我们可以使用四个模块来控制输出:Specification SplitPrompt ManagerOutput ManagerEnumerate Search

    &n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值