TA的每日心情 | 开心 2019-11-19 15:19 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
verilog模块优化 / k3 C0 |4 y3 I$ R! {5 G2 {( v) `
+ n0 `' g D1 _ f; @1、资源共享: - B" @/ _* B8 b- m& e
当进程涉及到共用ALU时,要考虑资源分配问题。可以共享的操作符主要有:关系操作符、加减乘除操作符。通常乘和加不共用ALU,乘除通常在其内部共用。 1 W O- K0 G7 S7 p
2、共用表达式: " s. I" T1 n# ]1 P+ v5 s8 i( U
如:C=A+B;
2 h4 m# u) ~1 Z7 U( ]4 W2 QD=G+(A+B); ( \1 ^$ `- }9 Q9 O1 }
两者虽然有共用的A+B,但是有些综合工具不能识别.可以将第二句改为:D=G+C;这样只需两个加法器.
0 U( m, t, T% g$ ]( k8 X% q. ?3、转移代码: 8 c# D. A7 q K2 d( o4 x
如循环语句中没有发生变化的语句移出循环. / F7 G) G2 @% {4 R" @" e! p+ r
4、避免latch: ( ^+ V. f n" S0 Q6 [% d
两种方法:1、在每一个IF分支中对变量赋值。2、在每一个IF语句中都对变量赋初值。 4 F% k& o* b0 ^* t4 r2 U* Q* Z1 c# L" q
5:模块: . P8 f, B4 F5 \8 j/ B2 P2 `% U6 n2 y
综合生成的存储器如ROM或RAM不是一种好方法,只是成堆的寄存器,很费资源。最好用库自带的存储器模块0 l- d# ]3 k+ ]- x
|
|