1、基础模块IP化
2、模块参数化
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、宏定义区分代码分支
`ifdef FOR_ASIC_DESIGN
//ASIC logic
//参数定义
`else
//其他分支逻辑
//参数定义
`endif
`ifdef FOR_ASIC_DESIGN
generate
genvar i;
for ( i=0; i<DATA_WDTH; i=i+1 )
begin : SDFFY2D_INST
SDFFY_*CELL_TYPE* SDFFY2D //此处CELL_TYPE指的是具体的器件型号
(
.CK (i_dst_clk),
.D (i_src_din[i] ),
.Q (o_dst_dout[i]),
.SI (1'b0 ), //DFT 输入信号,由DFT工程师在网表中完成连线
.SE (1'b0 ) //DFT 使能信号,由DFT工程师在网表中完成连线
);
end
endgenerate
`else
reg [(DATA_WDTH-1):0] din_d0; //
reg [(DATA_WDTH-1):0] din_d1; //
assign o_dst_dout = din_d1;
always @( posedge i_dst_clk )
begin
din_d0 <= i_src_din;
din_d1 <= din_d0;
end
`endif
4、使用参数选择代码分支
在同一个宏定义分支下(例如同在ASIC或者FPGA项目),我们可能需要奖模块例化多份,以支持如下场景:
module xxxxx
#(
parameter FUNCTION_MODE = `MULTI_FUNCTION
)
(
//各类IO信号
) ;
generate
if (FUNCTION_MODE==`MULTI_FUNCTION) begin:MULTI_FUNCTION_CODE
//多function 逻辑
end
else begin:SINGLE_FUNCTION_CODE
// 单function 逻辑
end
end
endgenerate
5、IP接口隔离
6、std cell 隔离
我们通常会将std cell外包一层或者多层代码,这样就能将工艺与设计代码尽量分离。
module ip_bit_sync #( parameter DATA_WDTH = 1 // bit width)(in
put 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<DATA_WDTH; i=i+1 )begin : SDFFY2D_INSTSDFFY_*CELL_TYPE* SDFFY2D //此处CELL_TYPE指的是具体的器件型号( .CK (i_dst_clk),.D (i_src_din[i] ),.Q (o_dst_dout[i]),.SI (1'b0 ), //DFT 输入信号,由DFT工程师在网表中完成连线.SE (1'b0 ) //DFT 使能信号,由DFT工程师在网表中完成连线);endendgenerate`elsereg [(DATA_WDTH-1):0] din_d0; //reg [(DATA_WDTH-1):0] din_d1; //assign o_dst_dout = din_d1;always @( posedge i_dst_clk ) begindin_d0 <= i_src_din;din_d1 <= din_d0;end`endifendmodule
这个技术研讨会不要错过!
时间:2023年9月26日 9:00~18:00
地点:深圳湾万怡酒店4楼大宴会厅
(免费参会、免费午餐、参会赢好礼)
本文链接:http://www.28at.com/showinfo-27-9402-0.htmlIC设计思维:增加复用性的6种方法
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
上一篇: 纤薄高颜值,商旅轻出行,瑞亨65W超薄氮化镓充电器评测
下一篇: 用于太空应用的抗辐射电路设计与优化