怎样写Verilog代码(1)

上一篇 / 下一篇  2007-03-27 14:10:14 / 天气: 晴朗 / 心情: 高兴

1. 在每个文件的开头加上文件头。格式如下:

//******************

//

//copyright 2007, DTK

//all right reserved

//

//project name: : project_name

//filename   : file_name

//author     : myname

//data       : xxxx/xx/xx

//version    : 1.0

//

//module name : module_name

//abstract    : xxxxxxxxxxxxxxx

//

//modification history

//---------------------------------

//&Log&

//

//*************************

确定代码里面的每个文件都添加了该文件头。该文件头包含的信息有公司名称、项目名称、代码作者、代码的创建日期、代码的名称、模块名称、对代码的每次的修改情况。通过添加该文件头,可以极大的方便对代码的管理和控制。

 

2.在每个always里面加上label

Example

always @(posedge clk)

begin: ENCODER_REG

   

   

end

加上label以后,在综合的时候,design compile会根据该label来综合。并且可以根据label来进行调用等其它处理。本例中的labelENCODER_REG

需要注意的是,label名字不要重复。

 

 

3.每个文件下面只有一个模块。

不要在文件中使用include调用代码。如果使用了,会对从底向上的综合造成影响。

避免多个模块在同一个文件之中。

避免多个function或者task在同一个模块中。

将代码和调用分开在不同的文件中。专门成立一个文件,用来调用模块。列如:

fv_adder.v

---------------------

`include "/home/design/sum.v"

`include "/home/design/ecc.v"

`include "/home/design/top.v"

-----------------------

 

 

4.给代码加上合适的注释。合适的注释可以提高代码的可读性,缩短测试debug的时间,以及让代码更加规范。

对每个模块的输入和输出添加注释;

对每段逻辑添加注释;

对模块中的每个中间信号添加注释;

对每个模块的功能添加注释;

example1

always @( poesege clk ) begin : TIME_DELAY

if ( !rst_) begin

data_delay_2reg <= 1'b0;

data_dalay_1reg <= 1'b0;

end               //to delay data_in two clock time, to fix xx_xxx module timing;

else begin

data_delay_2reg <= data_delay_1reg;

data_delay_1reg <= data_in;

end

end

上面的列子是对逻辑功能添加注释。

 

example2

input      [3:0]             data_bus;                            //this signal is fifo data out;

input                    counter_enable_signal;         //it is 8 bit counter enable;

output                  fifo_enable;                         //fifo enable signal;

上面的注释,是对模块的输入输出添加的注释。

 

 

5避免snake path出现在路径中

在路径中出现snake path的话,会导致综合工具无法对该路径的逻辑进行优化。

 

在上面这个图中,组合逻辑被分为两个部分分别连接到两个模块中。对于综合工具(比如design compiler)而言,无法将这些组合逻辑进行优化处理。特别是在一些高速设计中,一些长的snake path会严重的影响到电路的性能,极大的增加组合逻辑的级数。所以在设计的时候我们一定要尽力避免出现snake path


FPGA/CPLD器件价格查询

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2008-12-01  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 630
  • 日志数: 4
  • 建立时间: 2007-03-27
  • 更新时间: 2008-09-27

RSS订阅

Open Toolbar