(1)Verilog 2001标准的端口定义:https://blog.csdn.net/David_xtd/article/details/78350835
(2)命名规则



(3)华为规则:
代码风格
1. 用有意义而有效的名字
有效的命名有时并不是要求将功能描述出来 如
For ( I = 0; I < 1024; I = I + 1 )
Mem[I] <= #1 32’b0;
For 语句中的循环指针I 就没必要用loop_index作为指针名
2. 用连贯的缩写
长的名字对书写和记忆会带来不便 甚至带来错误 采用缩写时应注意同一信号在模
块中的一致性 缩写的例子如下
Addr == address
Pntr == pointer
Clk == clock
Rst == reset
3. 用最右边的字符下划线表示低电平有效 高电平有效的信号不得以下划线表示,短暂
的引擎信号建议采用高有效
如 Rst_ Trdy_, Irdy_ Idsel.
4. 大小写原则
名字一般首字符大写,其余小写,但parameter, integer 定义的数值名可全部用大写
两个词之间要用下划线连接
如 Packet_addr, Data_in, Mem_wr Mem_ce_,parameter CYCLE=100
5. 全局信号名字中应包含信号来源的一些信息
如 D_addr[7:2] 这里的 D 指明了地址是解码模块(Decoder module)中的地址
6. 同一信号在不同层次应保持一致性
7. 避免使用保留字
如 in out x z等不能够做为变量 端口或模块名
9. 添加有意义的后缀 使信号名更加明确 常用的后缀如下

module
1. 没被调用的模块就是树根 那么在这个树根模块中 除了内部的互连和模块的调用外 尽量避免再 做逻辑 如不能再出现对reg变量赋值等 这样做的目的是为了更有效的综合 因为 在顶层模块中出现中间逻辑 Synopsys 的design compiler 就不能把子模块中的逻辑综合到最优
2. 不要对Input进行驱动, 在module 内不要存在没有驱动的信号 更不能在模块端口中 出现没有驱动的输出信号 避免在仿真或综合时产生warning 干扰错误定位
3. 用一个时钟的上沿或下沿采样信号 不能一会儿用上沿 一会儿用下沿 如果既要 用上沿又要用下沿 则应分成两个模块设计 建议在顶层模块中对Clock做一非门 在层次模块中如果要用时钟下沿就可以用非门产生的Posedge Clk_ 这样的好处是在 整个设计中采用同一种时钟沿触发 有利于综合 基于时钟的综合策略
4.
只有顶层包括IO引脚(pads) 中间层是时钟产生模块 JTAG 芯片的内核(CORE)
这样便于对每个模块加以约束仿真 对时钟也可以仔细仿真
5.
将关键路径逻辑和非关键路径逻辑放在不同模块
保证DC可以对关键路径模块实现速度优化 而对非关键路径模块实施面积优化 在
同一模块DC无法实现不同的综合策略
将相关的组合逻辑放在同一模块
有助于DC对其进行优化 因为DC通常不能越过模块的边界来优化逻辑
(4)其他:https://blog.csdn.net/k331922164/article/details/52166038
本文详细介绍了Verilog编程的代码风格,包括2001标准的端口定义、命名规则、华为公司推荐的编码规范,以及一些设计模块的最佳实践,旨在提高代码的可读性和综合效率。
1140

被折叠的 条评论
为什么被折叠?



