- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Verilog编码规范标准
Verilog编码规范标准
PAGE / NUMPAGES
Verilog编码规范标准
^`
Verilog 编码规范
(仅供内部使用)
拟制 :
xxx
日期:
xxx
审查 :
审查者
日期:
yyyy-mm-dd
同意 :
同意者
日期:
yyyy-mm-dd
版权所有 侵权必究
^`
订正记录
订正日期 订正版本 描绘 订正者
^`
目录
1
命名规范
6
2
代码编写规范
8
2.1
版面
8
2.2
编写代码规范
8
3
电路设计规则
16
3.1
时钟
16
3.2
复位
17
3.3
防止 LATCH
18
3.4
防止组合反应
18
3.5
赋值语句
18
3.6
case语句和 if-then-else 语句
18
3.7
状态机
19
3.8
异步逻辑
20
4
模块区分
21
5
提升可移植性的编码风格
21
5.1
采纳参数化设计
21
5.2
采纳独立于工具平台和工艺库的设计
22
5.3
尽量使用已经获得考证的 IP
22
6
其余一些设计建议
22
7
附件
24
8
参照文档:
28
^`
^`
基来源则:简单,一致,可重用。
简单指尽量使用简单的语句, 尽量使用简单的设计, 尽量使用简单的时钟, 尽量使用简单的复位。
一致指尽量保持代码风格一致,尽量保持命名一致。
可重用指有成熟的 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
等等
?
信号命名尽量不要使用孤立的、小写的英文字母
L
^`
代码编写规范
2.1 版面
语句独立成行,增添可读性和可保护性。
行的长度
保持每行小于或等于 72 个字符。由于有的终端或打印机每行不可以超出 80 个字
符。规定 72 个字符是为了留出边空,提升可读性。还有一个原由是为象 vi 这样的编写器留有显示行号的地方。
用回车来切割超出 72 个字符的行,并且在下一行用缩进来表示该行是前一行的持续。
缩进。
用缩进来提升续行和嵌套循环的可读性。
缩进采纳 4 个空格。
防止使用 TAB 键。不一样的编写器或用户环境使得
缩进的杂乱。有一些工具能够将 TAB 替代成空格。
TAB
的地点差异很大, 造成
(建议)使用说明
使用说明来解说端口、信号、信号组、 always 块、函数等。说明应当放在它所描绘的代码的邻近。说明应当简洁简要,并足够说明问题。防止说明凌乱。显
文档评论(0)