设计风格(一)

上一篇 / 下一篇  2006-11-10 22:03:40 / 天气: 晴朗 / 心情: 高兴

1.      在每个源文件的开始,要注明模块的名称、作者、功能描述、日期、修改记录等。

2.      尽量多加注释。尽量对每个信号、寄存器、函数、进程都给出注释,特别是对于代码中比较复杂、难以理解的地方,要给出清楚的说明。否则,过一段时间自己也很难看懂。

3.      每行知写一条代码,每行的代码长度最好不要超过72个字符。这样的规定为了保证代码具有很好的可读性。

4.      使用缩进格式书写条件和循环部分代码,以增加代码的可读性。最好使用空格键而不是tab键,因为不同的编译器对tab的解释不一样。

5.      不要使用HDL的保留字来命名变量或信号。切记不要用VHDL的保留字用于Verilog,也不要用Verilog的保留字VHDl

6.      使用显示的方式来映射端口和常量,保持端口名称职间的对应。

7.      对于某个模块,如果需要为ASICFPGA写两套代码,则应将代码写在一个文件中,通过’ifdef来区分,如下所示:                                                                     

‘ifdef ASIC                                                               

//code for ASIC                                                      

‘else                                                                    

//code for FPGA                                                      

‘endif

8.      敏感列表写完整。如果always模块中的敏感列表不完整,则设计综合前的功能可能与综合后的功能不一致。还可能产生不希望的latch

9.      在一个always进程中,如果生成一个中间信号,该信号用来生成别的信号,则中间信号的生成语句必须放在前面。例如,为了生成o=a&b|(c&d)的功能,采用下面的写法是有错误的:           

module code_err(o,a,b,c,d);                                            

output o;                                                              

input a,b,c,d;                                                           

reg o,temp;                                                            

always@(a or b or c or d)begin                                        o=a&b|temp;                                                           temp=c&b;                                                            end                                                                   endmodule                                                              

这是因为在RTL级仿真时,temp会被看作是一个锁存器。在第一次运行时,用temp的当前值生成的o,在下一周期,再将本次的c&b的结果送给temp

10.   不要试图用function实现锁存器。Function仅用来生成组合逻辑。例如,下面的写法是错误的:

 function latch;                                              

input a,nrst,en;                                                   

if(!nrst)latch=1’b0;                                                   

else if(en)latch=a;                                                     

endfunction

摘自《数字IC系统设计》


FPGA/CPLD器件价格查询

TAG:

专注于Verilog RTL 引用 删除 wrenhawk   /   2006-11-12 23:16:41
挺好的,有借鉴意义。
yanshengyong的个人空间 引用 删除 yanshengyong   /   2006-11-12 09:20:48
5
写的很好
 

评分:0

我来说两句

显示全部

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

日历

« 2008-11-22  
      1
2345678
9101112131415
16171819202122
23242526272829
30      

数据统计

  • 访问量: 565
  • 日志数: 2
  • 建立时间: 2006-11-09
  • 更新时间: 2007-06-12

RSS订阅

Open Toolbar