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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7651|回复: 6

[解决] dc综合时怎样指定使用cell

[复制链接]
发表于 2012-7-2 15:22:05 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 zqszjmzy 于 2012-7-10 10:23 编辑

例如:小弟写了一个verilog文件:
module transgate (sig,control,out);
input sig,control;
output out;
assign out=(control) ? sig : 1'b0;
endmodule
也就是说control为高电平的时候out=sig,control为低电平的时候,out输出0。
使用DC综合时,网表文件是
module transgate_0 ( sig, control, out );
  input sig, control;
  output out;
  AN2 U2 ( .I1(sig), .I2(control), .O(out) );
endmodule
也就是说DC使用了一个与门。

我现在的元件库里有一个mux2,我想用这个cell来实现,我把上面这个.v文件改成:
module transgate (sig,control,out);
/* triangle-like circuit */
input sig,control;
output out;
MUX2 tr(out,control,1'b0,sig);
//assign out=(control) ? sig : 1'b0;
endmodule
但是DC综合时网表文件没有变化还是用AN2来实现。请问有什么办法能用MUX2来实现。
我理解DC有自己的规则来选择cell,请问是不是需要做某种设置?
发表于 2012-7-2 18:55:21 | 显示全部楼层
mux的延时和面积什么的都没能其它普通逻辑门好,所有DC就优化了,对更改后的transgatey设置set_dont_touch ,就能保留你指定的结构,但这样肯定没DC优化的好
 楼主| 发表于 2012-7-2 19:29:13 | 显示全部楼层
回复 2# my2817


    请问这个set_dont_touch 用法是什么?在命令中输入set_dont_touch transgate(transgate是模块名称)就可以是吗?
发表于 2012-7-2 20:08:30 | 显示全部楼层
你看下其帮助文档就明白了



  1. dc_shell>man set_dont_touch


复制代码
 楼主| 发表于 2012-7-2 22:35:03 | 显示全部楼层
本帖最后由 zqszjmzy 于 2012-7-2 23:07 编辑

回复 4# my2817


   我还有一点不明白,我有好几个verilog文件,它们之间是有层次关系的,每一层里都会有模块FA的实例化,比如add1,add2,add3。那么我想禁止所有这些实例化的优化,那么应该怎么用set_dont_touch?
因为我发现,elaborate之后再使用set_dont_touch只能禁止顶层文件中的FA被优化,而底层文件中FA的实例化依然被优化。
 楼主| 发表于 2012-7-2 23:53:42 | 显示全部楼层
回复 4# my2817


    已解决,谢谢你的指点。
发表于 2012-8-13 13:58:27 | 显示全部楼层
dc_shell>man set_dont_touch ,我用这个为什么不能打开帮助呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2025-6-28 02:40 , Processed in 0.028084 second(s), 7 queries , Gzip On, MemCached On.

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