向导模式
注册
登录
会员
标签
帮助
DICDER
»
Verilog
» 在design中是否应该为综合的优化而放弃使用for循环?
‹‹ 上一主题
|
下一主题 ››
发新话题
发布投票
发布商品
发布悬赏
发布活动
发布辩论
发布视频
打印
[讨论]
在design中是否应该为综合的优化而放弃使用for循环?
cloud
版主
总资产
330 晶元
金币
30 金币
个人空间
发短消息
加为好友
当前离线
1
#
大
中
小
发表于 2007-11-18 11:42 PM
只看该作者
在design中是否应该为综合的优化而放弃使用for循环?
在综合区看到一个关于for循环的贴子,大都是不赞成使用For循环的,我觉得有必要拿出来讨论一下:在设计中到底应不应该使用for循环?
( P( \6 S) f, P; U/ i* T n
首先说明一点:语法上,for循环是完全可以综合的,只是for循环有它有一些特点,使得是否应该在设计中使用for循环一直有争论.
* h- g7 i' g5 g4 E
反对使用for循环的理由是for循环会产生N个类似的电路,不利于综合工具优化,影响综合结果。这是有一定道理的,我不知道综合工具的算法是怎么实现的,不知道有没有方法对这N个相同的电路模块进行优化,但是,在今天芯片规模日益增大,工艺水平不断进步的情况下,增加一点面积相对于使用for循环而得到的好生来说,我觉得是值得的。使用for循环至少可以获得以下几个好处:
7 q' h% X( l3 X; @' G* j
1.使代码看起来简洁,容易检查。
) t$ Z U7 w4 s z9 K
2.书写起来方便,不用敲N组相似的命令。
1 K8 w! r/ A" a, V
3.可以防止笔误,类似的东西写上100多遍,难免不出错,而使用for循环,只要找到规律,就不会出错
( i+ ^8 C; s k# M/ F
4.还有一大好处是使得design非常的scalarble。而scalarble就意味着TTM。而TTM对于很多公司来说甚至是最重要的,我相信做过产品的同志一定都对这点深有体会
/ Y! y& v5 x2 K3 Y: y# C
所以,我觉得只要使用for循环的时候心里清楚,for循环是把相同的电路复制N遍,小心谨慎地使用,而没必要一概而论地所for直接在design中打入冷宫,让其永世不得翻身!。我的观点是design中适当地使用for循环并不见得是坏事,只是使用的时候要心里清楚是怎么回事,谨慎地使用。
5 d- ^! `$ \6 ~+ N! F% E2 }, J
上述只是我个人的一些看法,欢迎大家各抒己见,一起讨论,共同提高!
; n5 K7 |* P; ?0 `
7 `2 Q T; `( ^$ L
[
本帖最后由 cloud 于 2007-11-18 11:43 PM 编辑
]
Better to light one candle than to curse the darkness.
UID
3486
帖子
96
精华
0
积分
330
总资产
330 晶元
发帖收入
718 晶元
推广收入
135 晶元
下载支出
0 晶元
金币
30 金币
头衔
阅读权限
100
在线时间
63 小时
注册时间
2006-11-25
最后登录
2008-10-6
查看详细资料
TOP
linda_0823
寒山舍人
小有名气
总资产
380 晶元
金币
30 金币
个人空间
发短消息
加为好友
当前离线
2
#
大
中
小
发表于 2007-11-26 09:31 PM
只看该作者
我们公司的CODEING STYLE中明确规定不能使用for语句~~
曾梦想仗剑走天涯,看一看世间的繁华。年少的心总有些轻狂,如今我四海为家……
UID
6270
帖子
50
精华
0
积分
380
总资产
380 晶元
发帖收入
455 晶元
推广收入
57 晶元
下载支出
10 晶元
金币
30 金币
头衔
Verification Engineer
阅读权限
50
在线时间
8 小时
注册时间
2007-3-19
最后登录
2008-6-30
查看详细资料
TOP
cloud
版主
总资产
330 晶元
金币
30 金币
个人空间
发短消息
加为好友
当前离线
3
#
大
中
小
发表于 2007-11-27 06:39 PM
只看该作者
那你们这公司的规定也有点太不近情理了....
7 a8 {- o5 d& Z8 x+ T, a, S: f, y
为什么不能用for 语句?有什么坏处?仅仅是规定?.......
3 ~2 G1 i" f6 E8 v
也由此可以看到,贵公司 的设计的可扩展性一定不怎么好......
Better to light one candle than to curse the darkness.
UID
3486
帖子
96
精华
0
积分
330
总资产
330 晶元
发帖收入
718 晶元
推广收入
135 晶元
下载支出
0 晶元
金币
30 金币
头衔
阅读权限
100
在线时间
63 小时
注册时间
2006-11-25
最后登录
2008-10-6
查看详细资料
TOP
hammingencode
见习会员
总资产
286 晶元
金币
30 金币
个人空间
发短消息
加为好友
当前离线
4
#
大
中
小
发表于 2007-11-27 11:44 PM
只看该作者
一个简单的办法
相同功能用for,和不用for综合一下看看!
UID
7676
帖子
6
精华
0
积分
286
总资产
286 晶元
发帖收入
200 晶元
推广收入
27 晶元
下载支出
14 晶元
金币
30 金币
头衔
Architecture Engineer
阅读权限
40
在线时间
1 小时
注册时间
2007-11-25
最后登录
2008-10-25
查看详细资料
TOP
cloud
版主
总资产
330 晶元
金币
30 金币
个人空间
发短消息
加为好友
当前离线
5
#
大
中
小
发表于 2007-11-28 09:26 PM
只看该作者
我试过呀,要分情况的,相同电路结构或只是换下连线,当然不会增加面积。而且我认变如果能够增加更好的可扩展性,能够缩短TTM,多花一点面积的代价也是值得的!
Better to light one candle than to curse the darkness.
UID
3486
帖子
96
精华
0
积分
330
总资产
330 晶元
发帖收入
718 晶元
推广收入
135 晶元
下载支出
0 晶元
金币
30 金币
头衔
阅读权限
100
在线时间
63 小时
注册时间
2006-11-25
最后登录
2008-10-6
查看详细资料
TOP
agressive
小有名气
总资产
315 晶元
金币
30 金币
个人空间
发短消息
加为好友
当前离线
6
#
大
中
小
发表于 2007-11-30 12:53 PM
只看该作者
这个太绝对了,用是可以用的,但是要看用的是什么器件,而且还要看你怎么优化~~
& \) C3 h+ t+ a! ]6 l+ O
我个人不推荐用FOR
UID
7020
帖子
45
精华
0
积分
315
总资产
315 晶元
发帖收入
260 晶元
推广收入
60 晶元
下载支出
30 晶元
金币
30 金币
头衔
Test Engineer
阅读权限
50
在线时间
10 小时
注册时间
2007-7-28
最后登录
2008-11-19
查看详细资料
TOP
linda_0823
寒山舍人
小有名气
总资产
380 晶元
金币
30 金币
个人空间
发短消息
加为好友
当前离线
7
#
大
中
小
发表于 2007-12-16 10:53 PM
只看该作者
公司规定不让用for自然也有他的考虑。因为并不是每一个员工都是对verilog有着特别深入的理解的,刚刚参加工作的人,如果之前写verilog的经验不是很丰富,根本不能了解每一个语句背后对应的是什么样的结构。所以公司自然是要采用最安全稳妥的方法。当然,这样的规定都是针对RTL级的。
0 ] \: P, ~# ^& n* E* f# I
5 _- T. K- ~9 V6 t
至于说可扩展性,不是用这一个语句就可以决定的吧?我们完全可以用别的方法来解决这个问题。
$ B2 i9 a2 i) z _
3 _7 N" {) ?" U! L( \
[
本帖最后由 linda_0823 于 2007-12-16 10:55 PM 编辑
]
曾梦想仗剑走天涯,看一看世间的繁华。年少的心总有些轻狂,如今我四海为家……
UID
6270
帖子
50
精华
0
积分
380
总资产
380 晶元
发帖收入
455 晶元
推广收入
57 晶元
下载支出
10 晶元
金币
30 金币
头衔
Verification Engineer
阅读权限
50
在线时间
8 小时
注册时间
2007-3-19
最后登录
2008-6-30
查看详细资料
TOP
ASIC
正式会员
总资产
343 晶元
金币
30 金币
个人空间
发短消息
加为好友
当前离线
8
#
大
中
小
发表于 2007-12-19 06:17 PM
只看该作者
回复 1# 的帖子
for循环只要边界固定就可以综合!
' I n! a: s( s
感觉for循环唯一的作用就是使得代码简洁.
$ F" r9 r1 A5 j* Q4 Z
for循环未必只用于复制电路
& v6 M5 N6 \8 w9 k" D( c4 p
比如译码电路,38译码器用case或if 会需要好多行
$ Q. u9 c; K3 p4 X3 q$ C5 i
而用for很简单
& h/ ~) W& P; H, ?7 e( l# a
always@(in)begin
1 {* g' y2 _1 `% t
out=0;
, l8 v- [( P4 z: z8 M
out[in]=1'b1;
$ H6 W0 o+ i5 O1 M- L
end
6 P! c ]% U2 Y: m
更多的译码器如4-16,还是一样的写法,很简明
5 T7 V7 V( F) a7 A' M
其实synopsys公司的coding style也介绍使用这样的方法.
UID
7296
帖子
13
精华
0
积分
343
总资产
343 晶元
发帖收入
355 晶元
推广收入
23 晶元
下载支出
12 晶元
金币
30 金币
头衔
Architecture Engineer
阅读权限
50
在线时间
3 小时
注册时间
2007-9-26
最后登录
2008-10-29
查看详细资料
TOP
cloud
版主
总资产
330 晶元
金币
30 金币
个人空间
发短消息
加为好友
当前离线
9
#
大
中
小
发表于 2008-1-21 04:21 PM
只看该作者
怎么都觉得你的公司“因为怕出错而规定不能使用for语句”有点因噎废食的感觉!
Better to light one candle than to curse the darkness.
UID
3486
帖子
96
精华
0
积分
330
总资产
330 晶元
发帖收入
718 晶元
推广收入
135 晶元
下载支出
0 晶元
金币
30 金币
头衔
阅读权限
100
在线时间
63 小时
注册时间
2006-11-25
最后登录
2008-10-6
查看详细资料
TOP
kiko66323
见习会员
总资产
112 晶元
金币
10 金币
个人空间
发短消息
加为好友
当前离线
10
#
大
中
小
发表于 2008-8-1 10:00 AM
只看该作者
for循环的用法是软件人员的思维, 作为一个硬件工程师,写每一条语句必须能够想象综合出来之后的样子,而不能为了所谓的简便来推荐使用for语句,只会给综合器带来麻烦。所以不推荐使用。
UID
9420
帖子
4
精华
0
积分
112
总资产
112 晶元
发帖收入
20 晶元
推广收入
0 晶元
下载支出
8 晶元
金币
10 金币
头衔
Architecture Engineer
阅读权限
40
在线时间
2 小时
注册时间
2008-7-21
最后登录
2008-9-25
查看详细资料
TOP
‹‹ 上一主题
|
下一主题 ››
设计工具
仿真工具
NC仿真
PLI扩展
综合工具
STA及形式验证
测试工具
后端工具
环境工具
FPGA工具
PCB工具
SOC设计
Testbench
设计脚本
外部存储器接口
时钟与复位
微处理器(ARM)
ALU Datapath
BOOT设计
DEBUG架构
功耗管理
视频系统
音频系统
通信系统
外设接口
I2C
SPI
ATA
UART
CAN
USB
Security
硬件描述语言
VHDL
Verilog
Vera
SystemVerilog
System C
IEEE1647 E语言
设计验证专区
IP设计
CORDIC
FIFO设计
编码风格
IP设计规则
I2C开发组
8051开发组
滤波器设计
数字PLL
验证讨论
灌水区
英语PUB
求职天地
说文解字
谈天交友
同城会
历史&新闻
论坛管理及活动
论坛公告及使用帮助
意见&建议
求文和求书区
控制面板首页
编辑个人资料
积分交易
积分记录
公众用户组
个人空间管理
升级个人空间
基本概况
流量统计
客户软件
发帖量记录
版块排行
主题排行
发帖排行
积分排行
交易排行
在线时间
管理团队
管理统计
提问的智慧
回答的智慧
I2C 总线设备接口开发【第二组】
DICDER会员群建立
推动良好的学习方法,建立友善的交流氛围
招聘各版版主
有关新版论坛和网站, 有什么建议和意见?
DICDER用户使用帮助