- 主题:问一个寄存器优化的问题
类似下面的代码
always(posedge clk)begin
a <= 100;
b <= a + 1;
c <= b + a - 5;
end
在quartus里面 a b c都被优化掉了
但是在vivado里面,b c没有被优化掉
如何才能让vivado自动去优化呢
这么写是有原因的
比如这个代码是一个模块
被调用了多次
100其实是个input
在有的调用里面传的是常数100
在有的调用里面传的是变量
- 来自「最水木 for iPhone14,3」
※ 修改:·Xaoyao 于 Feb 12 18:05:57 2022 修改本文·[FROM: 101.87.108.*]
※ 来源:·最水木 客户端·[FROM: 101.87.108.*]
修改:Xaoyao FROM 101.87.108.*
FROM 101.87.108.*
哥几个能不能正面解答一下问题呢?
这么写当然是有原因的
比如这个代码是一个模块
被调用了多次
100其实是个input
在有的调用里面传的是常数100
在有的调用里面传的是变量
【 在 calism 的大作中提到: 】
: 把写这代码的人优化了
: 【 在 Xaoyao 的大作中提到: 】
: : 类似下面的代码
: ....................
- 来自「最水木 for iPhone14,3」
--
FROM 101.87.108.*
怎么哥几个没一个回答在点子上呢?
跟带参例化有什么关系?
拿个最简单的例子来说
有个模块,两个32位数乘法
然后被到处调用
有一次调用的两个32位数都是常数值 2和3
那么我自然希望工具自动把这个模块优化掉
然后输出正确的值6
而不是我手工去算2×3=6
然后写死在RTL里面
而实际这个模块的算法非常复杂
根本不能靠人去手工算出常数输出的结果
除非手写c model
把每次常数输入的情况都算出常数输出的值
再写死在RTL里面
我想跟大家讨论的问题是:
为什么quartus优化了
vivado却没有优化
有没有人遇到过类似问题
为什么哥几个却非要纠结代码写的有问题?
【 在 veriloghdl 的大作中提到: 】
: 带参例化不就是干这个的
: 【 在 Xaoyao 的大作中提到: 】
: : 哥几个能不能正面解答一下问题呢?
: ....................
- 来自「最水木 for iPhone14,3」
※ 修改:·Xaoyao 于 Feb 14 02:58:59 2022 修改本文·[FROM: 101.87.108.*]
※ 来源:·最水木 客户端·[FROM: 101.87.108.*]
修改:Xaoyao FROM 101.87.108.*
FROM 101.87.108.*
没有复位值
【 在 iyama 的大作中提到: 】
: 上电后都是0
: 第一个时钟后a =100, b=1, c=-5
: 第二个时钟后a =100,b=101,c=96
: ....................
- 来自「最水木 for iPhone14,3」
--
FROM 101.87.108.*