代码审查记录文本_第1页
代码审查记录文本_第2页
代码审查记录文本_第3页
代码审查记录文本_第4页
代码审查记录文本_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

密级:部公开文档编号:****-****-****(文控补充)代码审查文件状态:文件标识:[]草稿当前版本:[]正式发布作者:董扬辉[]正在修改完成日期:2015-11-5怡化金融设备工程中心对本文件资料享受著作权及其它专属权利,未经书面许可,不得将该等文件资料(其全部或任何部分)披露予任何第三方,或进行修改后使用。

版本变更记录表版本作者修改日期修改容备注(审查围)1.0董扬辉2015/11/19编写容2015.7.1-2015.11.20目录TOC\o"1-5"\h\z\o"CurrentDocument"概述 2测试对象 2测试目的 2测试流程 2代码的工具测试和人工检查 2\o"CurrentDocument"代码审查结果统计 3风险等级 3代码审查结果 3代码审查详解 3概述测试对象由董扬辉所编写的所有代码。时间节点为2015年7月1日至2015年11月20日。测试目的规代码风格,不断提高代码质量。包括:代码的风险评估和警告审计;代码的鲁棒性和可复用性评估;代码的易读性和可维护性;代码风格的统一;测试流程代码的工具测试和人工检查⑴ISE编译环境或Codifferous(2)资深专家代码审查结果统计风险等级一般代码审查结果功能实现;可读性还需加强;代码风格还需修改。代码审查详解2.3.1寄存器定义不当reg[7:0]rsr=8'bO;Ireg[7:D]rbr=81bO;reg[3:0]no_bits_rcvd=4'bO;regRxDO=11bO;regZ^xDl一UbO;FPGA在上电时全局复位时钟将会实现寄存器定义时的值。但是这种做法并不值得推荐,我们需要每个寄存器进行局部复位。即在每个块语句复位逻辑中赋初值。详见WP272(v1.0.1)March7,2008--<<GetSmartAboutReset:ThinkLocal,NotGlobal>>,2.3.2不在if语句中进行过多运算if(OverSanpleC'nt——OverSampleCntnan■1)IBaud!GTick《=11bl;elseBaudlGTickc=11bO在判断语句中尽量不要做运算,简单的加减法可以适当使用。但是如果是比较复杂的除法则可以将此值定义为参数。否则只会增加资源的浪费。2.3.3initial使用时尽量不使用非阻塞式赋值initialbegin(wraddraddrvar)<={IG'bO,16^0};(minfresult]/=maxresmaxres}」rd.en.rd.addr]<=(1'dO,16^0};addrt.mprdrdy)<=(IG'bO,11bO};end在实际XST中intial使用非阻塞时赋值是可以正常编译和使用。但是在假如initial块中的和always块的复位中对同一寄存器操作不同的值,并且都是采用非阻塞式赋值时modelsim就会报错。所以想要用initial时需采用阻塞式赋值方法立即赋值。在有复位的条件下尽量不要使用initial。若是有状态机可以加initial块初始化状态机保证在无复位或复位失败的情况下保证状态机初始状态。2.3.4不使用状态机作为判断条件always(posedgeclk24m)beginIif(rst|ciridclr)c;at_rdy 11oO;elseif(LDC_STATE—TIM_GZK_RE)beginif[seq_cnt—81dO)d.at_rdy<-11bOelseif(seq_cnt>81d32)dat_rdy11blendend原因:资深专家如是说,暂不明。2.3.5状态机不能出现在拼接符中|asdi「bsdi}(1TbO,r1Tb0};stusydatL6tmp<=(1Tb0716ThO};enttiksLDCSTATZ}c(1Tb0.rIDLE};(seqent,endclr(8Td0r1Tb0};原因:资深专家如是说,暂不明。2.3.6输出不能作为判断条件因为输出时通常都要用寄存器进行输出,输出时在此时判断可能会造成亚稳态。2.3.7名称禁用大小写混用LocaLparain —50_000_000IlocalparajuBai^c=11520?;LocaIparamOversample一16localparamOverSampLeCntnun SYSFREQBaudOversample多个parameter可以使用一个代替,每个使用逗号代替。2.3.8变量位置定义wire[1.4■J]wvbit1€.wvdatlGwv_pack_endwv_ram_wvackdatwv_dat;acktr|.iart_rxuart_rx_uut〔.rst(L'dO.clk2^m■(clk24m)E.rxd(rxd.rx_dr:e(w_xx_G.ne.rxdat(wvrxdat};在模块中只要一个always块或例化元件中没有在前一模块中用到。则可以将变量定义到每个块或元件的前面,便于修改。若是在变量存在交叉现象则必须在模块的顶端定义。L1VUeULJ—I-JLWi—LJLjt±LJLipr!//alway5@(po55dgeelk} 〃无法抓到半个时钟周期的豚冲作为触发信号j//begin, //if(-clk_en)dl,d2? (11Tbz];1//else -{dlfd2}<=(fflf.dl};9//endclk_-n<=1'bO;(clk_crt== 、1'bl:11bfl;diT_rx_tir.pl<-dcT_rx_tnpddi_ix- 1bO,dat_ix_tmpl[4li]H^t_Lxdai_frzin_5en_VQ1id《=\;clk_cnt—?'diclk_crt==£'关)我ch_cnt—CE1_CNT_DONE}?1^1:1'bOdai_vaildJiup_edge_f22jLMl11dO:。口电口Fse二■/spi/L己巴r¥hit■占・v"_ine349Indicesinpart-selectofvectorregfidat_rx_tnipl1ai/mHizFjsuiFLEe^Flzrir1thiukdmtm.v"line248IllBgalrighthandsideofblackingaE-signnient解决1//asoLgrdat_rx=(jp_edqE_ff2)?■{41bj,dat_rx_tmp1'4:151:dat_rxrassignclatrx=datrxtmp1;2.4.1闪退assignorich[1^321 :0+G2] = {orich.1 1cTd.0}zori^ch[2^321 1+G2] = {ori^cli^ 16Td.0}zori^ch[3^32-1 :2*32] = {ori^cliS 16Td.0}zori^ch[<^32-1 3*32] = {ori[c!h4 16Td.0}zori^ch[5^32-1 :4*32] = {ori^cliS 16Td.0}zori^ch[6^32-1 5*32] = {ori^che 16Td.0}zori^ch[7^32-1 :6*32] = {ori^cli? 16Td.0}zori^ch[8^32-1 7*32] = {ori^cliS 16Td.0}zori^ch[5^32-1 :S*32] = {ori^cli^ 16Td.0}z| ori^ch[10^^k-l:9^:->.] ={ori^chlO.16'dO};|ori^ch[l:l 10*]={ori^chll16(d0}rorCch[12*3/-1: ={orCchlS,J6(dO);// ConibinatorLalLogico£STATE always(posedgecL:k)3toegin同一assign有多个分号会导致闪退。2.4.2多个XDC约束规则多个XDC约束规则第一个约束文件优先读取,然后依次读取。鞭―':setpropertyI0S2AMDARDLVCMOS3.3[getporr.othn?clkr.L|set_propertyPACKAGEPINN18[geBjports(zhicsn].jset_propertyI05TMDARDLVCMO533[geCSEL.2setpropertyPACKAGEPINJ15[getports(~hichanneL语法错误会导致后面的管脚约束全部无效,在synthetic期间导致所在的模块全部被优化。2.4.4编译问题set_propertySEVERITY{Warning}[get_drc_checksNSTD-1]set_propertySEVERITY{Warning}[get_drc_checksRTSTT-1]set_propertySEVERITY{Warning}[get_drc_checksUCIO-1]在使用强制drc报警告情况下,一些意想不到被优化

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论