数字IC实践项目(9)—SNN加速器的设计和实现(tiny_ODIN)

news2024/11/22 23:45:09

数字IC实践项目(9)—基于Verilog的SNN加速器

  • 写在前面的话
    • 项目整体框图
    • 完整电路框图
  • 项目简介和学习目的
    • 软件环境要求
  • Wave&Coverage
  • Timing,Area & Power
  • 总结

写在前面的话

项目介绍:
SNN硬件加速器是一种专为脉冲神经网络(Spiking Neural Networks)设计的硬件加速器。脉冲神经网络模拟了生物大脑中神经元之间的工作方式,通过离散的脉冲信号传递信息。SNN硬件加速器可以加速脉冲神经网络模型的训练和推理过程,提高神经网络的效率和能耗表现。

通过在硬件级别优化脉冲神经网络的计算,SNN硬件加速器可以实现更快的推理速度和更低的能耗,适用于诸如智能感知、边缘计算和神经形态学计算等领域。

本项目是对经典SNN的复现,是从开源的ODIN SNN处理器进行调整而来tinyODIN。是一款低成本的脉冲神经网络(SNN)处理器,简化为最简单的交叉阵列形式。tinyODIN内嵌了256个12位漏积分-放电(LIF)神经元和64k个4位突触,tinyODIN中没有现象学的Izhikevich神经元模型,也没有在线学习突触。

重要性:
SNN(脉冲神经网络)硬件加速器在人工智能和神经形态学计算方面具有重要性,其重要性体现在以下几个方面:

  1. 高效能耗比:SNN硬件加速器可以针对脉冲神经网络的特性进行优化,实现更高的能耗效率。由于神经元的活动是以脉冲的形式进行传递,因此专门针对这种模式设计的硬件可以显著降低能耗,提高能效比。
  2. 实时处理能力:脉冲神经网络通常用于处理实时感知和决策任务,例如视觉处理和运动控制。SNN硬件加速器的并行计算和快速响应特性,使其能够满足实时处理的需求,对于嵌入式系统和边缘计算等领域尤为重要。
  3. 神经形态学研究:对于神经形态学和神经科学研究来说,SNN硬件加速器提供了一种高度可定制和可调节的平台,有助于模拟大规模神经网络的活动,加深对大脑功能的理解,并促进人工智能与生物学的交叉研究。

对于找工作的帮助:

  1. 就业竞争力增强: SNN硬件加速器是人工智能领域的前沿技术之一,掌握其设计将使数字IC专业学生在求职市场上具备更强的竞争力。公司在人工智能芯片设计、边缘计算、物联网等领域都需要数字IC工程师具备相关技能,因此拥有SNN硬件加速器的设计经验将使学生更容易获得相关职位。
  2. 加深理论与实践结合: SNN硬件加速器的设计涉及到神经形态学计算原理、硬件架构优化等多个领域的知识。通过掌握SNN硬件加速器的设计,学生能够将所学的理论知识与实践相结合,加深对数字集成电路设计和人工智能的理解,并且能够在实际项目中应用所学的知识。
  3. 开拓创新思维: SNN硬件加速器的设计是一个创新的领域,需要工程师具备创新思维和解决问题的能力。掌握SNN硬件加速器的设计将培养学生的创新能力,激发他们在数字IC领域中提出新的设计理念和解决方案的能力,这对于找工作时的项目经验展示和职业发展都非常有帮助。

项目整体框图

项目整体框图如下,以SNN硬件突触和片上SRAM为核心,搭配SPI外围模块完成权重配置和事件输入,处理器采用了时间多路复用的方式,实现了一个包含256个神经元和64k个突触的交叉架构。
每个神经元和突触的状态和参数分别存储在1 kB 和32 kB的单口同步存储器中。

  • 控制器负责神经元和突触更新逻辑的时间多路复用
  • 调度器则处理来自输入AER总线的内部和外部事件

在这里插入图片描述

完整电路框图

整个电路结构如下,主要分为六个部分,分别为:

  1. aer_out:事件输出端口,用于处理地址和SNN突触触发结果。
  2. spi_slave:spi配置端口,用于设置全局寄存器、SNN突触权重以及事件配置等命令,支持双向读写。
  3. controller:SNN内部主控制模块。
  4. scheduler:事件分发模块,用于处理Bus数据和内部事件。
  5. synaptic_core:SNN突触阵列,存储突触状态,分时复用,降低SNN突触例化数量。
  6. neuron_core:LIF模型

在这里插入图片描述

项目难度:⭐⭐⭐⭐⭐
项目推荐度:⭐⭐⭐⭐
项目推荐天数:14~21天

项目简介和学习目的

基于开源项目完成rtl前仿到icc2布局,感兴趣的同学可以私信我,整个项目还有很多可以优化改进的地方,大家可以在完成学习的基础上进行改进,希望可以帮助大家更好的完成求职!

软件环境要求

整个项目对于初学者要求较高,完成复现需要花费较长的时间搭建软件环境,这里建议大家按需完成学习,循序渐进,可以从神经网络、SNN硬件加速器、RTL代码以及综合等方面进行展开。

要求的软件和EDA环境:
(1)操作系统要求:
Centos
(2)EDA 软件要求:
VCS2018,DC2018,ICC2 2018
(3)硬件要求:
电脑运行内存 >= 16Gb(便于综合)

项目学习目的:
(1)熟练掌握复杂项目的工程管理;
(2)熟悉 Verilog HDL仿真、综合工具以及了解数字IC设计工具及流程;
(3)学习SNN网络的基本结构和基础原理;
(4)学习SNN硬件加速器;
(5)熟练掌握Verilog语法和验证方法;

Wave&Coverage

配置SNN突触权重后,通过SPI完成事件输入,在Aerout ACk上可以采样到LIF单元对应状态。
在这里插入图片描述
整个项目的Coverage如下:
在这里插入图片描述

Timing,Area & Power

基于tsmc 40nm工艺完成综合,以下为相关报告。

Timing:
在这里插入图片描述
Area:
在这里插入图片描述

power:
在这里插入图片描述

icc2布局如下:
ps:手动粗糙布局,也没有对应SRAM的IP,图一乐。
在这里插入图片描述

总结

项目涵盖了SNN硬件加速器的基础理论,Verilog实现和仿真和测试所需脚本和环境配置。
需要搭建完整的软件和硬件环境,相对先前列出的开源和初级项目来说,整体难度稍高,适合作为前期的提升项目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1523723.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文笔记合集】Transformers in Time Series A Survey综述总结

本文作者: slience_me 文章目录 Transformers in Time Series A Survey综述总结1 Introduction2 Transformer的组成Preliminaries of the Transformer2.1 Vanilla Transformer2.2 输入编码和位置编码 Input Encoding and Positional Encoding绝对位置编码 Absolute …

GPT-1, GPT-2, GPT-3, InstructGPT / ChatGPT and GPT-4 总结

1. GPT-1 What the problem GPT-1 solve? 在 GPT-1 之前,NLP 通常是一种监督模型。 对于每个任务,都有一些标记数据,然后根据这些标记数据开发监督模型。 这种方法存在几个问题:首先,需要标记数据。 但 NLP 不像 CV&…

[ Linux ] vim的使用(附:命令模式的常见命令列表)

1.下载安装 这里是在通过yum进行下载安装 yum install -y vim 2.了解 vim是一款编辑器,它具有多模式的特点 主要有:插入模式,命令模式,底行模式 3.使用 打开 vim 文件名 命令模式的常见命令列表 插入模式 按「 i 」切换…

MQ组件之RabbitMQ学习

MQ组件之RabbitMQ入门 同步调用和异步调用 在微服务架构中,服务之间的调用有同步调用和异步调用两种方式。 我们使用OpenFeign去调用是同步调用,同步调用的缺点很明显,在下图的场景中,支付完成后需要调用订单服务、仓库服务、短…

echarts实践总结(常用二):折线图(特点:渐变、面积区域)

目录 第一章 echarts基本使用 第二章 echarts实践——折线图 效果展示 第一章 echarts基本使用 Echarts常用配置项(详细入门)_echarts配置项手册-CSDN博客 柱状图案例: echarts实践总结(常用一):柱状图(特点:渐变色、点击缩放、…

JavaScript Object对象

创建object类型对象的三种方式 ES中object类型的对象大致由三种创建方式: 直接使用花括号创建使用function创建使用Object.create方法创建。 直接使用花括号创建 代码示例: var obj {v: 6,innerObj: {v: 7,},logV: function() {console.log(this.v…

C#求水仙花数

目录 1.何谓水仙花数 2.求三位数的水仙花数 3.在遍历中使用Math.DivRem方法再求水仙花数 1.何谓水仙花数 水仙花数(Narcissistic number)是指一个 n 位正整数,它的每个位上的数字的 n 次幂之和等于它本身。例如,153 是一个 3 …

慢sql优化

1.避免使用select *,而是明确列出需要的列, 2.小表驱动大表,in适用于左边大表,右边小表。 exists适用于左边小表,右边大表。 3.批量操作:如果每次插入数据库数据,都要连接一次数据库&#xf…

【LeetCode每日一题】2684. 矩阵中移动的最大次数

文章目录 [2684. 矩阵中移动的最大次数](https://leetcode.cn/problems/maximum-number-of-moves-in-a-grid/)思虑:代码: 2684. 矩阵中移动的最大次数 思虑: 1.将第一列的所有行坐标,用IntStream 来生成一个范围 [0, m) 内的整数…

一命通关递归

递归 简介 递归是我们在学C语言的时候,就已经接触到了的一个概念,相信大家的递归都是从这里开始的: 但是,在老师念ppt的时候,伴随着一些前轱辘不转后轱辘转的语言,我们往往都没有太去了解递归的工作原理和…

【C语言】字符函数与字符串函数以及内存函数 { 超详细攻略,一篇学会 }

今日分享:字符、字符串函数和内存函数 内存函数就是对内存进行操作的函数 字符串函数就是对字符串进行操作的函数 字符函数就是对字符进行操作的函数 str前缀的函数是字符串函数,头文件string.h mem前缀的函数是内存函数,头文件stdlib.h 字符…

【pynput】监控是否打开百度贴吧网页

文章目录 简介Demo 简介 有网友提过一个要求,用 Python 实现一个 电脑打开某网站就自动关机的功能。 想到的思路有两个: 【windows 平台】, 获取活动的窗口标题,如果标题里包含了某些网站名称, 那就使用关机命令 可以定时拉取标题, 也可以使…

代码算法训练营day9 | 28. 实现 strStr() 、459.重复的子字符串

day9: 28. 实现 strStr()KMP的主要应用:什么是前缀表:前缀表是如何记录的: 如何计算前缀表:构造next数组:1、初始化2、处理前后缀不相同的情况3、处理前后缀相同的情况 代码: 459.重复的子字符串…

P1303 A*B Problem(高精度乘法)

题目描述&#xff1a; 图解&#xff1a; 此图来源于ACwing一位大佬的题解 AC代码&#xff1a; #include<iostream> #include<vector>using namespace std;vector<int> mul(vector<int> &A,vector<int> &B) {vector<int> C(A.…

C#创建第一个PIESDK模版的项目

目录 环境配置创建项目方式 环境配置 1软件安装 通过安装光盘或者U盘等介质读取PIE软件的安装程序和使用文档。程序安装过程比较简单&#xff0c;软件本身不借助与任何第三方程序&#xff0c;直接双击安装程序【PIESDK.Net_V6.3_Windows_X64.exe】安装文件&#xff0c;即可安装…

Java Swing游戏开发学习12

内容来自RyiSnow视频讲解 这一节讲的是实现游戏中的NPC(Non Player Character)非玩家角色。 添加了一个老人NPC&#xff0c;一个简单的AI&#xff08;人工智能&#xff09;拄着拐杖四处走。老人与树木、玩家的碰撞检测。 NPC四处走动 实现NPC四处走动 一开始&#xff0c;每一…

掌握Go语言:深入encoding/gob包的高效数据序列化

掌握Go语言&#xff1a;深入encoding/gob包的高效数据序列化 引言理解Gob和它的使用场景Gob的概念和设计目标Gob的适用场景和优势 开始使用Gob基本的Gob编码和解码示例代码编码&#xff08;序列化&#xff09;解码&#xff08;反序列化&#xff09; Gob编码高级应用自定义类型的…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Tabs)

通过页签进行内容视图切换的容器组件&#xff0c;每个页签对应一个内容视图。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 该组件从API Version 11开始默认支持安全区避让特性(默认值为&#x…

炸裂!全球首个AI程序员!

近年来&#xff0c;人工智能&#xff08;AI&#xff09;在多个领域取得了显著进展&#xff0c;不断拓展其能力边界。一个引人注目的突破是全球首个AI程序员——Devin的诞生。 这一创新不仅展示了AI技术的快速进步&#xff0c;而且对软件开发领域和未来的工作场景产生了深远的影…

【重新定义matlab强大系列十八】Matlab深度学习长短期记忆 (LSTM) 网络生成文本

&#x1f517; 运行环境&#xff1a;Matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&#x1f91…