risc-v中文社区

 找回密码
 立即注册
查看: 1080|回复: 0

[原创] 使用函数式编程产生硬件

[复制链接]

347

主题

564

帖子

2237

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2237
发表于 2021-9-4 21:02:54 | 显示全部楼层 |阅读模式
因为scala支持函数式编程,所以chisel也支持,我们可以使用函数去表示硬件,并结合
这些硬件,使用函数式编程(通过高阶函数形式)。
def add(a:UInt,b:UInt) = a + b
val sum = vec.reduce(add)
add是加法硬件,vec是向量。reduce方法是从左开始reduce,用add操作的结果再与vec的后一个
继续add,直到最后一个获得最终结果值,也就是说一连串加法器。
当然,按照scala语法,可以val sum = vec.reduce(_+_),效果相同。
在chisel中,上述一连串的加法器生成的组合逻辑延迟通过综合工具处理时可能比较大,
所以chisel引入了reduceTree方法:
val sum = vec.reduceTree(_+_)


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



Archiver|手机版|小黑屋|risc-v中文社区

GMT+8, 2024-4-29 15:22 , Processed in 0.015205 second(s), 17 queries .

risc-v中文社区论坛 官方网站

Copyright © 2018-2021, risc-v open source

快速回复 返回顶部 返回列表