tcl脚本中十六进制数(32';h和0x)的比较
我正在编写一个tcl脚本(在questasim中),它进行以下比较。但值相同,但仍不匹配。任何指向这一点的指针都会有所帮助 代码段: 结果: 在时间145.99 us时未检测到地址匹配 实际地址:44'h000ffff0000 预期地址:0xffff0000 使用tcl脚本中十六进制数(32';h和0x)的比较,tcl,Tcl,我正在编写一个tcl脚本(在questasim中),它进行以下比较。但值相同,但仍不匹配。任何指向这一点的指针都会有所帮助 代码段: 结果: 在时间145.99 us时未检测到地址匹配 实际地址:44'h000ffff0000 预期地址:0xffff0000 使用 要设置为十六进制值,根据检查命令和sim://路径,我猜测这类似于ModelSim的脚本。在这种情况下,44'h以Verilog方式标记44位十六进制值 可能获得数值比较的最简单的方法是请求一个不同的基数。如果使用examine-ra
要设置为十六进制值,根据
检查命令和sim://
路径,我猜测这类似于ModelSim的脚本。在这种情况下,44'h
以Verilog方式标记44位十六进制值
可能获得数值比较的最简单的方法是请求一个不同的基数。如果使用examine-radix unsigned
,则应获得十进制形式,并且可以使用expr
将0x形式的十六进制常量转换为数字
来源:Tcl wiki,ModelSim SE参考手册:命令:检查 您需要解码该地址。这是Tcl温文尔雅的超级英雄之一的工作
scan [examine -hex $Addr] "%d'h%x" BitWidth ActualAddr
现在,您应该能够使用数字比较(==
)与0xffff0000进行比较。作为奖励,您还获得了值中的实比特数(存储在BitWidth
变量中)。谢谢Donal。现在可以了!我也试过Yann的解决方案!这两种方法都有效。嗨,多纳尔,相同的比较方法不适用于“when”命令。例如,when-label my_addr“$actualadr==$expaddr”{…}
实际地址为44'h格式,expaddr为0x格式。你对此有什么想法吗?嗨,Yann,同样的比较不适用于“when”命令。例如,当-label my_addr“$actualaddr==$expaddr”{…}时,实际地址为44'h格式,expaddr为0x格式。你对此有什么想法吗?
ADDR MATCH NOT DETECTED @ time 145.99 us
Actual Address : 44'h000ffff0000
Expected Address : 0xffff0000
set hex 0xffff0000
scan [examine -hex $Addr] "%d'h%x" BitWidth ActualAddr