做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. 关于vue.js:iview-Bug-5114在iview的Poptip气泡提示内调用DatePicker出现遮挡或同时关闭窗口等冲突问题[转]

    转自:https://lequ7.com/guan-yu-vuejsiviewbug5114-zai-iview-de-poptip-qi-pao-ti-shi-nei-diao-yong-datep ...

  2. C++标准库字符串流sstream

    sstream与strstream 在C++有两种字符串流,一种在<strstream>中定义,另一种在<sstream>中定义,两者的区别如下: strstream里包含st ...

  3. Cordon、Drain、污点与容忍度、亲和性与反亲和性

    在Kubernetes(K8s)中,Cordon.Drain.污点与容忍度.亲和性与反亲和性都是与资源管理和调度相关的概念.下面是对这些概念的详细解释: Cordon(封锁.警戒): Cordon是一 ...

  4. 常见字符的ASCII码值

    ASCII值就是字符对应的十进制数值,字符就是可以表示的字符.

  5. 世界银行使用.NET 7开发的免费电子问卷制作系统Survey Solution

    Survey Solution (下文简称SS) 是世界银行数据部开发的一套免费电子问卷制作系统, 官网地址为: https://mysurvey.solutions/, github地址:https ...

  6. FIR滤波器的设计和实现

    FIR的作用和价值   FIR(Finite Impulse Response)滤波器:有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时 ...

  7. Linux 运维工程师面试真题-4-Linux 服务配置及管理

    Linux 运维工程师面试真题-4-Linux 服务配置及管理** 1.请写出 apache2.X 版本的两种工作模式,以及各自工作原理.如何查看 apache 当前所 支持的模块,并且查看是工作在哪 ...

  8. CSS(语义化标签、多媒体标签、新表单元素、属性选择器、结构伪类选择器、伪元素选择器、盒子模型、滤镜、calc函数、过渡)

    一.HTML5新特性 概述 HTML5 的新增特性主要是针对于以前的不足,增加了一些新的标签.新的表单和新的表单属性等. 这些新特性都有兼容性问题,基本是 IE9+ 以上版本的浏览器才支持,如果不考虑 ...

  9. 04.JavaIO流问题

    目录介绍 4.0.0.1 说一下Java IO里面的常见类,字节流,字符流.接口.实现类.方法阻塞? 4.0.0.2 什么是比特(Bit),什么是字节(Byte),什么是字符(Char),它们长度是多 ...

  10. 记录--一行代码修复100vh bug

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 你知道奇怪的移动视口错误(也称为100vh bug)吗?或者如何以正确的方式创建全屏块? 一.100vh bug 什么是移动视口错误? 你 ...