查看原文
其他

【忆芯技术分享】大道至简:Chisel如何用高级语言进行硬件设计

携手共赢 北京忆芯科技有限公司 2023-10-25


1

Chisel诞生史


在硬件设计领域中,Verilog已经称霸工业界多年。Verilog不仅能在多个层次上对所设计的系统加以描述,同时能够对各个抽象层次的描述进行仿真验证,及时发现可能存在的设计错误。唯一美中不足的是,用Verilog进行设计的过程中,往往会遇到大量重复的代码工作和反复修改的接口需求,这消耗了数字设计工程师大量的时间和精力。为了解决这种困境,Chisel应运而生,天马行空的将硬件设计和面向对象结合在一起,很大程度上降低了硬件设计的时间成本。
Chisel首先诞生于学界,加州大学伯克利分校的研究团队为了在研究中获得更快的反馈发明了这一语言。据团队成员之一Krste Asanovic教授介绍,早在30多年前还没有硬件描述语言的时候,他们就已经开始构想这样一种语言了。很快,工业界意识到,Chisel并不同于其他“学术界的玩具”,它能有效提高研发的效率,为工业带来进步。时至今日,一些项目已经选择使用Chisel替代Verilog,著名的RISC-V指令集CPU “香山”就使用Chisel进行开发,并成功流片。



2

Chisel如何进行设计


Chisel内嵌于高级语言Scala,对Scala的数据结构有良好的支持,同时支持面向对象编程和函数式编程。Scala中的所有函数和变量都被视为一个对象,在使用Chisel进行硬件设计时,如果能够恰到好处的利用Scala的继承和封装,可以使得整个开发系统更加精简并有更好的可拓展性。
Chisel是一种HDL,自身就可以综合成唯一电路。但是,为了让更多的开发者愿意参与进来,Chisel对Verilog做了妥协。Chisel的编译过程如下图所示,代码首先通过Chisel编译器生成AST中间数据,然后经过Firrtl编译器,将AST数据转换成标准Firrtl代码,最后通过Firrtl编译器将Firrtl转换成Verilog代码。


图1.Tool flow of the Chisel ecosystem(引自Chisel Documentation)



3

Chisel如何进行验证


Chisel的验证分为两种。一方面,既然Chisel可以生成Verilog,我们自然可以在Verilog层面对设计进行验证。另一方面,Chisel的开发者们并不满足于仅仅作为Verilog的生成工具,为了谋求更加宏远的发展,Chisel内置了自己的验证系统Chisel tester。Chisel tester可以从Chisel层面对设计进行验证,支持Scala的所有方法。目前,Chisel tester还处于萌芽阶段,没有成熟开源的验证环境。可以预见的是,在Scala这门简洁而强大的编程语言支持的支持下,Chisel tester在不远的将来一定会拥有良好的生态,也会有更多优秀的工程师加入,一起推动它的发展。



4

Chisel实例


Chisel类似python,为用户内置了许多方便的工具,用Chisel进行开发往往比使用Verilog更加简洁高效。假设我们要设计一个LED定时闪烁的硬件,我们可以如下图所示编写一个Blinky的类,将频率和初值作为类的输入。


图2. LED blink(引自Chisel/FIRRTL Hardware Compiler Framework)


当我们需要一个频率为1000的LED时,我们可以直接对其进行例化,Chisel将生成下图所示Verilog。


图3. LED blink Verilog(引自Chisel/FIRRTL Hardware Compiler Framework)



5

技术永远在进步,忆芯永远在路上


忆芯科技是一家以技术为核心的芯片公司,始终关注并推动着技术的革新。忆芯科技已经流片的STAR2000,是一颗高性能企业级SSD主控芯片。在STAR2000中,一些复杂模块已经引入Chisel进行开发。


国密二级算法中,需要大量随机数来保证算法的安全性。真随机数的性能往往不能满足高速的数据加密,如何高效安全的生成伪随机序列是一个难题。
线性反馈移位寄存器(LFSR)是一种生成伪随机序列的方案。LFSR初始化时,需要n个真随机值 bn bn-1 … b2 b1 和一个n阶本源多项式 f(x)= Xn+anXn-1+an-1Xn-2… a2X+ a1 。接下来每个cycle都将 b1 作为伪随机值输出,并将bn bn-1 … b2 右移一位,同时计算新的bn= anbn+ an-1bn-1 +…+ a2b2 + a1b1 。在每n个cycle内,需要使用一个真随机数对bn进行加扰,以保证整个随机系统的安全性。


图4. LFSR(引自 高速伪随机数发生器的设计与实现)


Chisel只需简单几行即可实现LFSR。在实现的过程中,最好将本原多项式作为class的输入,留出接口以便例化出不同的LFSR。


图5. LFSR Chisel代码


在Chisel的代码中,可以明显看到,LFSR的每一个cycle都会用到上一个cycle的bn bn-1 … b2 。从这个角度出发,在每个cycle复用这些逻辑,就可以提前计算出至多n个cycle的LFSR输出,得到一个更加高效的STAR_LFSR。


图6. STAR_LFSR设计方案


图7. STAR_LFSR设计方案


STAR_LFSR每个cycle能够输入n-1 bits伪随机序列,效率是LFSR的n-1倍,而面积仅仅是LFSR的6倍。


图8. STAR_LFSR Chisel代码


Chisel让开发者可以将更多精力放在算法本身,很适合进行算法模块的开发。经过实践,我们发现Chisel在有限域运算,防侧信道算法等模块表现优异,大幅度降低了设计和验证的时间开销。忆芯科技敢为人先,在行业中率先引入Chisel进行硬件设计,真正做到了追求技术、不断创新。
著名作家、大思想家斯宾塞·约翰逊曾经说过“唯一不变的是变化本身”。技术的发展永远不会止步。对科技公司来说,技术是立足之本,固步自封只会被时代的洪流淹没,只有积极拥抱变化、不断推动技术发展,才能在瞬息万变的市场中长青不朽。





忆芯科技

核心职位火热招聘中

扫描二维码了解更多信息


推荐阅读

初赛报名倒计时!忆芯国产平台动作识别挑战赛13万奖金池等你来赢取!

8-30

重磅!忆芯携多款存算融合AI解决方案,亮相世界人工智能大会

8-29

忆芯国产平台动作识别竞赛公开课今晚19点开播啦!

8-25


忆芯科技


北京忆芯科技有限公司成立于2015年底,作为国内较早从事高性能固态硬盘主控芯片研发的企业,致力于成为赋能大数据应用的芯片全球领导者。经过7年的发展,公司已成长为国内领先的高端PCIe SSD主控芯片和成品盘供应商,为各行业的信息化发展提供高质量芯片级底层保障业务方向覆盖消费级、工业级和企业级主控芯片及解决方案。


忆芯科技核心成员具有多年研发经验和多项研发成果,拥有从底层算法到芯片设计,再到解决方案设计等多方面的丰富经验。坚持自主研发基础上,研发芯片产品拥有260余项自主知识产权,创新性地将处理器架构首次引入存储领域;现已成功完成4款高端消费级企业级SSD主控芯片流片,所研发的高性能低功耗NVMe SSD主控已量产出货。公司总部位于北京,在上海成都合肥厦门、深圳分别设有研发中心和客户技术支持中心。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存