zzw_rst 发表于 2022-12-12 23:20

求助前辈们Verilog lut个数的问题

<p>问一下这几个模块有几个lut,因为是新手,不知道综合出哪些函数,需要讲函数来源细一些。</p>
<p></p>
<p>然后是延迟上有什么,多少级lut。</p>
<p></p>
<p>注:最后两张图片有示例调用。</p>
<p></p>

卿小小 发表于 2022-12-14 17:53

本帖最后由 卿小小 于 2022-12-14 17:54 编辑

<p>//------说明</p>

<p>如果不是导师作业,这种代码的含金量不太高。想学习Verilog或者FPGA的话建议从开发板的教程入手。</p>

<p>为了提高交流效率,代码之类的内容建议使用源文件或者插入文字的形式处理,尽量不要贴代码图片。</p>

<p>//------流程</p>

<p>此处仅以第一张图的&ldquo;Vr1to8check&quot;进行流程和功能说明。其他几个文件的处理是相似的流程。</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 &lt;= 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>&nbsp;</p>

zzw_rst 发表于 2022-12-15 14:41

卿小小 发表于 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&nbsp;even&nbsp;in&nbsp;this&nbsp;simple&nbsp;example&nbsp;(just&nbsp;an&nbsp;8-input&nbsp;function)&nbsp;Vivado&nbsp;does&nbsp;not&nbsp;search&nbsp;the&nbsp;entire&nbsp;"solution&nbsp;space"&nbsp;for&nbsp;the&nbsp;best&nbsp;implementation,&nbsp;and&nbsp;the&nbsp;results&nbsp;depend&nbsp;very&nbsp;much&nbsp;on&nbsp;the&nbsp;starting&nbsp;point.&nbsp;“starting&nbsp;point”是什么。</p><br/><p></p><br/><p>最快实现方式应该不全取决于lut数吧,有什么因素影响。</p><br/><p></p><br/><p>&nbsp;</p><br/>

卿小小 发表于 2022-12-15 15:44

本帖最后由 卿小小 于 2022-12-15 17:29 编辑

<div class="quote">
<blockquote><font size="2"><a href="forum.php?mod=redirect&amp;goto=findpost&amp;pid=3196593&amp;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=&quot;true&quot;*)语句防止被优化掉。</p>

<p>&nbsp;</p>

<p>&ldquo;starting-point&rdquo;不太理解什么意思。</p>

<p>个人胡乱推测&ldquo;starting-point&rdquo;是进行物理布局布线的初始切入点。简单的布局布线没难度,无需考虑切入点,最后的布线、资源结果基本相似。当遇到复杂的部分(例如使用大量的generate或者for循环),初始优化哪一部分,其时序会好一些;后续优化的部分,不排除对应的逻辑时序会变差。</p>
页: [1]
查看完整版本: 求助前辈们Verilog lut个数的问题