求教:编程风格对片内布局是否有很大影响?
本帖最后由 fpgaw 于 2010-7-18 14:35 编辑前段时间,我和同实验室的同学在讨论一个问题:
在一个模块里写多个process
或者
将上面的多个process分别单写不同的模块内,然后将模块链接起来
这两种方式都能达到同样的功能,但是是否对片内的布局有影响,这种影响是否会影响最终设计出来的硬件的运行速度?
我们看了一些书和论坛,都没有关于这方面的介绍,哪位高人能指点一二,不胜感激!! process是vhdl的进程吧,应该和verilog中的always差不多.<br>
这个问题我认为要看综合工具的设置和约束条件了.<br>
你可以用你手头的工具测试一下就知道结果了.<br>
记得以前听说过一个说法,也就是被不同文件的调用的器件,其端口是不会被优化掉的,这个说法不知道正确不,望各位朋友指点一下<br>
但是如果是正确的话,分开写是有些端口要保留的,可能优化效率稍微差一点,但是维护起来却方便很多. 另外早期的综合工具对每个文件描述的门的数目是有要求的,过多的门的数目导致优化时间的增长和效率降低.虽然现在硬件和软件都得到很大的发展,但是在做一些特别大的工程的时候,最好还是不要把一个文件写的太大. 以上说的只是你的关于process的风格,其实写code的风格对综合结果影响很大的,这个你可以在很多资料中找到,我就不多写了.<br>
举个例子,有一个代码综合结果是100多m,被我改了他写的style以后,速度上了30%. 编程风格对布局布线影响还是比较大 的。生成的逻辑也不一样。<br>
你可以用if语句作个逻辑,然后用case语句作个逻辑看一下 原帖由 f0rmat 于 2006-1-20 15:00 发表<br>
process是vhdl的进程吧,应该和verilog中的always差不多.<br>
这个问题我认为要看综合工具的设置和约束条件了.<br>
你可以用你手头的工具测试一下就知道结果了.<br>
记得以前听说过一个说法,也就是被不同文件的调用的器件,其 ... 我是不是可以这样理解你的这些话:<br>
将进程分别写在多个模块里并不会对片内布局和系统的最高运行频率造成太大的影响<br>
<br>
同时,结合其他人的看法:<br>
实现相同逻辑的设计代码的差异才是影响系统占用资源或者运行频率的“罪魁祸首”<br>
<br>
不知道我的理解是不是正确^^ 回 hwei:<br>
进程与模块的写法对速度还是有很大影响的。至少组合逻辑与时序逻辑要分开。其他还有很多地方要注意,就不多说了,可以看相关资料。<br>
影响资源和频率的因素很多,要看具体的实现了。另外,如果确定在某个fab生产的话甚至可以针对他的库写代码,因为针对不同的库甚至可以写不同风格的代码。有的厂商的寄存器速度比较快,有的组合逻辑做的比较好,但这个是极端的情况了,通常情况是,同一套代码在不同的库上综合,结果差很多,你有条件可以实验一下。 process是vhdl的进程吧,应该和verilog中的always差不多.<br>
这个问题我认为要看综合工具的设置和约束条件了.<br>
你可以用你手头的工具测试一下就知道结果了.<br>
记得以前听说过一个说法,也就是被不同文件的调用的器件,其端口是不会被优化掉的,这个说法不知道正确不,望各位朋友指点一下<br>
但是如果是正确的话,分开写是有些端口要保留的,可能优化效率稍微差一点,但是维护起来却方便很多.
页:
[1]