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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

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

[原创] 前端设计的代码优化

[复制链接]
发表于 2024-1-12 10:00:19 | 显示全部楼层 |阅读模式

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

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

x
因为是初入ic设计,想问问各位大佬,怎么保证自己的代码是比较精简,综合出来的电路是较低功耗较少门呢?

例如我知道的仅有:把多次出现的逻辑式复用;一些在主从模式下没开的模块/信号停止反转等等比较基础的;
有没有一些常见的处理步骤或者比较成熟的方法论呢?
发表于 2024-1-22 14:43:25 | 显示全部楼层
门控 + 最少的memory
发表于 2024-1-24 09:35:52 | 显示全部楼层
:lol
 楼主| 发表于 2024-1-26 16:58:18 | 显示全部楼层


有缘相见记得点赞
发表于 2024-2-20 10:51:56 | 显示全部楼层
功耗方面:
1. 优先考虑时钟门控,目前综合工具基本可以自动插入时钟门控单元,只要你的时序逻辑中的if-else条件中有保持原值的分支。例如:
always @(posedge clk) begin
    if (en) begin
        data[width-1:0] <= data_tmp;
    end
end
需要注意的是,工具插入门控单元对width大小有要求。好像synopsys的DC默认需要width大于等于3.当然使用相同赋值条件的不同信号bit数加起来为3也行。总的来说这个width要求是为了防止插入门控单元带来的功耗超过你做门控节省的功耗。

面积方面(也包括功耗):主要是mem和组合逻辑
1. mem包括寄存器和mem颗粒比如RAM。这两个都属于资源池中占比较大的内容,具体看算法怎么优化可以节约数量。
2. 组合逻辑,对相同的功能,算法不同带来的组合逻辑就不同,往往在面积和时序之间取舍。比如检查一个4bit的信号是否是onehot,可以把每1bit加起来看是不是1,也可以用case去遍历,还可以在左右个放一个指针,让他们从0到3/从3到0遍历,看各自数到第一个1的idx是否相同。三种方法得到的面积,功耗,时序都各不相同。对了,有时候算法的复杂度和可读性也很重要。
 楼主| 发表于 2024-2-20 15:45:58 | 显示全部楼层


naNo_cc 发表于 2024-2-20 10:51
功耗方面:
1. 优先考虑时钟门控,目前综合工具基本可以自动插入时钟门控单元,只要你的时序逻辑中的if-els ...


谢谢大佬的解答;
话说这些算法及其优化的知识有没有一些资料可以查阅研究呢?能给个大致方向嘛

发表于 2024-2-21 09:38:18 | 显示全部楼层


数学必考150 发表于 2024-2-20 15:45
谢谢大佬的解答;
话说这些算法及其优化的知识有没有一些资料可以查阅研究呢?能给个大致方向嘛


具体算法的话其实数不胜数,不同行业用到的都不一样,作为参考可以看看“
Computer Arithmetic - Algorithms and Hardware Designs”这本书。


也可以看看这篇博客

数字典型电路知识结构地图,请大家参考,也希望积极补充!
https://bbs.eetop.cn/thread-768668-1-1.html
(出处: EETOP 创芯网论坛 (原名:电子顶级开发网))


您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-4-27 19:42 , Processed in 0.026216 second(s), 7 queries , Gzip On, Redis On.

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