代码书写规范解读.pptVIP

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
編碼規范-組合時序邏輯 Example1 : mult_if always @(sel or a or b or c or d) begin if (sel==2’b11) outi=d; if (sel==2’b10) outi=c; if (sel==2’b01) outi=b; if (sel==2’b00) outi=a; end 編碼規范-組合時序邏輯 Example2: case语句 always @(sel or a or b or c or d) begin case (sel) 2’b00: outi=a; 2’b01: outi=b; 2’b10: outi=c; 2’b11 outi=d; endcase endmodule 編碼規范-狀態機 状态机单独作为一个模块,与其他控制信号的产生分离开来; 使用define语句定义状态向量; 編碼規范-狀態機 如果时间比较紧,状态的编码采用one hot 编码。 指定缺省状态; 把组合逻辑和时序逻辑分为两部分; 編碼規范-狀態機 把组合逻辑和时序逻辑分为两部分; 編碼規范-頂層連接 在设计的顶层不要使用门级逻辑,要放在子模块里 Poor Good 編碼規范-可移植性 使用define(不用parameter)代替硬编码数字; Poor coding style: wire [7:0] my_in_bus; reg [7:0] my_out_bus; Recommended coding style: ‘define MY_BUS_SIZE 8 wire [‘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 謝謝! 龔子明 2008-03-06 主要內容 代碼風格 文件格式 注釋格式 縮進格式 接口順序 信號命名 編碼規范 代碼檢查 代碼風格-文件 文件名一律使用小写,文件命名和模块名一致,一个文件只能声明一个模块。 文件头要包括版权、单位、模块名称、主要功能、编码人员、版本号及修改日期、修改原因等信息。 代碼風格-注釋 每个always块前面都应该加上注释,说明此always块的功能,always块结束时在end后加注释说明结束的always块。 代碼風格-注釋 模块的每个端口和内部信号都应该在声明的时候加上注释,说明此端口或信号的作用,对于控制信号,应该分别说明信号高低电平所代表的意义。 代碼風格-注釋 case语句的每个分支也应该加上说明性的注释,语句结束时在endcase后注释说明结束的case语句。 代碼風格-注釋 if-else语句的每个分支也应该加上说明性的注释,在end后注释说明结束的if-else分支。 代碼風格-注釋 复杂的逻辑表达式要加注释。 对于简单的注释,采用“//”风格; 对于复杂的注释,采用“/*…*/”风格。 代碼風格-縮進 缩进量为两格,为了使不同编辑器显示效果一致,要用空格而不是tab缩进。 約定縮進量為2個空格 在.vimrc中加入: set ts=2 set sw=2 代碼風格-縮進 一行只写一句代码,如果代码太长可以分两行写,下行缩进与上行表达式右值对齐。 表达式的运算符和操作数之间要有空格。 代碼風格-接口順序 端口顺序 代碼風格-接口順序 对端口和连线进行分组并加注释 代碼風格-接口順序 分组方式可以灵活选择,可以按流水级,也可以按连接的模块来分组,以方便代码阅读维护为原则。 module输入输出列表要一行一个端口。 顶层模块连接时wire信号要说明其连接的模块端口,方便代码阅读和维护。 如://from control to alu opcode 代碼風格-信號命名 信号、变量、端口一律用小写字母命名,命名应该简短,并且能体现出该信号所代表的意义; 时钟信号用clk来命名。 Bus信号用[WIDTH-1:0]来命名; 信号的命名表示不同含义的部分要加下划线分开; 单

文档评论(0)

xiaofei2001128 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档