自己平时不注意及不懂的代码规范

1.代码规范

1).信号名的长度小于28

2).每行总字符不得超过80个

3).同一个信号使用相同的信号名,无论它在哪一个模块

4).数组表示个体数量采用升序,如:

5).低电平有效的信号,添加_n后缀

6).复位低电平有效(一般认为电平由低到高易产生毛刺)

7).禁止使用_reg后缀(cdc抓取信号时会自动在寄存器信号名称后面添加_reg后缀,若编写代码时在信号名称后面添加_reg后缀会引起重复)

8).由某一信号产生的延迟信号名称使用后缀

9).模块例化名大写,使用U_模块名_补充信息的形式

10).代码缩进,使用空格而不是tab缩进(不同代码编辑器间tab长短不一,当与自己代码编辑器不同的人查看自己的代码时,代码中缩进无规律会带来阅读的不便),一般是四个空格

11).使用英文注释(不同代码编辑器对其他语言如中文编码编码方式不同,当与自己代码编辑器不同的人查看自己的代码时,代码注释会变成乱码而失去意义,也会带来阅读的不便)

12).多bit赋值用下划线隔开

13).禁止在内部模块使用双向端口

14).禁止使用三态门

15).禁止使用initial/task/force/timescale(仿真时会按项目文件中出现的最小的timescale设置进行,因此你要改变该设置需要修改项目文件中所有的timescale)等语句

16).不要在功能模块中改变时钟和复位,诸如帧间清零等的软复位操作应如下:

always @ (posedge clk or negedge rst_n) begin
    if (1'b0 == rst_n) begin
        /*omitting*/
    end
    else if (1'b0 == soft_rst_n) begin
        /*omitting*/
    end
    else begin
       /*omitting*/
    end
end

17).异步信号处理需要使用标准同步模块(诸如Vivado软件开发环境在进行时序分析时,会报告所有的异步信号处理路径,影响关键路径的判断)

18).操作数隔离,在不进行逻辑运算时,保持这些模块的输入不变,并应保证此时不影响程序正常功能

19).保持don't care信号最后的动态值

20).降低开关转换信号的逻辑深度

21).降低信号开关转换频率

2.疑问

2.1FPGA宏

现阶段开发中,FPGA设计正趋向模块化。模块可能在不同设备中有不同互斥的功能、或者在不同的FPGA厂商芯片中要调用不同的IP核,通常采用`define宏定义语句实现条件编译。代码示意如下:

`define xx yy

`ifdef xx
    /*omitting*/
`else
    /*omitting*/
`endif

2.2综合与不能综合(持续更新)

1).不能综合:

initial。

2).综合:

用可以被综合的语句有:for、fuction和task。

2.3门控时钟与时钟使能

(待更新)

2.4断言

(待更新)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值