1123|3

45

帖子

0

资源

一粒金砂(中级)

求助前辈们Verilog lut个数的问题 [复制链接]

问一下这几个模块有几个lut,因为是新手,不知道综合出哪些函数,需要讲函数来源细一些。

然后是延迟上有什么,多少级lut。

注:最后两张图片有示例调用。

Screenshot_2022-12-04-15-44-20-34_c37d74246d9c81aa0bb824b57eaf7062.jpg
Screenshot_2022-12-04-15-43-53-00_c37d74246d9c81aa0bb824b57eaf7062.jpg
Screenshot_2022-12-12-22-48-40-06_c37d74246d9c81aa0bb824b57eaf7062.jpg
Screenshot_2022-12-12-23-07-03-06_c37d74246d9c81aa0bb824b57eaf7062.jpg
Screenshot_2022-12-12-23-12-49-17_c37d74246d9c81aa0bb824b57eaf7062.jpg
Screenshot_2022-12-12-23-13-08-85_c37d74246d9c81aa0bb824b57eaf7062.jpg
此帖出自FPGA/CPLD论坛

回复

35

帖子

0

资源

一粒金砂(中级)

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

//------说明

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

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

//------流程

此处仅以第一张图的“Vr1to8check"进行流程和功能说明。其他几个文件的处理是相似的流程。

//---基本步骤:

1.创建工程,器件型号任意选择(此处我选择的xc7k325tffg900-2)。
2.新建源文件或者导入源文件,源文件内是需要测试验证的代码。
3.运行综合Synthesis,等待运行结束查看综合后资源占用结果。
4.同时,在RTL_ANALYSIS/Open_Elaborated_Design中可以对RTL进行更加详细的网表分析。

//---步骤示例:

image-20221214173030561.png

image-20221214174157985.png

//---源文件

image-20221214173305491.png

`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       [0:7]       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[j] ;//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[0]+I[1]+I[2]+I[3]+I[4]+I[5]+I[6]+I[7];
    //c. at the end, VALID=1 @N1s=1, VALID=0 @N1s=0.
    
    //------
    
endmodule

 

此帖出自FPGA/CPLD论坛

点评

很感谢回复。第一、二张是同一个功能的,lut数是3vs4,是我弄反了或者是版本的问题?lut数感觉自己能算出来好一点,机器也需要对比参考。如果是比较多的代码要综合,需要选择的时候,都要敲上去感觉可能会花多点时间  详情 回复 发表于 2022-12-15 14:41

回复

45

帖子

0

资源

一粒金砂(中级)

卿小小 发表于 2022-12-14 17:53 //------说明 如果不是导师作业,这种代码的含金量不太高。想学习Verilog或者FPGA的话建议从开发板的教 ...

很感谢回复。



第一、二张是同一个功能的,lut数是3vs4,是我弄反了或者是版本的问题?



lut数感觉自己能算出来好一点,机器也需要对比参考。如果是比较多的代码要综合,需要选择的时候,都要敲上去感觉可能会花多点时间,不知道我想得对不对。



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”是什么。



最快实现方式应该不全取决于lut数吧,有什么因素影响。



 


此帖出自FPGA/CPLD论坛

点评

synthesis的结果没太大意义,最终应该以Implementation布局布线之后为准。 同时,为了避免Implementation自动优化资源,代码里很多内部变量可能需要简单处理一下,主要是在对应的内部变量定义的前端添加诸如 (*ke  详情 回复 发表于 2022-12-15 15:44

回复

35

帖子

0

资源

一粒金砂(中级)

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

synthesis的结果没太大意义,最终应该以Implementation布局布线之后为准。

同时,为了避免Implementation自动优化资源,代码里很多内部变量可能需要简单处理一下,主要是在对应的内部变量定义的前端添加诸如 (*keep="true"*)语句防止被优化掉。

 

“starting-point”不太理解什么意思。

个人胡乱推测“starting-point”是进行物理布局布线的初始切入点。简单的布局布线没难度,无需考虑切入点,最后的布线、资源结果基本相似。当遇到复杂的部分(例如使用大量的generate或者for循环),初始优化哪一部分,其时序会好一些;后续优化的部分,不排除对应的逻辑时序会变差。

此帖出自FPGA/CPLD论坛

回复
您需要登录后才可以回帖 登录 | 注册

相关帖子
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/5 下一条

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表