下冰雹 · 6月13日

如何做一颗SOC——工具篇

上篇文章我给大家介绍了SOC设计的连连看技术,里面主要介绍了SOC设计的基础建设,工具给我们的项目带来的效率的极大提高,那么这些工具都是要从头开发吗?据我所知,很多老牌公司都有自己的集成开发Flow,各种工具齐全,工程师只需要Push Botton,芯片就能做出来,那么对于一个初创公司,就只能从0到1重新开发这些工具吗?

是的,没错!我以前也是这么认为的,直到我看到了这个,有一家叫ezchip的国产公司,已经有成熟的解决方案去覆盖我前面说的所有技术,甚至还做到了我没想到的,,,

连连看

传统的手动实例化连接这里就直接不说了,直接pass。脚本化的集成方式,用脚本提取子模块的端口,然后自动连接,自动定义wire、reg,加上interface的集成方式,让代码的可读性和可维护性大大提高,再加上个lint检查,已经非常大的提高效率了

ezchip的IC studio工具,直接将这些过程图形化操作,采用bundle的集成方式,比interface更先进。不只是通用协议接口,可以将所有的模块port都可以打包分类。

左右两边bundle选中,右键点击connect直接连接完成。

image.png

普通的单个port也是同样的。

image.png

这下真成连连看工程师了,没得洗了。

image.png

而且一直以来有一个困扰我的脚本工具的问题,就是两个模块之间的连线,不是全位宽,而且截取中间位宽连接的问题,这时就只能手动操作了,IC studio可以定制连接的位宽和移位。

优雅,实在是优雅。

image.png

穿层连线功能,传统的集成方式传层连线,左边,黑色部分全部需要手动创建port连接,右边黄色部分直接自动化生成。

image.png

在重构设计的时候,例如跨hierarchy移动某个instance,工具中一步就可以完成,避免大量删改端口的编码。左边的实现需要手工将RSICV模块移动到domain_b中,涉及到每一层的端口变更,增删,重新例化,重新连接,都需要人工完成。使用IC studio工具中只需要在hierarchy的树状图中, 移动到目标位置,与此module相关的连接,都会自动发生改变。

IC studio自带的连线检查floating、multi driven、constant,够用了,这些报告清完,可以说soc的集成问题80%都清掉了。IC studio支持工具自带的系统模块,还支持用户导入用户设计的IP。

代码生成

IC-build是ezchip的代码生成功能,可以一键生成同版本的全套代码、约束和文档。

我在上篇文章介绍到的时钟复位代码的生成,我简单体验了下,配置你的crg模块的基本组件,比如glichfree mux、clk_divider、icg、sync模块等等。

image.png

然后在表格样式的配置界面,配置自己时钟的结构。

image.png

还支持导入和导出csv文件,就可以直接对表格操作。

image.png

更牛的是它最终可以直接生成时钟树的结构图,真是大大提高了效率,这个图如果是手画想要和代码完全对应,费老鼻子劲了,非常容易出错。

image.png

rst gen也是类似的,填完表,直接生成一个复位树的图。

image.png

最后生成自带apb/ahb配置的clk_gen和rst_gen代码。关灯,下班!

对于sys_con代码生成,同样支持图形化界面,填写表格的方式直接生成ahb/apb接口的regfile。

image.png

支持pad share代码生成, 根据软件配置选择pad的功能进行pad复用,也是表格的方式进行配置,填写好function列,直接生成芯片顶层端口和pad share功能。

image.png

可以对pad进行配置支持不同foundry和工艺节点的pad单元。

image.png

支持pinmux的生成,用来让各模块的功能 pin 和 pad 的输入输出功能构成可配置全连接网络的模块,还可以配置是否需要生成 GPIO 的功能逻辑(即检测 pad 的值或边沿并产生中断输出),和pad share模块搭配使用。

image.png

最后生成的文件包含rtl、寄存器文档、上面填写的设计表格、自动生成涉及到的寄存器模块的软件驱动程序C和js代码、clkgen/rstgen的架构图、dft等信息,crg的话还会生成参考sdc约束文件。而且生成的rtl还支持带FPGA分支。

其他生成代码的功能模块apb birdge、ahb/apb bus matrix、中断控制器模块等等,还有ezchip本身的一些IP NPU、NOC、RSIC-V等等。

整个集成平台是一个全在线SOC设计平台,可以接入入GIT/SVN自动更新IP和代码。

memory wrap的生成

在SOC设计中还有一块工作量非常大的活,就是memory wrap的生成,要支持所有IP的memory规格需求,类型,位宽,深度,pg选项等等,同时要生成仿真,综合,FPGA、加速器等多个平台的分支。工作量可以说是非常大。

ezchip这个也支持,memory studio也可以一键生成SOC需要的所有memory wrap,自动拼接物理memory,封装成IP所需尺寸。

image.png

上传你的memory配置文件支持,支持 JSON 和 verilog 格式,包含memory的名字、类型、位宽、深度等等模版信息。

image.png

然后选择项目对应的工艺库。选定工艺库后,可在工艺库中进行筛选,通过 memory 名字,位宽,深度筛选出本次要使用的所有 memory。如不进行筛选则默认当前工艺库中所有 memory 都参与本次拼接。

配置完成后就可以一键build生成项目需要的所有memory wrap代码了,并同时在云端自动存储备份。

怎么才能用得上呢

这个工具我也只是简单的体验了一下,很多细节还没来得及体验,ezchip官方网站的界面有试用版,感兴趣的朋友快来一起试用下看看。

https://www.ezchip.tech/#/lan...

image.png

点开之后有个demo,选中后就可以尝试试用了。

image.png

操作手册点击这里可以下载到。

image.png

B站也有一个介绍视频:【ezchip在线SOC设计平台教程】 https://www.bilibili.com/vide...

看到这里,是不是觉得整吧整吧,自己都可以开始做一颗SOC了,不过这个工具是2B的,个人用户肯定负担不起的,可以先试用下,觉得好用的话,看你们能不能说服自己的老板给你们买这个工具吧。

最后

SOC开发工具对一个初创公司来说,只能从0到1开发脚本工具,先讨论方案,再开发,再验证,只有经过实际项目的验证流片成功后,才能敢自信的说,完全可以用了。而往往这个过程需要至少一到两年的项目周期。而现在有了这样一个成熟的解决方案,可以节省很多资源。

这样一个成熟的解决方案,对于设计SOC的帮助来说,正如这家公司的名字所说,ezchip真的是easy to get your chip!

作者:硅农
文章来源:硅农

推荐阅读

更多IC设计干货请关注IC设计专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

推荐阅读
关注数
20176
内容数
1307
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息