欢迎来到天天文库
浏览记录
ID:38235438
大小:163.61 KB
页数:3页
时间:2019-05-27
《RTL设计中的Verilog代码风格》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、NO.2微处理机第2期Apr.,2013MICR0PR0CESS0RS2013年4月RTL设计中的Verilog代码风格冯海涛,王爽,周刚(中国电子科技集团公司第四十七研究所,沈阳110032)摘要:RTL设计中的Verilog代码风格对综合后的硬件结构起至关重要的作用,相同功能不同风格的代码在综合后可能会产生不同的结构,具有不同的timing和area。关键词:综合;触发器;锁存器DOI编码:10.3969/j.issn.1002—2279.2013.02.05中图分类号:TN4文献标识码iB文章编号:1002—2279(2013)02—0014一
2、O3VerilogCodingStyleofRTLDesignFENGHai—tao,WANGShuang,ZHOUGang(The47thResearch胁eofChinaElectronicsTechnologyGroupCorporation,Shenyang110032,China)Abstract:VerilogcodingstyleofRTLdesignissignificantforsynthesizedhardwarestructure.Thecode,withthesamefunctionbutdiferentstyle,maybe
3、generatesthecircuitwithdifferentstructure,timingandareaaftersynthesizing.Keywords:Synthesis;Flip—Flop;LatchelseDOut=1’b0:1引言—(2)if语句优先级由下向上,越靠近下面的输人每个代码编写者都有自己的编写习惯,而且都在综合时越靠近输出,如下例和图1所示。喜欢按照自己的习惯去编写代码。代码风格对综合Always@()后的硬件结构起至关重要的作用,相同功能不同风begin格的代码在综合后可能会产生不同的结构,具有不Data—Out=Da
4、ta—D;同的timing和area。这就是RTL设计工程师重视代if(Sel—A)Data—Out=Data—A;码风格的原因所在。在这里主要讲述一下组合电路if(Sel—B)Data—Out=Data—B;和时序电路中比较常用并需要特别注意的语句。if(Sel—C)Data—Out=Data—C;End2设计组合电路的代码风格DataD2.1if语句(1)if语句的比较条件不可以用“X”,仿真时DalaA“x”被看做unkown而产生错误的仿真结果;综合时“x”被看做false,产生与仿真相同的错误。例如:SelAif(In[7:O]=:8’b0
5、0xxllxx)D—Out=1’DataBSetBbl;DataCelseDOut=1’b0;—SeIC解决方法:If((In—A[7:6]==2’bOO)&&(In—图1if语句优先级由下向上A[3:2]==2’bl1))D—Out=1’bl;(3)if..·else⋯if语句优先级由上向下,越靠近作者简介:冯海涛(1980一),女,甘肃人,学士,工程师,主研方向:集成电路设计及验证。收稿13期:2012—10—082期冯海涛等:RTL设计中的Verilog代码风格·l5·上面的输入在综合时越靠近输出,如下例和图2所由于每次循环k都被看做一个常数,
6、所以不会示。综合出减法器。综合时循环链会被打开。上面的循Always@()环相当于下面的程序:beginWhen(k==3)Out—B[3]=In—A[0];if(Sel—A)Data_Out=Data_A;When(k==2)Out~B[3]=In—A[1];elseif(Sel—B)Data_Out=Data_B;When(k==1)Out~B[3]=In—A[2];elseif(SeI_C)Data—Out=Data—C;When(k==0)OutB[3]:In—A[3]:elseDataOut=DataD;—_3设计时序电路时的代码风格End
7、3.1非阻塞赋值在时钟沿触发电路中DataD由时钟沿触发的电路分为时钟上升沿触发DataC(posedgeCLK)和时钟下降沿触发(negedgeCLK);同时在时钟沿触发的电路中,赋值语句应该使用非SetC阻塞型。如下例所示:DataBregD;SelBregIntermediaVariable;—DataAalways@(posedgeCLK)SelAbegin图2if⋯else⋯if语句优先级由上向FIntermedia~Variable<=In—A&In—B;2.2case语句D<=IntermediaVariable;—无优先级,case的
8、条件必须列全(fullcase),如End果不能列全就写default值,否则同样会产生latch。3.2时
此文档下载收益归作者所有