谈谈几种芯片设计增加代码复用性的方法

2023-09-12

很多芯片在设计之初,就已经考虑如何增加代码的复用性,尽量减少工作量,降低错误概率。 增加复用性的几个场景>
不同项目之间的代码复用性,不同工艺之间的代码复用性,同一个模块例化多份,分别工作在不同模式下,同一个项目不同环境(RTL验证,FPGA demo 验证)之间的代码复用性,本章节将简单谈谈几种增加代码复用性的方法。
1、基础模块IP化
在各家ASIC/FPGA项目的代码目录中,我们经常能看到各类小的基础模块,例如各类跨时钟模块、各类调度仲裁模块、各类RAM读写模块、各类总线接口模块等等。它们可能命名为share_ip_*或base_ip_*或cmn_ip_*,又或者其他名称,几乎每个设计者都需要用到这些基础模块。 我们在需要实现其相关功能时,只需要例化模块即可,简单高效,有降低了bug概率。
2、模块参数化
在进行模块设计时,我们需要尽量保证模块参数化,尽量避免使用立即数(例如10’d0)。 被参数化的信号可能是数据位宽,用户数量或者其他类型的信号。
3、宏定义区分代码分支
ASIC项目的代码一般至少有两个版本:ASIC版本和验证版本(FPGA/加速器)。部分公司还会同时出两个系列的芯片,ASIC系列和FPGA系列。因此我们通常需要通过宏定义区分不同的代码分支和参数

文章推荐

相关推荐