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

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

3天内不再提示

高效的代码校验让芯片开发周期左移

新思科技 来源:新思科技 作者:新思科技 2022-06-07 10:10 次阅读

专用集成电路(ASIC)的设计规模不断扩大、复杂度不断攀升,这对芯片开发者的能力和所使用的工具都提出了更高的要求。

在之前的文章中,我们探讨过数十亿门级ASIC所面临的跨时钟域(CDC)和跨复位域(RDC)挑战,今天我们将共同探讨第三大挑战──静态代码校验。

高效的代码校验

让芯片开发周期左移

代码校验,即对源代码进行自动检查以排查错误,是硬件开发生命周期中非常重要的一环。如果能在RTL开发的早期阶段就开始代码校验工作,评估代码质量以及一旦代码错误会对设计流程的后续环节造成哪些影响,这对开发者来说将会大大提升开发效率,并最终实现开发周期的左移。

现在的代码校验已经远远超出了RTL语义规则检查的范畴,扩展到了综合能力检查、结构分析以及网表/电气规则检查。为实现左移,芯片开发者希望能够在开发流程早期阶段就完成许多复杂的任务,比如在 RTL 内执行更复杂的检查,以及确保 RTL 与下游合成引擎更加一致等等。开发者还希望 RTL 对各种仿真器“友好”并可进行互操作,同时兼容等价性检查器。这些要求都不简单,而这其中真正的挑战就在于如何从源代码中寻找并修复漏洞。

如果把这些挑战放大到数十亿门级ASIC的设计中,可以想想代码校验会有多复杂,因此为了在设计规模和复杂度不断攀升的情况下,依旧实现将开发周期左移,就需要更强大的代码校验工具来帮助芯片开发者们高效完成代码的预先排查工作。

管理规则集

代码校验工具需要使用规则集运行,开发者需要创建、管理和编策这些规则集。这些都是非常专业的技能,其中涉及的专业知识通常是小公司不具备的或者想要引入的,所以对小公司而言,入门级的做法就是购买现成的软件包。而大型公司一般有自己的内部代码校验规则集,这些内部规则集对公司来说都是重要的投资。

第三方或行业标准规则集可以降低准入门槛,帮助小规模的设计团队加速代码校验工作流程。新思科技的GuideWare方法学文档和规则集正是为了这一目的而开发的,旨在帮助开发者快速开始采用此技术,并根据需要进一步制定规则。

GuideWare的目标是能够在至少80%的用例中实现RTL移交,从而更大限度地减少创建、管理和编策相关规则所需的专业知识。对小型设计团队而言,GuideWare绝对是一个福音,他们的设计可以实现质的飞跃,生产力也会大幅提升。

新思科技会对GuideWare定期进行更新,以确保规则集的复杂性始终处于行业领先地位。新思科技的IP均已通过代码校验认证,开发者们可以选择新思科技的IP以及GuideWare中的设计复用合规性检查功能,做出符合行业标准的设计。

如何处理无用代码?

无用代码或无法访问的代码在开发阶段通常都会存在,有些甚至会保留到流片阶段。为什么会这样呢?

设计的复杂性在开发过程中也会不断演进,开发者会随时进行漏洞修复、增加功能、集成可复用的模块等等,有时还会为了实现功耗和性能目标做全面的代码优化,这样就会导致最初写的一些代码变为无用代码。但是由于产品交付时间并没有因为设计变复杂而延后,迫于时间压力,很多时候开发者没有时间去清理这些无用代码。虽然保留这些代码并不会影响下个代码的正常运行,但是如果追求精简设计,这些代码就必须要处理。

使用代码校验工具来清理无用代码是非常有必要的,有些开发者对工具是否好用持怀疑态度,他们可能会为了以防万一就保留相关代码,但大多数都会秉持“零违例”准则,即“要么修复,要么放弃”。因此,代码校验工具能够准确识别无用代码并知道如何处理它们是非常重要的。

新思科技的静态代码校验工具VC SpyGlass Lint采用形式引擎,在识别无用代码上效率非常出众。但开发者通常会有以下几种操作选项:

更新RTL代码从而移除无用代码:这应该是能把无用代码清理的最干净的解决方案,还能够有效移除覆盖率分析中的覆盖率空洞。但这一方法需要重新构思代码,并进行功能验证,所以比较花时间。

把无用代码注释掉并为了以后参考附上相关信息的注释:虽然这种方法也还需要进行功能验证,但它也能提供一个干净的代码并移除覆盖率空洞。

弃用代码校验 waiver 文件中的无用代码:仅确认无用代码的安全性,不对其进行清理,RTL代码库保持不变。覆盖空洞将仍然存在。

了解设计复杂性

越复杂的设计所包含的漏洞也就越复杂。但开发者在设计中通常都会追求精简、直观、一看就懂且易于维护的代码结构。不过随着时间的推移,在开发者不断debug修正代码的过程中,代码的整体质量与最初相比会有所下降,他们可能还会突然发现RTL代码怎么好像越改越复杂了,逻辑也越来越难理解了。

衡量并可视化呈现代码的复杂性可以帮助开发者“看见”代码中变得复杂的部分,他们可以利用这一信息对积攒的复杂代码进行评估和推演。针对复杂性风险过高的代码区,开发者会在性能和功能之间做一些权衡,并对部分代码进行重构。

通过同行评议保证鲁棒性很有用,且是一项所有设计团队都应采用的最佳实践,但新思科技的VC SpyGlass Lint有一个独特的优势是其他工具无法比拟的,就是可以衡量代码的复杂性,为开发者提供非常有用的建议。VC SpyGlass Lint利用形式引擎提供功能分析及代码复杂性分析,并通过仪表板呈现结果。

永远存在的误报问题

在CDC和RDC的文章中,我们讨论过误报问题,这一问题在代码校验过程中同样存在。在数十亿门级的设计中,势必会产生大量违例,数量过大就会有遗漏风险。开发者们希望的是,工具可以帮助他们直观地看到有意义的信息、准确评估信息、正确标记违例、对违例进行分类等等,从而提高处理违例的效率和准确性。

VC SpyGlass Lint利用形式引擎来有效解决误报问题。开发者们无需知道形式验证,也无需具备这方面的专业知识,所有形式验证都将在后台完成。这一工具内置了5000多项检查,而且新思科技仍在不断地对检查项目进行添加和完善。

功能校验,加快签核

借助一键式形式验证的功能校验,开发者们可以在验证平台可用前就对功能和覆盖率问题进行测试,从而节省时间并实现左移。功能校验在检查以下控制问题时非常有用:

FSM死锁

无法访问状态的检查

覆盖率问题(如常值信号)

无用代码检查

数组边界违例

总结来说,如果开发者们能够尽早知道复杂的RTL代码是否能够实现预期的设计结果,他们就可以在设计开发后续流程中节省很多时间和精力,不仅实现开发周期的左移,还可节约成本。新思科技的VC SpyGlass Lint等工具可以完美解决这一问题,它利用形式引擎实现功能分析,可有效帮助开发者们尽早判断他们的RTL代码质量是否满足设计需求,最终加速签核。

原文标题:静态代码验证:从源头解决数十亿门级ASIC设计挑战

文章出处:【微信公众号:新思科技】欢迎添加关注!文章转载请注明出处。

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

    关注

    447

    文章

    47791

    浏览量

    409147
  • 集成电路
    +关注

    关注

    5321

    文章

    10734

    浏览量

    353394
  • asic
    +关注

    关注

    34

    文章

    1156

    浏览量

    119264
  • 新思科技
    +关注

    关注

    5

    文章

    716

    浏览量

    50065
收藏 人收藏

    评论

    相关推荐

    Buck/Boost免代码开发专用芯片正式发布

    PPEC免代码编程开发优势,降低了电源开发门槛,缩短研发时间,为电源企业快速赋能。PPEC的标准化模块应用,已历经行业众多头部客户项目检验,获得用户的高度认可。P
    的头像 发表于 03-05 08:22 139次阅读
    Buck/Boost免<b class='flag-5'>代码</b><b class='flag-5'>开发</b>专用<b class='flag-5'>芯片</b>正式发布

    国内首款免代码大功率双向DC/DC电源专用芯片

    PPEC-86CA3D是一款应用于双向有源全桥变换器的电源控制芯片,为电源研发企业提供稳定可靠的隔离型双向DC/DC控制方案,继承PPEC免代码编程开发优势,降低了电源开发门槛,缩短研
    发表于 11-20 10:31

    谈谈“左移”策略

    左移”的策略是将在设计流程末尾执行的任务整合到早期阶段,其主要目的是及早发现关键缺陷和错误,以更轻松、更快速地予以解决。“左移”策略不仅能节省时间和资源,还能保证产品质量,甚至提升产品质量。
    的头像 发表于 11-10 16:00 359次阅读
    谈谈“<b class='flag-5'>左移</b>”策略

    如何在IAR Embedded Workbench中配置生成对应代码区域的CRC校验

    在“使用IAR Embedded Workbench和MCU的CRC模块来检查代码的完整性”一文中,介绍了如何在IAR Embedded Workbench中配置生成对应代码区域的CRC校验码,然后
    的头像 发表于 10-27 11:49 868次阅读
    如何在IAR Embedded Workbench中配置生成对应<b class='flag-5'>代码</b>区域的CRC<b class='flag-5'>校验</b>码

    DC电源模块的开发周期

    BOSHIDA DC电源模块的开发周期 DC电源模块是一种被广泛应用于电力系统中的设备,它能够将交流电转换成为直流电,为电子设备提供可靠、稳定的电源。DC电源模块的开发周期涉及到多个方
    的头像 发表于 10-19 11:21 246次阅读
    DC电源模块的<b class='flag-5'>开发</b><b class='flag-5'>周期</b>

    奇偶校验和crc校验的区别 CRC校验和奇偶校验之间有什么关系?

    奇偶校验和crc校验的区别 CRC校验和奇偶校验之间有什么关系? 奇偶校验和 CRC(Cyclic Redundancy Check)
    的头像 发表于 10-17 16:28 2465次阅读

    什么是奇校验和偶校验?常见的奇偶校验方式有哪些?

    什么是奇校验和偶校验?常见的奇偶校验方式有哪些? 1. 奇偶校验是指在数字通信中采用一种技术对传输的数据进行校验。由于数字信号传输容易受到干
    的头像 发表于 10-17 16:28 7856次阅读

    C语言如何写出高效代码呢?

    当涉及复杂的高效C代码案例时,这些代码示例展示了C语言中一些复杂且高效的应用案例,涵盖了排序算法、图算法、位操作、文件操作、多线程编程等领域。
    发表于 09-06 14:57 194次阅读
    C语言如何写出<b class='flag-5'>高效</b><b class='flag-5'>代码</b>呢?

    西门子博途SHL左移指令详解

    使用“左移”指令,可以将参数 IN 的内容逐位向左移动,并将结果作为函数值返回。参数 N 用于指定应将特定值移位的位数。
    的头像 发表于 07-11 10:37 2694次阅读
    西门子博途SHL<b class='flag-5'>左移</b>指令详解

    开发板里的CRC校验例程是什么意思呢?

    之前做CRC校验,是有个一检验函数,两边用一个校验函数就可以了。 开发板里的CRC校验例程是什么意思呢?
    发表于 06-27 07:49

    PPEC系列新品丨高效大功率DC/DC电源开发专用芯片发布,样片申请开启

    研发企业提供稳定可靠的高效隔离型DC/DC控制方案。该芯片继承了PPEC免代码编程开发优势,能够降低电源开发门槛,缩短研发时间。 产品亮点1
    发表于 05-18 10:11

    FPGA奇偶校验的基本原理及实现方法

    在数字电路中,数据的正确性非常重要。为了保证数据的正确性,在传输数据时需要添加一些冗余信息,以便在接收端进行校验。其中一种常用的校验方式是奇偶校验(Parity Check)。本文将介绍奇偶
    的头像 发表于 05-14 14:59 2025次阅读
    FPGA奇偶<b class='flag-5'>校验</b>的基本原理及实现方法

    基于89C51单片机的8位LED左移源程序

    基于89C51单片机的8位LED左移源程序
    发表于 05-12 16:50 1次下载

    SpringBoot Web应用如何进行参数校验?(下)

    。靠代码对接口参数一个个校验的话就太繁琐了,代码可读性极差。Validator框架就是为了解决开发人员在开发的时候少写
    的头像 发表于 05-11 10:37 331次阅读

    SpringBoot Web应用如何进行参数校验?(上)

    在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数做校验,例如登录的时候需要校验用户名密码是否为空,创建用户的时候需要校验邮件、手机号码格式是否准确。靠
    的头像 发表于 05-11 10:31 447次阅读