做fpga 不会脚本,基本跟残废一个概念。以前我觉得做FPGA应该学习什么人工智能,大数据,机器人。现在想起来真是傻逼,做fpga也好,做ic,做逻辑其实基本能力都是一样的。

一个学习tcl脚本,perl脚本能力,perl脚本可以做定制IP设定功能,可以封装IP功能。tcl是仿真,软件自动编译能力。二个是时序约束能力。以后都是会重点讲述这两个方面。

下面列举一些常见的TCL脚本命令

Run do文件的一些常用命令

打开现有工程

project open C:/Users/jayash/Desktop/sim/ImageProcess

新建一个库

vlib my_lib

将其映射到work

vmap my_lib work

删除制定库

vmap -del my_lib

添加指定设计文件

project addfile src/Verilog/test.v

编译工程内所有文件

project compileall

编译指定verilog文件

vlog src/Verilog/test.v

编译指定的vhdl文件,同时检查可综合性

vcom –check_synthesis src/video_cap.vhd

仿真work库下面的test_tb实例,同时调用220model_ver库,不再进行任何优化,仿真分辨率1ns。

vsim –t 1ns –L 220model_ver –gui –novopt work.test_tb

取消warning,例如‘x’,‘u’,‘z’信号的警告,对提高编译速度很有帮助

set StdarithNoWarning 1#查看objectView objects#查看局部变量View locals#查看sourceView source

添加模块顶层所有信号到波形图

add wave*

10进制无符号显示

Radix usigned

16进制显示

Radix hex

重新进行仿真

Restart

开始仿真

Run

仿真指定时间

Run 1ms

时钟激励50ns周期 占空比50%

Force –repeat 50 clk 0 0,1 25

指定信号置0

Force rst_n 0

指定信号置1

Force rst_n 1

指定信号赋值

Force din_a 123

Force din_b 39

  下面是经常用的仿真脚本模板,仿真新的工程只需要修改一点点,就可以直接使用了。将sim.do文件放在仿真工程目录下,即和Modelsim仿真工程xxx.mpf在同一个文件夹。sim是我定义的do文件名,用户可自行定义。

退出当前仿真

quit -sim

vlib work

编译修改后的文件,我这里把设计文件和仿真文件分开放了,所以写两个。

vlog "../Src/*.v"

vlog "../Sim/*.v"

开始仿真

vsim -voptargs=+acc work.tb_Cordic_Cos_Sin

添加指定信号#添加顶层所有的信号

Set the window types

打开波形窗口

view wave

view structure

打开信号窗口

view signals

添加波形模板

add wave -divider {tb_Cordic_Cos_Sin}

add wave tb_Cordic_Cos_Sin/add wave -divider {tb_Cordic_Cos_Sin}

add wave tb_Cordic_Cos_Sin/uut/
.main clear

运行xxms

run 100us

另外说明三个重要指令,因为很多DS编写verilog 跟写c语言一样。

(1) +incdir+:

如:vlog +incdir+YOUR_SOURCE_PATH foo.v

+incdir+YOUR_SOURCE_PATH 选项是指在verilog文件中出现`include "xxx.v" 时,包含文件的搜索路径。

缺省是搜索当前路径,然后是YOUR_SOURCE_PATH 指定的路径。

(2) +define+:

+define+<macro_name>[=<macro_text>]

允许用户在命令行中定义宏定义,等效于编译器指令:

`define <macro_name> <macro_text>

用户可以指定多个宏定义,如下:

vlog +define+one=r1 +two=r2 +three=r3 test.v

命令行的宏定义会覆盖在源文件中用`define定义的相同名字的宏定义

如:vsim -c -l vsim.log -do ./YourDo.do -L ./work work.foo

(3) 通配符概念。如果一个工程需要很多文件,你每个文件都加上你是不是很痛苦。所以这个时候需要做通配文件。+libext+.v 代表所有的.v文件。

vlog -y ../../../models/ecp5um +libext+.v

-y ../../../models/mem +libext+.v

下面就是脚本,保存do文件就可以。在modelsim 敲入do *.do就可以运行。

quit -sim

if {[file exists work]} {

file delete -force work

}

vlib work

==== compile

vlog -novopt +define+inst1_NO_DEBUG+inst1_SIM+SIM+NO_DEBUG

-y ../../../models/ecp5um +libext+.v

-y ../../../models/mem +libext+.v

-y D:/program/latticediamond/diamond/3.10_x64/cae_library/simulation/verilog/ecp5u +libext+.v

-y D:/program/latticediamond/diamond/3.10_x64/cae_library/simulation/verilog/pmi +libext+.v

+incdir+../../../testbench/tests/ecp5um

+incdir+../../src/params

+incdir+../../../models/mem

../../src/params/ddr3_sdram_mem_params_inst1.v

../../../../inst1_beh.v

../../../models/ecp5um/ddr_clks_src.v

../../src/rtl/top/ecp5um/ddr3_sdram_mem_top_wrapper_inst1.v

../../../testbench/top/ecp5um/odt_watchdog.v

../../../testbench/top/ecp5um/monitor.v

../../../../../../src/ddr3_wrrd.v

../../../../../../src/sim_ddr3_wrrd.v

../../../../../../ddr3_ip_inst/fifox64/fifox64.v

==== run the simulation

vsim -novopt -t 1ps work.sim_ddr3_wrrd -l inst1_eval.log\

add wave -position insertpoint sim:/sim_ddr3_wrrd/*

add wave -position insertpoint sim:/sim_ddr3_wrrd/ddr3_wrrd_inst/*

具体命令可以参考modelsim安装目录下的modelsim_se_ref的pdf文档内容。

FPGA技术脚本使用的更多相关文章

  1. FPGA技术的发展历史和动向

    本文关键字:fpga技术,fpga发展, fpga培训,FPGA应用开发入门与典型实例 一.FPGA技术的发展历史 纵观数字集成电路的发展历史,经历了从电子管.晶体管.小规模集成电路到大规模以及超大规 ...

  2. FPGA技术的一些基本概念(综合、BlackBox)(转)

    原文:http://blog.sina.com.cn/s/blog_6254a8ca0100i0wr.html 原文也是转的,哈哈,大家多转转,转转更健康.删除了一些Xilinx的东西 前言 综合是将 ...

  3. FPGA与数字图像处理技术

    数字图像处理方法的重要性源于两个主要应用领域: 改善图像信息以便解释. 为存储.传输和表示而对图像数据进行处理,以便于机器自动理解. 图像处理(image processing): 用计算机对图像进行 ...

  4. 基于FPGA的XPT2046触摸控制器设计

    基于FPGA的XPT2046触摸控制器设计 小梅哥编写,未经许可,文章内容和所涉及代码不得用于其他商业销售的板卡 本实例所涉及代码均可通过向 xiaomeige_fpga@foxmail.com  发 ...

  5. 【小梅哥FPGA进阶教程】第十一章 四通道幅频相可调DDS信号发生器

    十一.四通道幅频相可调DDS信号发生器 本文由山东大学研友袁卓贡献,特此感谢 实验目标 实现多通道可调信号发生器 实验平台 芯航线FPGA核心板.ADDA模块 实验现象 实现基于FPGA的多通道可调信 ...

  6. 小梅哥FPGA数字逻辑设计教程——基于线性序列机的TLC5620型DAC驱动设计

    基于线性序列机的TLC5620型DAC驱动设计 目录 TLC5620型DAC芯片概述:    2 TLC5620型DAC芯片引脚说明:    2 TLC5620型DAC芯片详细介绍:    3 TLC ...

  7. CPLD VS FPGA

    FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL.GAL.CPLD等可编程器件的基础上进一步发展的产物.它是作为专用集成电路(ASIC)领域中的 ...

  8. 基于FPGA的线阵CCD图像测量系统研究——笔记

    本文是对基于FPGA的线阵CCD图像测量系统研究(作者:高尚)的阅读笔记 第一章绪论 1. 读读看 读了前面的摘要依然没有看懂作者要做什么.接着往下读....终于看到了一个字眼“基于机器视觉的图像测量 ...

  9. 7月12日至芯FPGA就业班招生

    至芯科技FPGA就业培训班将于2014年7月12日正式开班,届时至芯科技将秉承着一贯的教学传统,为广大师生打造一个专业的技术平台和轻松的学习环境. 在夏宇闻教授的带领下,至芯科技汇聚了一批来自国内外大 ...

  10. 【小梅哥FPGA进阶教程】第九章 基于串口猎人软件的串口示波器

    九.基于串口猎人软件的串口示波器 1.实验介绍 本实验,为芯航线开发板的综合实验,该实验利用芯航线开发板上的ADC.独立按键.UART等外设,搭建了一个具备丰富功能的数据采集卡,芯航线开发板负责进行数 ...

随机推荐

  1. Codeforces Round 169 (Div. 2)C. Little Girl and Maximum Sum(差分、贪心)

    目录 题面 链接 题意 题解 代码 总结 题面 链接 C. Little Girl and Maximum Sum 题意 给q个[l,r]将所有这些区间里面的数相加和最大. 可以进行的操作是任意排列数 ...

  2. Springboot中-全局异常处理类用法示例

    使用springboot搭建web项目的时候,一般都会添加一个全局异常类,用来统一处理各种自定义异常信息, 和其他非自定义的异常信息,以便于统一返回错误信息.下面就是简单的示例代码, 自定义异常信息. ...

  3. pdfz Vue-3-Cheat-Sheet-zh 官方要是能下载下来,我也就不放这里了。 VUE3 composition API cheat sheet

    https://files.cnblogs.com/files/pengchenggang/Vue-3-Cheat-Sheet-zh.zip 官方下载地址:https://www.vuemastery ...

  4. Redis持久化之RDB(Redis DataBase) 和 AOF(Append Only File)

    Redis提供了两种持久化方式:RDB(Redis DataBase)和AOF(Append Only File). 1. RDB持久化: RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁 ...

  5. 如何在forEach内使用异步调用 async/await

    翻自: How to use async and await in a forEach JS loop? https://learn.coderslang.com/0144-how-to-use-as ...

  6. 安装swagger过程及遇到问题

    参考:欢迎点击原文:https://www.cnblogs.com/liconglong/p/11477401.html(主要) https://blog.csdn.net/liangjiabao55 ...

  7. 开源一个教学型分库分表示例项目 shardingsphere-jdbc-demo

    在笔者心中,消息队列,缓存,分库分表是高并发解决方案三剑客. 分库分表之所以被广泛使用,因为工程相对简单,但分库分表并不仅仅是分片,还是需要考虑如何扩缩容(全量同步.增量同步.数据校验等). 因此笔者 ...

  8. Liunx-LVM创建与扩容

    LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,最新 ...

  9. 神经网络——基于sklearn的参数介绍及应用

    一.MLPClassifier&MLPRegressor参数和方法 参数说明(分类和回归参数一致): hidden_layer_sizes :例如hidden_layer_sizes=(50, ...

  10. hackme 【攻防世界】Reverse

    题目: 丢到PE里, 无壳,64bit 丢到IDA里,shift+F12,查看字符串,找到一个很可疑的字符串 跟进去看看,找到目标函数,我另外搜索了一下,没有mian函数,sub_400F8E应该就是 ...