- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
代码书写规范
3.1 命名规范
3.1.1 HDL代码命名总则
具有意义的命名比注释要好得多。在写代码时,命名应给予充分的重视,任何命名都应遵循简洁、明了、准确的原则,切忌模棱两可。
3.1.1.1 文件名应由字母、数字及下划线组成
命名只能由26个英文字母(a-z,A-Z)、数字(0-9)或者下划线( _ )组成。不允许使用破折号和连续的下划线。
3.1.1.2 文件名的首字符必须是字母
第一个字符只能使用字母,不能使用下划线,避免与一些工具的冲突。
3.1.1.3 用下划线分开多个单词
由多个字组成的文件名,每个字要用下划线分开。在保证一致性的情况下,提高了在修改、验证和调试中的可读性。
举例:R_ram_addr。
3.1.1.4 IO信号与信号名的区分
为了增加可读性,便于阅读代码的人理解,输入输出口与内部的寄存器、变量名要区分开,采用加前缀的方法,且统一用大写字母。如:
I_sigan1 , // 表示是输入信号
I_signal2, // 表示是输入信号
O_signal3, // 表示是输出信号
reg [31:0] R_signal4; // 表示是本模块内部寄存器信号
wire [7:0] W_signal5; // 表示是本模块内部连线信号
3.1.1.5 Verilog文件名与相应的文档名一致
说明文档中所参考的Verilog RTL的信号及模块名必须与FPGA设计说明中命名相一致,代码和模块名字的注释也要保持一致,易于文档和代码之间的交叉参考。
3.1.1.6 常量用大写字母表示
常量必须大写,包括参量名、文本宏名也要大写,以易于变量识别。
3.1.1.7 net、variable、construct及instance以小写命名(前缀大写)
与建模电路密切相关的硬件结构,在命名时所有字母必须小写,避免混淆及错误的发生。
.net
.variable
.construct:如 function、task、named block、module
.instance: 如 gate、module
3.1.1.8 命名要唯一
construct、net、variable的命名要唯一,不能用大小写来区分命名,尽量用小写完整单词命名,禁用C语言编程中常用的大小写互用且缩写的单词命名方式。
原因:有些工具是不区分大小写的。
3.1.1.9 命名要望文生义
标识符的命名必须描述其目的、应当有意义,可以达到望文生义。
标识符的命名应该描述“对象做什么”而不是“过程怎么做”,要根据每个标识符做什么来命名,而不要以其如何实现来命名,这些标识符包括:net、variable、parameter、instance名、construct 名( 如 function、module、task)。标识符必须使用英文命名。
如果标识符需要多个意义独立的字符串命名,字符串之间要用下划线“_”隔开。
举例: W_set_priority 对net或variable
W_SBUS_DATA_BITS 对parameter
R_ram_addr_p3 任意的 pipeline stage 指示
3.1.1.10 低电平有效的信号的后缀为_n
当一个信号低电平有效时,它必须用后缀_n命名,_n的含义为negative;只是低电平有效的信号才能用_n结尾。
举例: I_reset_n
3.1.1.11 时钟信号名含_clk或_clock
时钟信号的命名必须含_clk或_clock,并要求在信号名中再加入该信号速度的指示,非时钟信号的命名不能含有clock或clk。
举例:I_system_clk_32M,I_ram_clk_8k或I_system_32M_clk, I_ram_8K_clk
3.1.1.12 测试信号的后缀为_test
举例:R_parallel_clk_test
3.1.1.13 寄存器按照功能进行命名,注释需写明寄存器地址
采用功能命名时需要进行寄存器说明,指出其寄存器地址。
例:R_protocol_reg; //register address is 0x51
3.2 注释
对HDL代码的功能进行注释是必要的,注释语句是对上下文信息的补充说明。
3.2.1 其它注释
为描述HDL代码及其功能,注释说明是必要的,这有助于其它设计者理解和维护程序代码。
3.2.2.1功能块注释
对代码的每个功能块必须加以注释说明,说明其目的及功能,便于代码理解。
3.2.2.2 对不常用或不易理解的关键代码行进行注释说明
对不常用或不容易理解的代码及其使用限制要进行注释,说明其功能、
文档评论(0)