代码书写规范.ppt

上传人:s****8 文档编号:67557459 上传时间:2022-12-25 格式:PPT 页数:36 大小:659KB
返回 下载 相关 举报
代码书写规范.ppt_第1页
第1页 / 共36页
代码书写规范.ppt_第2页
第2页 / 共36页
点击查看更多>>
资源描述

《代码书写规范.ppt》由会员分享,可在线阅读,更多相关《代码书写规范.ppt(36页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、RTL CODING STYLE龔子明龔子明2008-03-06主要內容代碼風格文件格式注釋格式縮進格式接口順序信號命名編碼規范代碼檢查代碼風格-文件文件名一律使用小写,文件命名和模块名一致,一个文件只能声明一个模块。文件头要包括版权、单位、模块名称、主要功能、编码人员、版本号及修改日期、修改原因等信息。代碼風格-注釋每个always块前面都应该加上注释,说明此always块的功能,always块结束时在end后加注释说明结束的always块。代碼風格-注釋模块的每个端口和内部信号都应该在声明的时候加上注释,说明此端口或信号的作用,对于控制信号,应该分别说明信号高低电平所代表的意义。代碼風格-

2、注釋case语句的每个分支也应该加上说明性的注释,语句结束时在endcase后注释说明结束的case语句。代碼風格-注釋if-else语句的每个分支也应该加上说明性的注释,在end后注释说明结束的if-else分支。代碼風格-注釋复杂的逻辑表达式要加注释。对于简单的注释,采用“/”风格;对于复杂的注释,采用“/*/”风格。代碼風格-縮進缩进量为两格,为了使不同编辑器显示效果一致,要用空格而不是tab缩进。約定縮進量為2個空格在.vimrc中加入:set ts=2set sw=2代碼風格-縮進一行只写一句代码,如果代码太长可以分两行写,下行缩进与上行表达式右值对齐。表达式的运算符和操作数之间要有

3、空格。代碼風格-接口順序端口顺序代碼風格-接口順序对端口和连线进行分组并加注释代碼風格-接口順序分组方式可以灵活选择,可以按流水级,也可以按连接的模块来分组,以方便代码阅读维护为原则。module输入输出列表要一行一个端口。顶层模块连接时wire信号要说明其连接的模块端口,方便代码阅读和维护。如:/from control to alu opcode代碼風格-信號命名信号、变量、端口一律用小写字母命名,命名应该简短,并且能体现出该信号所代表的意义;时钟信号用clk来命名。Bus信号用WIDTH-1:0来命名;信号的命名表示不同含义的部分要加下划线分开;单词缩写遵循去掉元音字母保留辅音字母的原则

4、,如果有约定好的就用约定好的,比如address缩写为 addr;代碼風格-信號命名低有效的信号在命名末尾加_n来说明。寄存器的输出末尾加_r;异步信号末尾加_a;在不同阶段产生的信号后面加_pn,比如信号rdata在两个阶段都产生,两次寄存的信号可以分别命名为rdata_r,rdata_r2;寄存器的输入端口即寄存之前的数据在命名末尾加_nxt,比如状态机的次态命名为state_nxt.主要內容代碼風格編碼規范寄存器編碼規范組合&時序邏輯編碼規范狀態機編碼規范頂層連接編碼規范可移植性的編碼規范代碼檢查編碼規范-寄存器一般寄存器always(posedge clk)begin reg1=in;

5、end編碼規范-寄存器异步reset的reg。异步reset信号是全局信号,即系统复位信号。always(posedge clk or posedge rst_a)begin/ex5-20_proc if(rst_a=1b1)begin end else begin endend/ex5-20_proc編碼規范-寄存器同步reset的reg。同步reset信号是模块内部信号。always(posedge clk)/敏感变量列表不包含reset信号begin/EX20A_PROC if(reset=1b1)begin end else begin endend編碼規范-寄存器带使能的寄存器。al

6、ways(posedge clk)begin if(en=1b1)begin in_reg)组合逻辑使用阻塞赋值时序逻辑使用非阻塞赋值編碼規范-組合&時序邏輯case 语句、if_else语句和mult_if语句Case语句和if_else语句对应的电路图是一级多选器;mult_if语句是优先级编码,电路图是多级二选器结构。如果是无优先级的电路结构,推荐使用case语句;mult_if语句用于有晚到的信号,这个晚到的信号和输入端口a相连。編碼規范-組合&時序邏輯Example1:mult_if always(sel or a or b or c or d)begin if(sel=2b11)o

7、uti=d;if(sel=2b10)outi=c;if(sel=2b01)outi=b;if(sel=2b00)outi=a;end 編碼規范-組合&時序邏輯Example2:case语句always(sel or a or b or c or d)begin case(sel)2b00:outi=a;2b01:outi=b;2b10:outi=c;2b11 outi=d;endcase endmodule編碼規范-狀態機状态机单独作为一个模块,与其他控制信号的产生分离开来;使用define语句定义状态向量;編碼規范-狀態機如果时间比较紧,状态的编码采用one hot 编码。指定缺省状态;把组

8、合逻辑和时序逻辑分为两部分;編碼規范-狀態機把组合逻辑和时序逻辑分为两部分;編碼規范-頂層連接在设计的顶层不要使用门级逻辑,要放在子模块里PoorGood編碼規范-可移植性使用define(不用parameter)代替硬编码数字;Poor coding style:wire 7:0 my_in_bus;reg 7:0 my_out_bus;Recommended coding style:define MY_BUS_SIZE 8wire MY_BUS_SIZE-1:0 my_in_bus;reg MY_BUS_SIZE-1:0 my_out_bus;編碼規范-可移植性define 语句放在单独的一个文件中。define文件的命名格式如,pack/vpci_def.v 同一个文件可以面向不同的综合,如面向FPGA综合采用如下格式:ifdef FPGA .else .endif主要內容代碼風格編碼規范代碼檢查代碼檢查 所有编码结果需要进行Leda检查。不能存在Error对Error要做记录并说明原因通过DC综合检查不能存在Error謝謝!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com