在设计中,我们不断的给目录、源代码、文件、函数、变量、参数、类、封包进行命名与定义。当一件工作需要进行的次数非常之多,足以证明它是不可或缺的基本工作。我们一定要知道一点,基础工作是整个项目的基石。忽视抑或是轻视基础工作是一件非常错误的工作理念。我们需要用最严谨认真的态度去对待,同时作为回报,它将令你的作品显得专业而优雅。我们以信号的定义为例来说明这个问题。先来看这么一组代码:
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
cnt <= 0;
end
else if(add_cnt)begin
if(end_cnt)
cnt <= 0;
else
cnt <= cnt + 1;
end
end
assign add_cnt = flag1 || flag2 ;
assign end_cnt = add_cnt && cnt==x-1 ;
always @(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
flag1 <= 1'b0;
end
else if(en1)begin
flag1 <= 1'b1;
end
else if(end_cnt)begin
flag1 <= 1'b0;
end
end
always @(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
flag2 <= 1'b1;
end
else if(en2)begin
flag2 <= 1'b1;
end
else if(end_cnt)begin
flag2 <= 1'b0;
end
end
always @(*)begin
if(flag1)
x = 5;
else if(flag2)
x = 7;
else begin
x = 0;
end
end
这组代码的功能是当en1时计数5下;en2计数7下。在这组代码中,en1时flag1拉高;end-cnt时flag1变低;en2时flag2拉高;end-cnt时flag2变低;也就是在flag1或者flag2时加一,然后用flag1和flag2分别区分计数5下和7下。
尽管能够实现功能,但是在这组代码中,存在信号定义不明确得现象。flag1和flag2到底是什么意思?是表示flag1(flag2)时en1产生,还是en1(en2)时的计数状态?为说明这一点就得用到XXXXX (写加一条件时需要用到add_cnt = flag1||flag2)语句。
这里重申一下我们很重要的那条简单原则,一个代码(信号)只做一件事且做好这件事!按照这个规则,思路就是这样了:用一个信号flag1来表示计数状态,另外一个信号flag2表示是由en1还是en2所产生。那么,加一与否的条件非常简单,就是是否处于工作状态(flag1);同理,计数5或者7下只需要使用flag2一个信号。那么代码就会是这样:
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
cnt <= 0;
end
else if(add_cnt)begin
if(end_cnt)
cnt <= 0;
else
cnt <= cnt + 1;
end
end
assign add_cnt = flag1 ;
assign end_cnt = add_cnt && cnt==x-1 ;
always @(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
flag1 <= 1'b0;
end
else if(en1||en2 )begin
flag1 <= 1'b1;
end
else if(end_cnt)begin
flag1 <= 1'b0;
end
end
always @(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
flag2 <= 1'b1;
end
else if(en1)begin
flag2 <= 1'b0;
end
else if(en2)begin
flag2 <= 1'b1;
end
end
always @(*)begin if(flag==0)
x = 5;
else
x = 7;
end
看到这里,也许有些朋友会觉得:好像区别没那么大啊?ok,我们假设一下,如果程序中不仅是是en1,en2,而是有en3,en4……enX,又或者将来需要维护和优化,这两者的区别将会天壤之别。关于信号定义方面,《至简设计法》的作者潘文明给出了一个近乎完美的答案。例如在计数器代码设计中的“架构八步法”,第一步就是明确定义信号,用具体、清晰且无疑异的语句,定义每个信号所要实现的功能,以及重点描述信号的变化情况。
景芯SoC v4.0芯片全流程实战
终身辅导、一对一辅导是景芯SoC训练营的特色!
手把手教您搭建SoC,从入门到进阶,带您掌握架构、算法、设计、验证、DFT、后端全流程低功耗!直播视频不定期升级!让您快速超越同龄人!
报名微信:13541390811
景芯全流程课程如下:
景芯SoC设计 视频+文档+实战+一对一终身辅导(视频免费无期限)
景芯SoC验证 视频+文档+实战+一对一终身辅导(视频免费无期限)
景芯SoC中端 视频+文档+实战+一对一终身辅导(视频免费无期限)
景芯SoC后端 视频+文档+实战+一对一终身辅导(视频免费无期限)
进阶课程:
12nm 2.5GHz A72 低功耗DVFS实战培训(价格不到同行1/2)
DDR4/3项目实战培训(价格不到同行1/2)
小编逐步将教程、芯片设计全流程知识公布在知识星球,包括设计、验证、DFT、后端全流程知识以及大量技术文档,如果你和我一样渴求知识,不惧怕全流程的知识爆炸,那么欢迎您加入讨论学习,共同进步!
景芯主营业务是design service+一对一芯片辅导培训!
另外小编团队提供芯片Design Service,设计服务包括:
提供SoC、MCU、ISP、CIS等芯片设计、验证、DFT设计服务
提供DDR/PCIE/MIPI/CAN/USB/ETH/QSPI/UART/I2C等IP设计
提供7nm、12nm、28nm、40nm、55nm、65nm、90nm等后端设计
提供高校、企业定制化芯片设计服务、设计培训业务
手把手教您掌握SoC算法、设计、验证、DFT、后端全流程低功耗!
景芯SoCv3.0,是一款用于【芯片全流程实战培训】的低功耗多媒体SoC!
景芯SoC系统分为三个层次的功耗管理,并集成低功耗RISC-V处理器,集成ITCM SRAM、DTCM SRAM,集成MIPI、ISP、USB、QSPI、UART、I2C、GPIO等IP,采用SMIC40工艺流片。
高速接口的Verilog设计实现 从图像算法到RTL设计实现 MIPI、ISP的Verilog实现与仿真 Lint、CDC检查及UVM验证 SoC子系统的C驱动仿真 后仿真
SoC子系统级的UVM环境搭建 SoC子系统级的UVC环境搭建 SoC子系统级的VIP环境搭建 SoC子系统的DMA SRAM UVM联合验证 SoC子系统的UART UVC验证 SoC子系统的长包、短包、超长包、毛刺包、包头/包尾错误UVM验证
仅验证一门课程内容就抵得上其他培训机构的3-4门课程,价格仅其1/6
DFT设计(芯片级) Synthesis逻辑综合(芯片级) 低功耗UPF设计、CLP技术 formal验证等技术
(四)SoC后端课程,您将学会
低功耗设计
布局布线(低功耗FF flow) StarRC/QRC STA/Tempus 功耗分析 DRC/LVS设计
仅后端一门课程内容就抵得上其他培训机构的3-4门课程,价格仅其1/6
课程提供服务器供大家实践!带你从算法、前端、DFT到后端全流程参与SoC项目设计。请联系号主报名!联系微信:135-4139-0811
景芯SoC训练营图像处理的数据通路:
一键式完成C代码编译、仿真、综合、DFT插入、形式验证、布局布线、寄生参数抽取、STA分析、DRC/LVS、后仿真、形式验证、功耗分析等全流程。升级后的芯片设计工程V4.0 flow如下:
SoC一键式执行flow
MIPI DPHY+CSI2解码
数字电路中经典设计:多条通信数据Lane Merging设计实现
数字电路中经典设计:多条通信数据Lane Distribution实现
景芯SoC验证架构
景芯SoC全芯片验证架构:
景芯资深老学员告诉我,留学X国的硕士去外企某芯片巨头薪资是20万+美金!折合RMB超过140万,才25岁左右的小伙子!薪资超140万!
小编去看了glassdoor的工资:
1-3经经验的ASIC Engineer的工资报价有212K美刀,20万美刀。
7-9年经验的ASIC Engineer的工资报价有311K美刀,30万美刀。
当然具体薪资也是看每个候选人的水平以及岗位匹配度。
学历、项目经验都是非常重要的,期待着景芯战友们的更多捷报!走出国门,世界更精彩!景芯SoC项目的正能量之大,小编自己都很震撼,小编一定持续打磨,让景芯战友们一起成功!
景芯SoC UPF低功耗设计
全芯片UPF低功耗设计(含DFT设计)
景芯SoC训练营培训项目,低功耗设计前,功耗为27.9mW。
低功耗设计后,功耗为0.285mW,功耗降低98.9%!
电压降检查:
低功耗检查:
芯片的版图设计V1.0
芯片的版图设计V2.0
芯片的版图设计V4.0
低功耗设计的DRC/LVS,芯片顶层的LVS实践价值极高,具有挑战性!业界独一无二的经验分享。
ISP图像处理
dpc - 坏点校正
blc - 黑电平校正
bnr - 拜耳降噪
dgain - 数字增益
demosaic - 去马赛克
wb - 白平衡增益
ccm - 色彩校正矩阵
csc - 色彩空间转换 (基于整数优化的RGB2YUV转换公式)
gamma - Gamma校正 (对亮度基于查表的Gamma校正)
ee - 边缘增强
stat_ae - 自动曝光统计
stat_awb - 自动白平衡统计
CNN图像识别
支持手写数字的AI识别:
仿真结果:仿真识别上图7、2、1、0、4、1、4、9
景芯SoC 3.0 ISP:
景芯SoC V3.0 DFT方案:
如果您和小编一样渴求进步,想掌握芯片设计全流程,欢迎加入小编知识星球,疯狂成长,一起进步!早日成为芯片大佬!
景芯学员们,小编十分感谢你们对景芯的肯定、信任和支持,你们的鼓励让小编十分感激,小编一定更努力精心打磨景芯SoC实战课,我承诺,一定要做到零差评,让大家无论资深还是资浅都能从景芯训练营获得成长!