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 命令,实现仿真过程的自动化和交互式调试。

浙公网安备 33010602011771号