文档介绍:页脚下载后可删除,如有侵权请告知删除!
Verilog编码标准
〔仅供内部使用〕
拟制:
xxx
日期:
xxx
审核:
审核者
日期:
yyyy-mm-dd
批准:
批准者
日期:
yyyy-mm-dd
版权所有 侵权必究
页脚下载后可删除,如有侵权请告知删除!
修订记录
修订日期
修订版本
描述
修订者
精选文档,供参考!
页脚下载后可删除,如有侵权请告知删除!
精选文档,供参考!
目录
1 命名标准 6
2 代码编写标准 8
版面 8
编写代码标准 8
3 电路设计规那么 17
时钟 17
复位 17
防止LATCH 18
防止组合反应 18
赋值语句 18
case语句和if-then-else语句 19
状态机 19
异步逻辑 21
4 模块划分 21
5 提高可移植性的编码风格 21
采用参数化设计 21
采用独立于工具平台和工艺库的设计 22
尽量使用已经得到验证的IP 22
6 其他一些设计建议 23
7 附件 25
8 参考文档: 30
精选文档,供参考!
页脚下载后可删除,如有侵权请告知删除!
精选文档,供参考!
精选文档,供参考!
页脚下载后可删除,如有侵权请告知删除!
精选文档,供参考!
根本原那么:简单,一致,可重用。
简单指尽量使用简单的语句,尽量使用简单的设计,尽量使用简单的时钟,尽量使用简单的复位。
一致指尽量保持代码风格一致,尽量保持命名一致。
可重用指有成熟的IP尽量使用IP,设计的代码要尽量可重用。
精选文档,供参考!
页脚下载后可删除,如有侵权请告知删除!
精选文档,供参考!
命名标准
给信号命名就像给孩子取名字一样,有区别,有根源,有深度,还有一点,要简单,别冗长。
有区别指取名字不要一样,假设大家只有一个手机号码,那这个号码还能有什么用处?
有根源指取名字要能象姓氏一样,让人一看就直到是张家的后代而不是李家的。
有深度就是取名字要有涵义,张一,张二,张三虽然也是名字,但是请考虑一下被取名字人的感受。
简单点,几十个字母长的名字,打字的和看字的都累。
大小写规那么:只有parameter,`define和module名称才能享受大写。
Module 名应与文件名保持一致〔文件名是小写〕,假设不想在设计后面遇到麻烦的话。
不要尝试使用任何保存字,因为他们已经被保存了。
不要重复使用同样的名字去命名不同的数据。
〔建议〕对module名加〞_LVx〞的后缀,增强module名称的构造层次含义
如:设计顶层为TOP LEVEL,即LEVEL1,命名为QTRxxxx_LV1;
时钟模块,IO_PAD,CORE,为LEVEL2,命名为CLK_PROC_LV2等等;
CORE内子模块为LEVEL3,然后以此类推。
对于来自同一驱动源的所有时钟信号使用一样的名字。
对于低电平有效的信号,应该以_n结尾。
模块间相连端口名称要一致。
〔建议〕使用下表所列的命名缩写方式。
全称
名称
clock
Clk
reset
rst
clear
clr
address
addr
data_in
din
data_out
dout
interrupt request
int
read enable
rden
write enable
wren
count
cnt
精选文档,供参考!
页脚下载后可删除,如有侵权请告知删除!
精选文档,供参考!
全称
名称
request
req
control
ctrl
arbiter
arb
pointer
ptr
segment
seg
memory
mem
register
reg
〔建议〕使用以下后缀命名方式
全称
添加后缀
active low
_n
enable
_en
select
_sel
flag
_flg
delay
_dly
信号命名的两个词之间用下划线间隔,如ram_addr,cnt_ctrl等等
信号命名尽量不要使用孤立的、小写的英