使用 Vivado 生成比特流时,生成的文件包含生成比特流的时间戳。此时间戳使得在不使用十六进制编辑器编辑比特流文件的情况下很难比较比特流(以查看它们是否相同)。 其他人提出了涉及生成“.bin”文件而不是“.bit”文件的解决方案,但这忽略了 UserID(可能还有存储在标头中的其他信息)。
如果您尚未生成比特流,请使用开放设计生成比特流:
set bitstream system_wrapper.bit
write_bitstream -force $bitstream
码流头格式比较简单,因此可以使用TCL将码流中的时间戳替换为常量时间戳(本例使用Unix Epoch,1970/01/01 00:00:00):
set h [open $bitstream "r+"]
fconfigure $h -translation binary
set offset 0xE
seek $h $offset
binary scan [read $h 2] S len
set offset [expr {$offset + 1 + $len + 2}]
seek $h $offset
binary scan [read $h 2] S len
set offset [expr {$offset + 1 + $len + 2}]
seek $h $offset
binary scan [read $h 2] S len
seek $h [expr {$offset + 2}]
puts -nonewline $h [clock format 0 -gmt 1 -format %Y/%m/%d]
set offset [expr {$offset + 1 + $len + 2}]
seek $h $offset
binary scan [read $h 2] S len
seek $h [expr {$offset + 2}]
puts -nonewline $h [clock format 0 -gmt 1 -format %H:%M:%S]
close $h
现在您可以轻松地将比特流与 md5sum 进行比较,而无需手动编辑比特流文件。