veriloghdl-编程规范培训.pdfVIP

  • 0
  • 0
  • 约5.5千字
  • 约 12页
  • 2020-12-11 发布于江西
  • 举报
VerilogHDL 编程规范 1. 目的 本规范的目的是提高书写代码的可读性、可修改性、可重复性,优化代码综合和仿真 的结果,规范化公司的ASIC 设计输入。从而做到:①逻辑功能正确,②可快速仿真,③综 合结果最优,④可读性较好。 2.范围 本规范涉及VerilogHDL 编码风格,编码中应注意的问题,Testbench 的编码等。 本规范适用于Verilog model 的任何一级(RTL,behavioral,gate_level ),也适用于出于仿 真、综合或二者结合的目的而设计的模块。 3. 定义 FSM: 有限状态机 伪路径::静态时序分析(STA)认为是时序失败,而设计者认为是正确的路径。 4. 规范内容 4.1 VerilogHDL 编码风格 本规范适用于Verilog model 的任何一级(RTL,behavioral,gate_level ),也适用于出于仿 真、综合或二者结合的目的而设计的模块。 4.1.1 命名的习惯 命名包含信号或变量出处、有效状态等基本含义。 1. 有效而有意义的名字 有效的命名并不一定要求将功能描述出来。如 For (I=0;I1024;I=I+1) 指针I 就没有必要用loop_index 作为指针名。 2. 用连贯的缩写 例如: Addr address;Patr poiter ;Clk clock ; Rst reset 3. 用最右边的字符下划线表示低电平有效,高电平有效的信号不得用下划线表示。 如:Rst_, Trdy_, Irdy, Idel 4. 大小写原则 名字的首字符大写,其余小写(但是parameter, integer 定义的数值名要全部大写,例如 parameter CYCCLE=10. ),两个词之间要用下划线。例如:Data_in 5. 全局信号的名字中应包含信号来源的一些信息。如: D_addr[7:2] 中的”D”指明了地址是解码模块(Decoder module )中的地址。 6. 同一信号在不同层次上应保持一致性。 7. 避免使用保留字。如:in、out、x、z 等不能作为变量、端口或模块名。添加有意义的后 缀,使信号更加明确。如表1 所示。 表 1 4.1.2 Modules 1 .顶层模块应只是内部模块间的互连。 在没有被调用的(顶层)模块中,除了内部的互连和模块的调用外,尽量再做中间逻辑, 如不能再出现对reg 变量的赋值等。目的是为了更有效的综合,因为顶层模块中出现了中间 逻辑,Synopsys 的design compoler 就不能把子模块中的逻辑综合到最优。 2. 模块应在开始处注明文件名、功能描述、引用模块、设计者、设计时间及版权信息等。 例如:/*= = = = = = = = = = = = = = = = = = = = = *\ Filename: RX_MUX.v Author : DongSheng Liu Description: Called by: Top module Revision History : 2005-4-4 Revision 1.0 Company : whicc \*= = = = = = = = = = = = = = = = = = = = = */ 3.不要对Input 进行驱动,在module 内不要存在没有驱动的信号,更不能在模块端口中出现 没有驱动的输出信号,避免在elaborate 和 compile 时产生warning,干扰错误定位。!!! 4. 每行限制在80 个字符以内。 5. 用一个时钟的上升沿或下降沿采样信号,不能一会用上升沿,一会用下降沿。如果既要 用上升沿,又要用下降沿,则应分成两个模块设计。建议在顶层模块中对Clock 做一非门, 在层次模块中如果要用时钟下降沿可以用非门产生的 Posedge Clk_,这样做的好处使得在整 个设计中采用同一种时钟沿触发,有利于综合。 6. 在模块中要用明了的注释。对信号、参量、引脚、模块、函数及进程等加以说明,便于 阅读和维护。 7. Module 名要大写,且应与文件名一致。如:Module CRC( ); 8. 模块输出寄存器化(如图 1 所示),使得输出的驱动强度

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档