第一范文网 - 专业文章范例文档资料分享平台

Verilog编码规范报告

来源:用户分享 时间:2025/10/20 2:08:55 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

如:

if (a == b) begin

v1 = 2'b01;

v2 = 2'b10; //v3 is not assigned end

else if (a == c)

begin

v2 = 2'b10; v3 = 2'b11; end

else begin

v1 = 2'b00;

//default赋值 //v1 is not assigned

v2 = 2'b00; v3 = 2'b00; end

(2)CASE语句

(a)所有的case语句都应该有一个default语句,避免产生Latch (b)(建议)不要使用casex、casez语句,综合工具不支持 ? 循环语句

(1)forever语句 (2)repeat语句 (3)while语句 (4)for语句

在可以用其它语句描述电路时,建议不要采用循环语句来描述。 ? initial语句

不要在RTL代码中出现initial 块

综合会将initial块忽略,使前仿真和后仿真不一致 initial begin ...... end

第 13 页 共 28 页

? always语句

(1)在使用always生成组合逻辑时,敏感表要列全,敏感表中也不能包含没有用到的变量。 Rule:

Combinational sensitivity lists should include 1)Any signal on right hand side of assignment 2)Any signal in if or case expression For example: ......

module sense_list_ex( b, c, d ); //PARAMETER

//INPUTS

input b; input c; input d;

//OUTPUTS

//INOUTS

//SIGNAL DECLARATIONS wire b; wire c; wire d; reg a;

//ASSIGN STATEMENTS

第 14 页 共 28 页

//MAIN CODE always @ (b or c or d) if (b==1’b1) a = c & d; else

if (c==1’b1) a = d;

endmodule //SENSE_LIST_EX

(2)对带异步清零端的寄存器的定义模板 always @(posedge clk_main or negedge rst_n)

if (rst_n == 1'b0) //此处统一采用rst_n == 1'b0形式而不采用(! rst_n) begin //形式,对相关寄存器清0(采用 # `u_dly<= 赋值) ...... end else begin

//对相关寄存器赋值(采用 # `u_dly<= 赋值) ...... end

采用时钟上升沿触发。

? 有限状态机(FSM)

(1)组合逻辑和时序逻辑分开描述;

// PART 1: COMBINATERIAL LOGIC FOR NEXT STATE always @(cur_state or full_new_fr or full or have_space) begin: OVC_FSM_NXT_ST case (cur_state) STDBY: begin

if (full_new_fr == 1'b1)

nxt_state = W_BLOCK; else if (full == 1'b1)

nxt_state = W_DSCD; else

nxt_state = cur_state; end

W_BLOCK:

第 15 页 共 28 页

begin

if (have_space == 1'b1) nxt_state = STDBY; else

nxt_state = cur_state; end W_DSCD: begin

if (have_space == 1'b1) nxt_state = STDBY; else

nxt_state = W_BLOCK; end default:

nxt_state = STDBY; endcase

end // OVC_FSM_NXT_ST

// PART 2: SEQUENTIAL LOGIC FOR CURRENT STATE

always @(posedge clk or `RST_EDGE reset)

begin: OVC_FSM_ST_TRANS if(reset == `RST_VALUE)

cur_state <= `DLY W_BLOCK; else

cur_state <= `DLY nxt_state; end // OVC_FSM_ST_TRANS

3 电路设计规则

3.1 时钟

? (建议)简单的时钟结构易于理解、分析和维护,而且容易产生好的综合结果。

最好是能够有单一的全局时钟,所有寄存器都在上升沿触发。 ? 所有子模块内部使用单一时钟单一时钟沿,如条件不满足时,必须注明原因,并

提出对综合以及布线的要求。 ? 设计中包含内部产生的时钟时,必须将所有需要的时钟在一个单独的模块中生成。 ? 如果不得不用混合的时钟沿,在综合和时序分析时确保能满足时钟精度最差情况

下的占空比。同时确保把假定的占空比写入用户手册。

在多数设计中,占空比是时钟树的函数,而时钟树的插入通常又依赖于具体的工艺。使用Core的芯片设计者必须检查实际的占空比能够满足Core的要求,也

第 16 页 共 28 页

搜索更多关于: Verilog编码规范报告 的文档
Verilog编码规范报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c2em423a4fw4ddq3430jm4g4gh0kzl900yij_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top