很多芯片在设计之初,就已经考虑如何增加代码的复用性,尽量减少工作量,降低错误概率。 增加复用性的几个场景:
不同项目之间的代码复用性
不同工艺之间的代码复用性
同一个模块例化多份,分别工作在不同模式下
同一个项目不同环境(rtl验证,fpga demo 验证)之间的代码复用性
本章节将简单谈谈几种增加代码复用性的方法。
1、基础模块ip化
在各家asic/fpga项目的代码目录中,我们经常能看到各类小的基础模块,例如各类跨时钟模块、各类调度仲裁模块、各类ram读写模块、各类总线接口模块等等。它们可能命名为share_ip_*或base_ip_*或cmn_ip_*,又或者其他名称,几乎每个设计者都需要用到这些基础模块。 我们在需要实现其相关功能时,只需要例化模块即可,简单高效,有降低了bug概率。
2、模块参数化
在进行模块设计时,我们需要尽量保证模块参数化,尽量避免使用立即数(例如10’d0)。 被参数化的信号可能是数据位宽,用户数量或者其他类型的信号。
module ip_bus_sync #( // parameter data_wdth = 16 , // parameter ini_value = {data_wdth{1'b0}} //)( input i_src_clk , // input i_src_rst_n , // input [data_wdth-1:0] i_src_din , // input i_dst_clk , // input i_dst_rst_n , // output reg [data_wdth-1:0] o_dst_dout // );//逻辑代码endmodule
3、宏定义区分代码分支
asic项目的代码一般至少有两个版本:asic版本和验证版本(fpga/加速器)。部分公司还会同时出两个系列的芯片,asic系列和fpga系列。因此我们通常需要通过宏定义区分不同的代码分支和参数
`ifdef for_asic_design //asic logic //参数定义`else //其他分支逻辑 //参数定义`endif `ifdef for_asic_designgenerategenvar i;for ( i=0; i
4、使用参数选择代码分支
在同一个宏定义分支下(例如同在asic或者fpga项目),我们可能需要奖模块例化多份,以支持如下场景:
case1:同一个模块,工作在同的模式下,为了节约资源,只需要保留对应模式的代码逻辑。 case2:同一个模块,其支持的功能数量不同,所需要的ram等资源也不相同,需要例化不同规格的ram。
module xxxxx#( parameter function_mode = `multi_function )( //各类io信号) ;generateif (function_mode==`multi_function) begin:multi_function_code //多function 逻辑 endelse begin:single_function_code // 单function 逻辑 end endendgenerate
5、ip接口隔离
不同vendor的ip的用户侧接口大概率是不一样的,为了避免因为ip替换导致的大量代码修改,可以在设计之处就考虑将ip接口隔离。例如通过2类接口转换模块(控制类和数据类),将所需要的控制信号和数据流信号转换成通用的内部信号,这样无论怎么替换ip,都只需要修改少量代码。
6、std cell 隔离
我们通常会将std cell外包一层或者多层代码,这样就能将工艺与设计代码尽量分离。
常见的有bit同步器,ram,clk-gating,clk mux等模块。如下是单bit同步器的案例。
module ip_bit_sync #( parameter data_wdth = 1 // bit width)(input wire i_dst_clk, // destination clockinput wire [(data_wdth-1):0] i_src_din, // data inputoutput wire [(data_wdth-1):0] o_dst_dout // data output);`ifdef for_asic_designgenerategenvar i;for ( i=0; i
简易红外线检测器,Simple infra-red detector
彩虹股份预计半年度净利润亏损约2.5亿元至2.9亿元
海康威视发布低功耗摄像机系统解决方案
Python因为AI成了最受欢迎的语言?
华为980相当于骁龙的什么处理器
谈谈几种芯片设计增加代码复用性的方法
使用诸如碳化硅(SiC)等材料的宽禁带半导体技术正在兴起
ADI 技术文章:优化电源测量设置
中关村给出1500-2000元区间热门手机排行榜:荣耀8登顶、努比亚z17mini既然第二
5G对笔记本电脑有什么影响?有哪些5G笔记本?
ETC还有哪一些需要整治的
继电器术语含义及问题解答
传日本更可能实施对光刻/薄膜沉积设备的出口管制
简易光发射机电路图大全(晶振调频/彩色电视/音频发射机电路图详解)
为什么多层PCB如此广泛使用 它的优势在哪里
AppSheet推出了新的无服务器产品工具来自动化服务内部的流程
电容器入门教程
一般灯丝供电电路
华为将于6月2日发布鸿蒙手机操作系统 EMUI官方微信更名为HarmonyOS
亚马逊无人机配送获FAA批准,全美第三家获准运营无人机送货的公司