ucli的使用

摘要

-ucli 是 VCS(Verilog Compiled Simulator)中的一个选项,用于启用用户命令行界面(User Command - Line Interface,简称 UCLI)。通过 UCLI,用户可以在仿真过程中动态地控制仿真、查看信号状态、设置断点等,实现交互式的仿真调试。

基本使用步骤

编译设计

首先,你需要使用 VCS 编译你的设计代码和测试平台代码。假设你的设计文件是 design.v,测试平台文件是 testbench.v,可以使用以下命令进行编译:

vcs -full64 -sverilog design.v testbench.v

这里,-full64 表示使用 64 位模式进行编译,-sverilog 表示支持 SystemVerilog 语法。

启动仿真并进入 UCLI 模式

编译成功后,会生成一个可执行文件 simv。使用 -ucli 选项运行该可执行文件,即可启动仿真并进入 UCLI 环境:

./simv -ucli

执行该命令后,你将看到 UCLI 的命令提示符 ucli%,表示可以开始输入 UCLI 命令。

常用 UCLI 命令及示例

仿真控制命令

  • run:开始或继续仿真。
ucli% run

如果仿真还未开始,此命令将启动仿真;如果仿真已暂停,它会让仿真继续运行。

  • stop:暂停正在运行的仿真。
ucli% stop
  • finish:终止当前的仿真过程。
ucli% finish
  • run <时间>:让仿真运行指定的时间。
ucli% run 200ns

此命令会使仿真运行 200 纳秒。

信号操作命令

  • force:强制将指定信号设置为某个值。
ucli% force top_module.dut.data_in 8'hFF

该命令将 top_module 下的 dut 模块中的 data_in 信号强制设置为 8 位十六进制值 FF。

  • release:释放之前使用 force 命令对信号施加的强制值,使信号恢复正常驱动。
ucli% release top_module.dut.data_in
  • display:显示指定信号当前的值。
ucli% display top_module.dut.status_flag

断点设置命令

  • break:设置断点,当仿真执行到满足特定条件时暂停。
ucli% break top_module.dut.counter == 100

此命令设置了一个断点,当 top_module 下的 dut 模块中的 counter 信号的值等于 100 时,仿真会暂停。

  • continue:在断点处暂停后,使用该命令继续仿真。
ucli% continue

查看和修改仿真参数命令

  • get:获取仿真参数的值。
ucli% get timescale

该命令将显示当前仿真的时间尺度。

  • set:设置仿真参数的值。
ucli% set timescale 1ns/1ps

此命令将仿真的时间尺度设置为 1 纳秒为单位,精度为 1 皮秒。

高级使用技巧

脚本化操作1

你可以将一系列 UCLI 命令保存到一个文本文件中,然后在 UCLI 环境中使用 source 命令执行该脚本。例如,创建一个名为 sim_script.ucli 的文件,内容如下:

run 100ns
display top_module.dut.result
stop

在 UCLI 中执行以下命令来运行该脚本:

ucli% source sim_script.ucli

脚本化操作2

当将 -ucli 和 -do 选项一起使用时,VCS 会在启动仿真并进入 UCLI 环境后,自动执行 -do 选项指定的脚本文件中的命令。执行完脚本中的命令后,你仍然可以在 UCLI 环境中手动输入其他命令继续进行交互操作。
示例命令:

./simv -ucli -do sim_commands.ucli

上述命令会启动仿真并进入 UCLI 环境,接着自动执行 sim_commands.ucli 脚本文件中的命令,完成仿真运行 200 纳秒、显示信号值和暂停仿真的操作。之后,你可以根据需要在 UCLI 提示符下输入其他命令进行进一步的调试和控制。
综上所述,vcs -ucli -do 组合的作用是在启用 UCLI 环境的同时,自动执行指定脚本文件中的 UCLI 命令,实现仿真过程的自动化和交互式调试。

posted @ 2025-03-01 22:27  MKYC  阅读(1806)  评论(0)    收藏  举报