- 主题:问一个寄存器优化的问题
类似下面的代码
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.*
不会用parameter?
--
FROM 114.247.222.*
必须优化掉,这种代码的逻辑关系就是一个乱
【 在 Xaoyao 的大作中提到: 】
: 类似下面的代码
: always(posedge clk)begin
: a <= 100;
: ...................
--
FROM 114.249.197.*
把写这代码的人优化了
【 在 Xaoyao 的大作中提到: 】
: 类似下面的代码
: always(posedge clk)begin
: a <= 100;
: ....................
- 来自「最水木 for iPad14,1」
--
FROM 73.15.3.*
优化就优化掉吧
【 在 Xaoyao 的大作中提到: 】
:
: 类似下面的代码
: always(posedge clk)begin
: a <= 100;
: b <= a + 1;
#发自zSMTH@EVR-L29
--
FROM 111.65.44.*
哥几个能不能正面解答一下问题呢?
这么写当然是有原因的
比如这个代码是一个模块
被调用了多次
100其实是个input
在有的调用里面传的是常数100
在有的调用里面传的是变量
【 在 calism 的大作中提到: 】
: 把写这代码的人优化了
: 【 在 Xaoyao 的大作中提到: 】
: : 类似下面的代码
: ....................
- 来自「最水木 for iPhone14,3」
--
FROM 101.87.108.*
把模块完整写出来呢?input是什么样的?
如果输入固定为100,当然会被优化。
【 在 Xaoyao 的大作中提到: 】
: 哥几个能不能正面解答一下问题呢?
: 这么写当然是有原因的
: 比如这个代码是一个模块
: ...................
--
FROM 120.245.112.*
带参例化不就是干这个的
【 在 Xaoyao 的大作中提到: 】
: 哥几个能不能正面解答一下问题呢?
:
: 这么写当然是有原因的
: ...................
--来自微水木3.5.11@空白
--
FROM 221.222.67.*
怎么哥几个没一个回答在点子上呢?
跟带参例化有什么关系?
拿个最简单的例子来说
有个模块,两个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.*
v那个编译器没有做常数传播
常数传播是非常基本的编译优化,多数编译器在O2选项就会默认打开
所以你可以看一下v那个编译器的手册,有没有控制常数传播constant propagation的优化选项,把它打开再试试;如果没有,就放弃这个编译器,这么简单的优化都没,还能干个啥
【 在 Xaoyao 的大作中提到: 】
: 类似下面的代码
: always(posedge clk)begin
: a <= 100;
: ....................
- 来自「最水木 for iPhone14,5」
--
FROM 111.197.232.*