求助前辈们Verilog lut个数的问题
<p>问一下这几个模块有几个lut,因为是新手,不知道综合出哪些函数,需要讲函数来源细一些。</p><p></p>
<p>然后是延迟上有什么,多少级lut。</p>
<p></p>
<p>注:最后两张图片有示例调用。</p>
<p></p>
本帖最后由 卿小小 于 2022-12-14 17:54 编辑
<p>//------说明</p>
<p>如果不是导师作业,这种代码的含金量不太高。想学习Verilog或者FPGA的话建议从开发板的教程入手。</p>
<p>为了提高交流效率,代码之类的内容建议使用源文件或者插入文字的形式处理,尽量不要贴代码图片。</p>
<p>//------流程</p>
<p>此处仅以第一张图的“Vr1to8check"进行流程和功能说明。其他几个文件的处理是相似的流程。</p>
<p>//---基本步骤:</p>
<pre>
<code class="language-cpp">1.创建工程,器件型号任意选择(此处我选择的xc7k325tffg900-2)。
2.新建源文件或者导入源文件,源文件内是需要测试验证的代码。
3.运行综合Synthesis,等待运行结束查看综合后资源占用结果。
4.同时,在RTL_ANALYSIS/Open_Elaborated_Design中可以对RTL进行更加详细的网表分析。</code></pre>
<p>//---步骤示例:</p>
<p></p>
<p></p>
<p>//---源文件</p>
<p></p>
<pre>
<code class="language-cs">`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 2022/12/14 17:00:57
// Design Name:
// Module Name: Vr1to8check
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module Vr1to8check(
input I ,//input
output reg VALID //output
);
//------internal_signals: reg, wire, integer.
integer N1s ;
integer j ;
//------always
always@(I) begin
N1s = 0 ;
for(j = 0 ; j <= 7 ; j = j + 1) N1s = N1s + I ;//for()
VALID = (N1s == 1);
end
//a. when "I" is changed, first N1s is changed to "0";
//b. then N1s will execute “for”,which means: N1s+I+I+I+I+I+I+I+I;
//c. at the end, VALID=1 @N1s=1, VALID=0 @N1s=0.
//------
endmodule
</code></pre>
<p> </p>
卿小小 发表于 2022-12-14 17:53
//------说明
如果不是导师作业,这种代码的含金量不太高。想学习Verilog或者FPGA的话建议从开发板的教 ...
<p>很感谢回复。</p><br/><p></p><br/><p>第一、二张是同一个功能的,lut数是3vs4,是我弄反了或者是版本的问题?</p><br/><p></p><br/><p>lut数感觉自己能算出来好一点,机器也需要对比参考。如果是比较多的代码要综合,需要选择的时候,都要敲上去感觉可能会花多点时间,不知道我想得对不对。</p><br/><p></p><br/><p>because even in this simple example (just an 8-input function) Vivado does not search the entire "solution space" for the best implementation, and the results depend very much on the starting point. “starting point”是什么。</p><br/><p></p><br/><p>最快实现方式应该不全取决于lut数吧,有什么因素影响。</p><br/><p></p><br/><p> </p><br/> 本帖最后由 卿小小 于 2022-12-15 17:29 编辑
<div class="quote">
<blockquote><font size="2"><a href="forum.php?mod=redirect&goto=findpost&pid=3196593&ptid=1228288" target="_blank"><font color="#999999">zzw_rst 发表于 2022-12-15 14:41</font></a></font></blockquote>
</div>
<p>synthesis的结果没太大意义,最终应该以Implementation布局布线之后为准。</p>
<p>同时,为了避免Implementation自动优化资源,代码里很多内部变量可能需要简单处理一下,主要是在对应的内部变量定义的前端添加诸如 (*keep="true"*)语句防止被优化掉。</p>
<p> </p>
<p>“starting-point”不太理解什么意思。</p>
<p>个人胡乱推测“starting-point”是进行物理布局布线的初始切入点。简单的布局布线没难度,无需考虑切入点,最后的布线、资源结果基本相似。当遇到复杂的部分(例如使用大量的generate或者for循环),初始优化哪一部分,其时序会好一些;后续优化的部分,不排除对应的逻辑时序会变差。</p>
页:
[1]