ucli接口与tcl 8.6兼容;vcs中要调用ucli接口,执行脚本,必须在compile的时候,加入debug的权限;
-debug,-debug_pp,-debug_all,-debug_access,-debug_region
在run的时候,指定vcs -ucli [run_option]
hierarchical name的path,verilog使用"."作为默认的hier分隔符;
vhdl使用"/"作为默认的hier分隔符;
verilog可以对name的fork,,,end,begin,,,end块使用,也识别task和function的名称;
ucli对于ntb-sv的支持不是很全面,有几点是不支持的;
1)clock domain;
2)virtual interface;
3)random constraint;
4)stop -event不能是automatic的变量;
5)event变量不支持;
在调用uclI的时候,time 0的时候,会有一个initialization的过程,实现对static变量和function的处理;
如果要debug这时的信息,需要加--ucli=init -nba/-delta(可选),
program中的static类型变量,不需要加这个option;
ucli提供的命令:
1)call,调用verilog或者vhdl中的system task;
2)stop,设置断点;
典型应用,类似与when命令,stop -quiet -continue -posedge clk -condition {mysig1= 1'd0 and mysig2='d1} -command {
echo "breakpoint1"
force -freeze mysig 0
}
3)echo和redirect命令,重定向输出;
echo "string" 输出到stdout;
exec echo > vars.list 输出到vars.list;
redirect vars.list 输出vars.list的值到stdout;
4)exec 执行操作系统的命令,输出被ucli tcl处理;
5)search -scope +name 在某个scope下,搜索每个name的pattern,返回一个list
6)tcheck intance_path SETUPHOLD -msg -xgen -disable,disable掉某instance_path的setuphold timing检查,不产生msg,不产生x;
7) force release cmd。
8) run num.ns 表示执行num个ns的防止。