• vcs与verdi学习记录


    linux命令生成filelist

    (1)find -name “*.v” > filelist.f

    会将当前目录下及子目录中所有.v的文件及路径写到文件filelist.f中。

    (2)find dir -name “*.v” > filelist.f

    其中,dir:文件夹名。会将dir中的所有.v的文件都写到filelist.f中。

    Reference

    file_list的注释方式

    // 注释的内容
    Reference

    filelist中常用到的vcs 编译命令

    1、+incdir+
    +incdir+ `include文件的搜索目录。
    -incdir 在指定目录下搜索include文件
    方便在
    2、-v filename
    -v 指定一个.v格式的库文件,VCS会来这个文件中找源代码中例化的但在源代码中找不到的module,这里一个文件可以里面包含很多module。
    filelist列表中 -v xxx/xxx/fifo.v 表示该文件里面只有一个module,且module名为fifo。
    filelist列表中直接引用 xxx/xxx/fifo.v 则对文件中的module名没有限制。
    3、-y directory
    -y 指定一个库文件目录,目录下的文件名和module名要一致,且要用+libext+来指定文件类型,这里的.v文件里面就只能放一个和文件名同名的module,VCS会来这个目录下找源代码中例化的但在源代码中找不到的module。
    4、+libext+
    +libext+ .v+ .vg+ .sv 指定文件类型。
    5、-f filename
    指定文件类型为.f。
    Reference

    //宏定义
    +define+COUNTER_FREE
    //带有值的宏定义
    +define+CNT_FREE=9
    //指定库文件,建议包含路径,可指定多个
    //-v
    //指定库文件、IP 等 Verilog 模型的路径,可指定多个
    //-y
    //指定`include 指令使用的包含文件的目录,可指定多个
    //+incdir+

    Reference

    生成 Verdi 可识别的波形文件 *.fsdb

    创建 wave_gen.tcl 文件内容如下:

    call {$fsdbDumpfile("dump.fsdb")}
    call {$fsdbDumpvars(0, test, "+all")}
    run
    
    • 1
    • 2
    • 3

    创建仿真执行命令的脚本 run_simv.sh,内容如下:

    ln -sf ../vcs/simv* .
    ./simv -ucli -i wave_gen.tcl -l sim.log
    
    • 1
    • 2

    运行 run_simv.sh 脚本

    也可以在TB文件中添加响应语句
    Reference

    Verdi的相关参数

    verdi -f ../vcs/file.list -f ../vcs/macro.list \
    -top test -ssf dump.fsdb -nologo &
    
    • 1
    • 2

    (1) verdi 表示启动 Verdi 工具的命令;
    (2) -f …/vcs/file.list -f …/vcs/macro.list 表示指定 Verilog 设计文件列表;
    (3) -top test 表示指定仿真顶层模块为 top;
    (4) -ssf dump.fsdb 表示指定 Verdi 可识别的波形文件 dump.fsdb,该文件可由 -ucli 接口命令生成,详见 《3.2 VCS 仿真接口 UCLI》;
    (5) -nologo 表示启动 Verdi 时不加载欢迎界面;
    (6) & 表示 Verdi 启动时新打开一个进程,不占用当前的 shell 环境进程

    选中信号后,按键 Ctrl + W,即可完成信号在波形窗口的显示
    Reference

    原理图追踪

    原理图中,按下键盘x,可以配合工具栏
    在这里插入图片描述
    也可以结合波形图一起使用
    在这里插入图片描述
    Reference

    原理图的view窗口显示各种信息

    代码追踪中右键的作用

    在这里插入图片描述
    (1) Drag & Drop,在代码窗口对信号进行 Drag 与 Drop ,可追踪信号的连接性信息,包含所有的驱动 (Driver) 和负载 ( Load) 信息;在代码窗口对信号进行 Drag,在波形窗口进行 Drop,可将信号添加到波形窗口中;在波形窗口对信号进行 Drag,在代码窗口进行 Drop,可实现波形信号在代码窗口中的定位。
    (2) 复制层次访问路径,可获取信号或模块的具体层次访问路径信息,多用于波形打印参数、Memory 初始化参数等。例如此操作可获取 u_cnt 模块端口 cout 的层次路径为: test.u_cnt.cout 。
    (3) 上一级层次调用(例化)信息与下一级模块设计信息。

    (4) 追踪功能,包含 3 个常用的选项功能:Driver、Load、Connectivity,分别对应追踪驱动、追踪负载、追踪连接性(即驱动和负载都包含在内)信息。同时追踪信息也会显示在 Message 窗口中。
    (5) 使能信号变量的数值标记功能,快捷键为 x。(可以直接在代码上看到数值)
    (6) 添加信号至波形窗口等操作,该功能常常使用快捷键 Ctrl+W 代替。
    (7) 信号显示功能,常选择选项 Show Signal Definition,查看信号的定义信息。

    Reference

    波形

    nWave 快捷键总结
    快捷键
    操作说明
    A
    Set Active, 当一个波形窗口打开多个波形文件时,可以选择当前需要显示的波形文件
    C
    Color/Pattern,设置信号与波形的颜色、线的类型与粗细
    F
    Zoom All (Full Screen),显示全部波形
    G
    Get Signlas,点击后会显示且可以添加至时序波形窗口中的信号
    H
    Hierarchical Name,显示信号的层次访问路径
    K
    Create Bus,创建重组信号
    L
    Last View,上一次缩放视图
    M
    Move,移动信号至黄线位置
    N
    Search Forward,向右搜素信号符合变化类型的时刻
    R
    Restore Signal,恢复波形信号列表及相关设置
    T
    自动设置信号颜色
    X
    Fix Cursor/Marker Delta Time,移动光标时,保持黄、白光标之间的时间差为定值
    Y
    Keep Cursor at Centor,将黄色光标移至中央并保持居中,再按取消固定居中
    Z
    Zoom Out,缩小波形
    Shift + C
    Close Window,关闭波形窗口
    Shift + H
    Highlight Selected Signals,是否高亮显示选择的信号波形
    Shift + L
    Reload,重新加载波形
    Shift + M
    Marker,添加标记时刻
    Shift + N
    Search Backward,向左搜素信号符合变化类型的时刻
    Shift + P
    Change to Primary,将当前波形窗口设置为基础波形窗口
    Shift + S
    Save Signal,保存信号列表及设置至 rc 文件中
    Shift + Z
    Zoom In,放大波形
    Ctrl + D
    删除所有信号
    Ctrl + ←
    向左移动波形
    Ctrl + →
    向右移动波形
    Delete
    删除所选信号

    Reference

    常用的 VCS 编译命令

    vcs -full64 -notice -debug_all -j8 -timescale=1ns/1ps
    +plusarg_save +libext+.v+.V+.sv+.svh -sverilog +memcbk
    -P ${Verdi_HOME}/share/PLI/VCS/LINUX64/novas.tab
    ${Verdi_HOME}/share/PLI/VCS/LINUX64/pli.a
    -cpp /usr/bin/g+±4.4 -cc /usr/bin/gcc-4.4
    -f file.list -f macro.list -top test
    -l compile.log

    ◆ 首先对此脚本中涉及到的基本常用参数进行说明。
    -full64
    在 64-bit 模式下编译、仿真,用于 64 位操作系统
    -notice
    详细的显示编译信息
    -debug_all
    仿真时可以使用 UCLI 接口,可以设置 value、time 断点。可以输出 fsdb/vpd 波形,可以使用 Verdi 和 DVE 波形查看工具。
    未来版本中将会被下列参数选项替代:
    -debug_acc+all -debug_region+cell+encrypt
    -j8
    指定编译器可并行编译的进程数为 8
    -timescale=1ns/1ps
    指定仿真时间单位与精度,RTL 设计中没有指定 timescale 时,使用此设置
    +plusarg_save
    使能传参功能。
    simv 仿真时可将具体数值传递给设计中的相关变量
    +libext+.v+.V+.sv+.svh
    识别 .v、.sv 等多种格式的设计文件
    -sverilog
    支持 SystemVerilog 编译
    +memcbk
    使能多维数组变量 (Memory 类型) 的回调。配合 UCLI 接口,设置波形打印的信号范围时,指定 “+all” 选项,可以查看多维数组变量的波形
    -P

    指定使用的 PLI 表文件与库文件 pli.a 。其中 .tab 文件可以理解为 PLI 接口说明,pli.a 可以理解为系统函数库。
    当然也可以指定用户自定义的 table 文件和自定义的函数库,具体可参考《Verilog 教程高级篇》的《8.1 Verilog PLI 简介》章节。
    -cpp /usr/bin/g+±4.4
    指定 VCS 可识别的 g++ 版本
    -cc /usr/bin/gcc-4.4
    指定 VCS 可识别的 gcc 版本
    -f file.list -f macro.list
    指定包含所有设计文件列表的文件名,文件中可包括源代码文件的路径名称,和编译选项参数等。
    建议 file.list 中存放设计文件列表,macro.list 存放编译参数等内容
    -top test
    设置顶层模块为 test。因为仿真包括 testbench,所以要设置最顶层的 testbench 为 top design。
    -l compile.log
    输出 VCS 编译的 log 至文件 compile.log 中

    ◆ 其他也经常使用的参数说明如下。
    +define+MACRO
    定义一个宏变量 MACRO,可作用到 Verilog 设计中
    +define+MACRO=10
    为定义的宏变量 MACRO 指定具体值为 10
    -v
    指定库文件,建议包含路径,可指定多个
    -y
    指定库文件、IP 等 Verilog 模型的路径,可指定多个
    +incdir+
    指定 `include 指令使用的包含文件的目录,可指定多个
    注:以上参数设置建议写在另一个文件 macro.list 中
    -override_timescale=1ns/1ps
    覆盖掉之前的 timescale 设置,重新设置时间单位与精度
    +nospecify
    忽略 specify 语句块中描述的延时。
    specify 块具体可参考《Verilog 教程高级篇》的《3.2 specify 块语句》章节
    +notimingcheck
    禁止进行时序检查, s e t u p 、 setup、 setuprecovery 等系统函数将无效。
    时序检查具体可参考《Verilog 教程高级篇》的《3.4 时序检查》章节
    +maxdelays
    网表仿真时使用 SDF 文件中的 max 值。
    SDF 相关知识可参考《Verilog 教程高级篇》的《3.5 延迟反标注》章节
    +mindelays
    网表仿真时使用 SDF 文件中的 min 值
    +typdelays
    网表仿真时使用 SDF 文件中的 typ 值
    -o simv_ps
    输出仿真可执行文件的名字为 simv_ps
    未指定时默认输出的可执行文件名为 simv
    -M
    使能增量编译,即编译时只对修改的文件进行重新编译
    -R
    编译完成后立即执行 simv 命令进行仿真
    建议编译和仿真分开进行,便于清晰的调试。
    +warn=noTFIPC
    忽略 TFIPC 的 Warning,不予显示
    +warn=none
    忽略所有 Warning,不予显示
    +warn=all
    显示所有 Warning
    -ntb
    使能 OpenVera 语言描述的测试文件:Native TestBench
    +error+100
    编译时最多支持 100 个 NTB error。此命令不是限制一般的 VCS 编译错误的数量。这里只是简单提及,避免混淆。

    Reference

    3.2 VCS 仿真接口 UCLI

    Reference

    3.3 VCS 混合分步编译

    Reference

  • 相关阅读:
    win10下的python虚拟环境
    ZooKeeper基础命令和Java客户端操作
    携职教育:初级会计证要怎么考?具体有哪些流程?
    2.9 PE结构:重建导入表结构
    Linux系统目录结构
    IP 属地功能会泄露你的隐私吗?
    MAC层协议总结
    初始操作系统之进程
    【Segment Anything Model】八:类似于The size of tensor a (xx) must match the的一些报错
    nrf52840烧录配置(协议栈+APP)
  • 原文地址:https://blog.csdn.net/I_LOVE_MCU/article/details/125871580