Chisel三分钟

极客

天呐!三分钟就能上手Chisel?我这个硬件小白都惊呆了好吗!

哎哟喂,各位看官,先别划走!我知道,一提到Chisel这个词,很多搞软件的朋友脑子里蹦出来的是“凿子”,搞硬件的朋友呢,可能眉头一皱,觉得这又是哪个神仙大佬搞出来的高深莫测的“硬件构建语言”,说实话,我一开始也是这么想的,甚至带着点“敬畏之心”,生怕这玩意儿跟Scala沾边就变成了秃头必备,直到我花了Chisel三分钟,我整个人就“蚌埠住了”——这玩意儿,也太对味儿了吧!

Chisel三分钟

什么是Chisel?别怕,它不是让你去凿石头!

咱们得用大白话聊。Chisel 本质上就是一种“高级硬件描述语言”,你可以把它理解为硬件界的“Python”,而Verilog呢,就像是硬件界的“C语言”,啥意思?就是说,以前我们用Verilog写一个模块,那得小心翼翼,跟绣花似的,一根线一根线地连,一个寄存器一个寄存器地声明,可Chisel不一样啊!它是基于Scala的,这意味着啥?意味着你可以用面向对象、函数式编程的那一套思维去“画”电路图!

哎呀,这么一说是不是有点抽象?别急,我来举个“栗子”哈,你想设计一个简单的计数器,用Verilog你得想好位宽,写好always块,管理好复位信号,但是在Chisel里,可能几行代码就搞定了,而且代码读起来跟看配置文档似的,特别清晰,我当时看完那个官方文档的入门例子,心里就一个感觉:就这?这也太简单了吧!那三分钟真不是盖的!

我的亲身体验:这三分钟,我可是“真香”了!

说实话,一开始让我用Chisel三分钟去写个东西,我是拒绝的,因为我这人吧,有点“守旧”,总觉得Verilog虽然繁琐,但那是“祖传的手艺”,心里踏实,可是,架不住好奇心和周围大佬的安利啊,我就琢磨着,试试就试试呗,反正又不掉块肉。

结果……嘿!真香了!那三分钟里,我干的第一件事就是搭了个简单的模块框架,你们知道用Verilog的时候,写那些端口定义有多烦人吗?十几行代码全是在声明输入输出!可在Chisel里,我直接在类里面定义变量就行,清爽得不得了,我当时都忍不住拍大腿:这才叫技术革新嘛!

然后呢,我又试了试它的参数化能力,咱以前写代码,想弄个可配置位宽的模块,得用一堆宏定义或者generate语句,看得人头大,但在Chisel里,直接用一个整数参数就能搞定!就好比你想要个买杯奶茶,告诉店员要“半糖去冰加珍珠”一样,在Chisel里就是传个参数那么简单直接,那一刻,我感觉我的发际线都被保住了不少呢!

为啥我说“三分钟”就够了?这背后的逻辑你得懂!

我知道,你肯定想说,是不是吹牛啊?三分钟,别说学会了,建个环境都不够吧?

咳咳,这里可得说清楚了,我说的Chisel三分钟,绝不是指“精通”或者“完全掌握”,那不现实,那是骗人的,我说的是“上手”“理解核心思想”的三分钟,为什么快?因为它把硬件的“细节”给封装起来了,你不需要操心底层那些繁琐的逻辑门是怎么连接的,你只需要把你的“想法”描述出来,Chisel这个“翻译官”就能帮你生成高质量的Verilog代码。

这就好比开车,你不需要懂得发动机里面的活塞是怎么运动的,你只要会踩油门打方向盘,车就能跑,Chisel就是给你提供了那个“自动挡”,把那些复杂的“手动挡”操作给你简化了,这三分钟,足够让你跟这位名叫“Chisel”的新朋友握手寒暄,打开话匣子,并且让你惊叹:“哇,原来硬件设计还能这么玩!”

当然了,我也得吐槽两句(别嫌我啰嗦)

Chisel三分钟的体验虽然惊艳,但也不是没槽点的,它对Scala语法有点儿要求,你光会硬件不懂软件,可能会在编译环境配置那一步就想摔键盘(别问我是怎么知道的,说多了都是泪啊!)。

但是话说回来,瑕不掩瑜,你想想,现在搞AI、搞大数据,芯片设计越来越复杂,咱们要是还抱着老工具慢慢磨,那黄花菜都凉了!Chisel这种提高生产力的利器,真的是大势所趋,如果你也想在硬件设计上体验一把“飞一般的感觉”,真的,不妨给自己一个Chisel三分钟的时间去试试看,相信我,一旦你跨过最初那点陌生的坎儿,你会回来感谢我的!反正我现在是死心塌地地爱上了这种“写代码生成电路”的快感,简直不要太上头!

文章版权声明:除非注明,否则均为极客网安-咸鱼原创文章,转载或复制请以超链接形式并注明出处。

目录[+]