zoukankan      html  css  js  c++  java
  • FPGA技术脚本使用

    做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文档内容。

  • 相关阅读:
    常用的长度单位
    HTML常用的列表标签
    html常用文本标签
    CSS选择器及优先级
    块级元素与内联元素
    移动端app打包
    内联框架
    Leetcode303.区域和检索-数组不可变
    Leetcode107.二叉树的层次遍历||
    Leetcode784.字母大小写全排列
  • 原文地址:https://www.cnblogs.com/fpga-design/p/14434237.html
Copyright © 2011-2022 走看看