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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 7942|回复: 10

[原创] 关于数字电路设计ECO问题

[复制链接]
发表于 2017-4-3 20:55:25 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 charlie_zhang 于 2017-4-3 21:04 编辑

最近做项目,真真碰到了一个所谓的ECO问题,什么叫ECO,百度百科是这么说的“Engineering Change Order”,即工程师手动去改变设计,这句话是针对目前设计比较依赖EDA工具这个大背景的,即在不复杂的逻辑中,小范围的改动网表(netlist),或者版图(pr),而不用对RTL代码重新做综合,时序约束(sta),时钟树综合(CTS),等等一系列流程。
只需要稍微改动RTL代码,手动改写PR后的器件(例如更换器件和连线),只需要对RTL和最后的版图文件做formality形式验证,只要match即可,不用再按照IC设计综合流程,时序分析,时钟树综合等后段流程再走一遍,大大节约了时间,缩短了流片准备时间。

这里涉及三个问题:
1. 怎样的情况适合ECO?
2. RTL代码怎样的code style适合ECO?
3. 综合工具如何将RTL映射到电路,重点是如何优化电路?

[size=13.3333px]首先,第1个问题
[size=13.3333px]一般都是逻辑不是很复杂的改动,较小的改动,举例如下




  1. nrst1 = A & B & C;
  2. nrst2 = A & B;
  3. aways @(posedge clk or negedge nrst1) begin
  4.     reg00 <= 1'b0;
  5.     reg01 <= 1'b0;
  6.     reg02 <= 1'b0;
  7. end
  8. else begin
  9.     case(state)
  10.         `idle: ...
  11.         `cut: ...
  12.         `freeze: ...
  13.     endcase
  14. end
  15. end


复制代码

上述RTL代码中,case组合电路决定对三个寄存器reg00,reg01,rego2进行寄存器数据输入控制,而nrst1的低电平对三个寄存器进行复位;如果现在想更改reg00的复位条件,例如想用nrst2来复位reg00,而nrst1仍然用于复位reg01和reg02。
那从后端设计来说,需要和前端设计工程师一道,来确定更改点,找到reg00映射的那个寄存器。插入合适的门电路,例如插入一个二输入端与门电路,两个输入是A和B。

其次,第2个问题
上述代码如何改动呢?一个aways块里控制很多寄存器,共用一个组合控制电路,即对state对译码电路,而若要改动上述代码,使之余后端版图formality match,逻辑上等价。则很难更改,原因是我尝试了很多,但都以失败告终,有的是没有用RTL表达正确的意图,有的是不了解综合工具的局限性。
最后只能分开来控制每个寄存器,每个寄存器用一个always块来控制,每个always块里只有一个单独的复位信号,这样就能从前端修改RTL代码与后端版图formality match;并且综合也不会报错误。

最后,第3个问题
涉及到一个重要到问题:三个always块中,每个都有对state的译码电路,他们本来是可以公用一个译码电路的,那么综合工具能否正确认识并优化之呢?[size=13.3333px]实际中,按照第2个问题中的解决办法,formality确实通过了,综合也没有报错。
[size=13.3333px]formality虽然通过了,formality match是指从很多输入点(包括寄存器输出,pad输入);输出点(只有一个,寄存器输入或者pad输出),进行逻辑扫描,遍历一遍后,逻辑match。
[size=13.3333px]很明显综合工具综合优化不会仅仅以fomality的逻辑锥为基本单位,也会涉及到不同的逻辑锥共享相同的组合电路,以达到降低面积的目的,在添加约束时,一般以时序满足为第一目标,然后在此基础上优化面积,理论上上述不同的写法,综合工具也会对其优化得到相同的电路结构,相同的逻辑功能的。
发表于 2017-4-7 16:31:04 | 显示全部楼层
有专业的ECO软件,比如Cadence的Conformal ECO Designer,NanDigits的Gates On the Fly等,都可以很好的处理功能ECO问题。
Cadence的Conformal ECO Designer:
https://www.cadence.com/content/ ... l-eco-designer.html
NanDigits的Gates On the Fly:
www.nandigits.cn
发表于 2017-4-12 16:55:17 | 显示全部楼层
关于数字电路设计ECO问题
发表于 2017-4-13 11:59:35 | 显示全部楼层
关于数字电路设计ECO问题
发表于 2017-4-20 17:11:47 | 显示全部楼层
针对你的第一个问题: 你确定只改几个寄存器的复位端口, 这个复位时芯引入的, 你在neltist 里面添加 一个与门逻辑, 与门逻辑的输出接到需要reg00寄存器的复位端, 源代码就从新写一个always block就可以了, 然后在formality 对比。
发表于 2020-10-19 10:50:46 | 显示全部楼层
Study!
发表于 2020-12-3 15:51:00 | 显示全部楼层
学习一个
发表于 2021-2-5 16:24:05 | 显示全部楼层
最近做ECO,着实有了一些收获
发表于 2023-8-23 22:54:00 | 显示全部楼层
推荐彩用EasylogicECO,加我微:linqieni
发表于 2023-10-31 21:52:41 | 显示全部楼层
看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-22 00:32 , Processed in 0.024439 second(s), 7 queries , Gzip On, Redis On.

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