经典而不精简,简约而不简单

可综合性问题

上一篇 / 下一篇  2006-09-11 17:01:04 / 天气: 晴朗 / 心情: 高兴

可综合性问题

  硬件描述语言有一个很重要的特点,就是和综合性.除了无需综合的代码(如激励文件),应该按照可综合的风格来编写VERILOG代码.

不同综合器对语法的支持会有所区别,但大体上差不多.下面列举了一些可综合风格代码应遵循的要点(以SYNPLIFY为参考器);

1:当为时序逻辑建模,使用“非阻塞赋值”。
2:当为锁存器(latch)建模,使用“非阻塞赋值”。
3:当用always块为组合逻辑建模,使用“阻塞赋值”。
4:当在同一个always块里面既为组合逻辑又为时序逻辑建模,使用“非阻塞赋值”。
5:不要在同一个always块里面混合使用“阻塞赋值”和“非阻塞赋值”。
6:不要在两个或两个以上always块里面对同一个变量进行赋值。
7:使用$strobe以显示已被“非阻塞赋值”的值。
8:不要使用#0延迟的赋值。
9:在VERILOG语法中, if...else if ... else 语句是有优先级的,一般说来第一个IF的优先级最高,最后一个ELSE的优先级最低。如果描述一个编码器,在XILINX的XST综合参数就有一个关于优先级编码器硬件原语句的选项Priority Encoder Extraction. 而CASE语句是“平行”的结构,所有的CASE的条件和执行都没有“优先级”。而建立优先级结构会消耗大量的组合逻辑,所以如果能够使用CASE语句的地方,尽量使用CASE替换IF...ELSE结构。
10:XILINX的底层可编程硬件资源叫SLICE,由2个FF和2个LUT组成。 FF触发器  LUT查找表,ALTERA的底层可编程硬件资源叫LE,  由1个FF和1个LUT组成。

TAG:

allen aim at VERIFICATION 引用 删除 allenogz   /   2008-08-22 22:49:49
说来说去就是coding rule
找个某公司的coding rule就全有了
主要考虑的是综合器的脾气
阳光灿烂的天空 引用 删除 shidai   /   2006-09-13 11:17:49
还有很多,应该写具体些,让看的人能得到最大的实惠,个人意见
 

评分:0

我来说两句

显示全部

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

Open Toolbar