在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 8518|回复: 9

[求助] DW_mult_uns 是不是designware里的乘法ip呀?

[复制链接]
发表于 2011-4-4 11:16:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我用verilog写了个简单的代码:





  1. module gene_q41c(a,control,y);
  2. input [15 : 0] a;
  3. input [1 : 0] control;
  4. output[31 : 0]y;
  5. wire [15 : 0]a;
  6. wire [2 : 0]control;
  7. wire [31 : 0] y;
  8. reg [15 : 0] c;
  9. always@(a or control)
  10.   case(control)
  11.    3'd0: c <= 5677;
  12.    3'd1: c <= 896;
  13.    3'd2: c <= 1045;
  14.    3'd3: c <= 928;
  15.       default: c <= 1;
  16.   endcase
  17. assign y = a * c;
  18. endmodule



复制代码


乘法只有固定的几个数,用control来选择乘数,然后与输入信号a做乘法。

用DC综合后:
1)report_resources得到这样的结果:
===============================================================================
|          |              |            | Contained     |                      |
| Resource | Module       | Parameters | Resources     | Contained Operations |
===============================================================================
| r295     | DW_mult_uns  | a_width=16 |               | mult_59              |
|          |              | b_width=14 |               |                      |
===============================================================================

Implementation Report
===============================================================================
|                    |                  | Current            | Set            |
| Cell               | Module           | Implementation     | Implementation |
===============================================================================
| mult_59            | DW_mult_uns      | apparch (area)     |                |
===============================================================================
2)我想自己指定乘法器mult_59的实现类型,用set_implementation命令,结果如下:
dc_shell> set_implementation csa mult_59
1
dc_shell> compile
Error: Cannot find the synthetic library implementation 'csa' of module 'DW_mult_uns'. (SYNDB-20)
0

自己理解的意思是说,在synthetic库里边,没有用csa方式实现的DW_mult_uns。
查了一下,design ware里确实没有DW_mult_uns这样的东西,只有DW02_mult,DW02_multp,DW02_mult_2_stage这样的东西。

推测,DC很聪明的做了优化。拜托高手指教下:
DW_mult_uns这个东西,DC是根据我的代码优化出来的verilog中的“*”吗?
在我上边的verilgo中,能不能指定这个“*”用designware里最普通的乘法器来做呢?
O(∩_∩)O谢谢!
发表于 2011-4-4 20:20:17 | 显示全部楼层
恩,这个DW_mult_uns就是“*”,uns应该是universal的意思。
发表于 2011-4-4 20:41:31 | 显示全部楼层
DW 应该就是design ware的缩写吧。我理解uns应该为无符号(unsigned)的意思,因为写 * 来实现乘法时,两个数均被当成无符号数了。
Designware里面有很多乘法器可以选择,比如你想直接指定DW02_mult乘法器,也就是说例化时直接用DW02_mult(a,c,1'b0,y)代替y=a*c就可以了。 也许乘法器的名字记错了,你去DC的库里去查一查。
 楼主| 发表于 2011-4-4 20:55:22 | 显示全部楼层
回复 3# hahalucky

嗯,是这样的,我用的synopsis的库,但是使用report_synlib dw_foundation.sldb命令,返回的结果里并没有名字里带了“_uns”字样的的cell呀,我查我的网表却发现有好多名字里带_uns的module,好像这些module对应的就是verilog代码里的“*”"+"。
这是怎么回事呀?  难道是说明综合的时候没有用designware里的DW02_mult,它聪明的生成了更优化的实现?
发表于 2011-4-4 20:59:36 | 显示全部楼层
当然了,就像你没有指定门and,如果a,b,c都是1bit, 写了a = b *c ;那么它肯定综合出a=b&c一样。DC的强大就是因为它有很多库
 楼主| 发表于 2011-4-4 21:27:06 | 显示全部楼层
回复 5# hahalucky


    谢谢,这就明白点了。DC确实强大,自己的一点点小想法都让它做的那么优化了!
发表于 2011-8-27 20:44:31 | 显示全部楼层
回复 4# sdustyj


    report_synlib dw_foundation.sldb这个命令查看flundation.sldb库,为什么库里面也没有DW01的cla和rpl等信息?谢谢
发表于 2012-3-25 04:48:59 | 显示全部楼层
I would like to have dw ip library
发表于 2012-3-25 04:52:45 | 显示全部楼层
I would like to have dw ip library
发表于 2012-8-16 23:51:09 | 显示全部楼层
  顶起来~~~~~~~~~~~~~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-8 02:59 , Processed in 0.032164 second(s), 10 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表