0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

分享下SpinalHDL中SpinalConfig中的三项参数

Spinal FPGA 来源:Spinal FPGA 2023-02-08 10:01 次阅读

》nameWhenByFile

测试代码如下:

37195e7a-a713-11ed-bfe3-dac502259ad0.png

当我们采用SpinalSystemVerilog(demo0())的方式生成RTL代码时其生成的代码风格如下:

37538b68-a713-11ed-bfe3-dac502259ad0.png

在SpinalHDL中对于when的使用,when中所包含的条件往往会生成以一个when+fileName+行号的变量来替代,看起来无非代码多了几行,并不影响功能。

因为有行号的引入,我们一旦对SpinalHDL代码中这部分代码哪怕是添加了几行注释也会引起生成代码的部分修改,虽然不影响功能,但对于那些喜欢看RTL代码的人就显得略显得不爽了。

对于when的使用,可以在生成RTL代码时采用下面的形式来生成:

SpinalConfig(
nameWhenByFile=false
  ).generateSystemVerilog(demo0())

生成代码如下:

378a4efa-a713-11ed-bfe3-dac502259ad0.png

如此生成的代码不会再对when语句声明单独的变量,代码看起来和那些采用Verilog写代码的人毫无差异吧~

这对于生层的RTL尽可能减少非必要的信号名称变化。

》genLineComments

更近一步,对于代码生成时采用下面的形式生成:

  SpinalConfig(
    nameWhenByFile = false,
    genLineComments = true
  ).generateSystemVerilog(demo0())

此时生成的代码风格如下:

37bb7304-a713-11ed-bfe3-dac502259ad0.png

当genLineComments声明为true时,在生成RTL代码中会标注映射对应的SpinalHDL代码行号,这对于初学者在对比生成的RTL代码学习SpinalHDL还是非常的有帮助~

》bitVectorWidthMax

SpinalHDL中对于信号位宽默认是最大不超过4096(Intel DDR校准控制IP里面就有信号位宽就是4096 bit位宽),当设计里定义了信号 位宽超过4096,则会在生成RTL代码时报错,可通过SpianlConfig中的bitVectorWidthMax对最大位宽进行修改:

37d2d882-a713-11ed-bfe3-dac502259ad0.png

37fe516a-a713-11ed-bfe3-dac502259ad0.png







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • DDR
    DDR
    +关注

    关注

    11

    文章

    712

    浏览量

    65339
  • Verilog
    +关注

    关注

    28

    文章

    1351

    浏览量

    110095
  • RTL
    RTL
    +关注

    关注

    1

    文章

    385

    浏览量

    59783

原文标题:SpinalConfig Tips——让代码优雅点儿

文章出处:【微信号:Spinal FPGA,微信公众号:Spinal FPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    SpinalHDL如何快速地实现总线连接

    教你在SpinalHDL总线连接时针对总线的部分信号位宽不同时的如何快速地实现总线连接。
    发表于 11-28 15:48 862次阅读

    安规三项

    安规三项1.安规三项漏电流、接地电阻、绝缘阻抗有何种区别?2.接地电阻和绝缘阻抗是如何测试的3.电介质强度是不是和耐压一个含义
    发表于 08-03 18:58

    关于SpinalHDL的验证覆盖率收集简单说明

    SpinalHDL 1.4.2开始支持,在我们通过sbt构建项目时,build.sbt的依赖配置如下:开启覆盖率收集功能 有注意上文所给例子的小伙伴或许已经注意到,我们已经开启了覆盖率收集:
    发表于 06-24 15:56

    SpinalHDL关于casez的使用

    SpinalHDL的switch在之前的文章中曾提到过SpinalHDLswitch的使用:通常情况,switch对应着我们日常Ver
    发表于 07-06 10:59

    SpinalHDL的代码组织结构如何实现Component参数化设计呢

    习惯了Verilog的小伙伴,初次看到SpinalHDL的代码时,总会不自觉的和Verilog代码对照,本篇就SpinalHDL的代码组织结构进行一个简要的梳理。Component<
    发表于 07-21 14:20

    请问SpinalHDL的Area到底是什么意思

    )及兼顾代码尽可能复用的准则,SpinalHDL里设计了Area的概念。通过类扩展集成Area,可以有效的避免上述问题。介绍Area之前,先介绍一个概念:在Scala参数的传递均为引用类型,而我们定义
    发表于 07-22 14:22

    如何在SpinalHDL里启动一个仿真

    。仿真环境配置仿真环境的配置主要包含仿真器的选择,波形文件生成、覆盖率生成等参数配置,每个参数配置SpinalHDL均封装成一个函数。
    发表于 07-26 16:59

    三项闪联国际标准文本明年2月公布

    三项闪联国际标准文本明年2月公布 闪联宣布将于明年2月公布三项国际标准文本,这些标准均已获国际标准化组织和国际电工委员会(ISO/IEC)通过。   这三项
    发表于 12-29 10:28 711次阅读

    iOS 14和tvOS 14系统更新,HomeKit迎来三项重要功能

    援引外媒9to5Mac报道,在即将到来的iOS 14和tvOS 14系统更新HomeKit有望获得三项重要新功能。
    的头像 发表于 03-11 15:09 4039次阅读

    SpinalHDL的对应关系及声明形式

    针对SpinalHDL的两大类型Reg、Wire,来梳理下在SpinalHDL的对应关系及声明形式。
    的头像 发表于 07-03 11:02 1569次阅读

    SpinalHDLBundle数据类型的转换

    SpinalHDLBundle与SystemVerilog的packed struct很像,在某些场景,与普通数据类型之间的连接赋值可以通过asBits,assignFromBi
    的头像 发表于 10-17 09:51 1327次阅读

    针对电子设备基于MEMS显示的三项预测

    针对电子设备基于MEMS显示的三项预测
    发表于 11-02 08:15 0次下载
    针对电子设备<b class='flag-5'>中</b>基于MEMS显示的<b class='flag-5'>三项</b>预测

    国际认证三项电池CTL决议最新动态

    近日,国际电工委员会IECEE通过其官网发布了三项电池CTL决议,包括两临时决议和一由原临时决议转化的正式决议。
    的头像 发表于 08-29 18:09 1005次阅读
    国际认证<b class='flag-5'>三项</b>电池CTL决议最新动态

    不同型号的三项电容可以串联吗?

    近年来,随着电子产品的普及和需求的增加,电容器的应用越来越广泛。在电路设计,有时候需要将不同型号的三项电容串联在一起使用。那么,不同型号的三项电容可以串联吗?
    的头像 发表于 11-15 14:22 1858次阅读
    不同型号的<b class='flag-5'>三项</b>电容可以串联吗?

    浅析SpinalHDLPipeline的复位定制

    之前有系列文章介绍了SpinalHDLPipeline的使用,最近在一个功能模块真实的使用了这个lib。
    的头像 发表于 03-17 17:31 1044次阅读
    浅析<b class='flag-5'>SpinalHDL</b><b class='flag-5'>中</b>Pipeline<b class='flag-5'>中</b>的复位定制