39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
#
|
|
# Copyright 2023 Ettus Research, a National Instruments Brand
|
|
#
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
#
|
|
"""
|
|
Calculate hash values for license_check_tb
|
|
"""
|
|
|
|
import hashlib
|
|
|
|
serial = [0x01, 0x23, 0x45, 0x67, 0x8A, 0xBC, 0xDE, 0xF0, 0x0C, 0x0D, 0xE0, 0xBB]
|
|
pkey = [0x00] * 37 + [0x05, 0xEC]
|
|
feature0 = [0x00, 0x00, 0xC0, 0xDE]
|
|
feature1 = [0x00, 0x00, 0xF0, 0x0D]
|
|
|
|
def main():
|
|
"""
|
|
Calc and print hashes
|
|
"""
|
|
sha0 = hashlib.sha256()
|
|
sha0.update(bytes(serial + pkey + feature0))
|
|
hash0 = sha0.hexdigest()
|
|
sha1 = hashlib.sha256()
|
|
sha1.update(bytes(serial + pkey + feature1))
|
|
hash1 = sha1.hexdigest()
|
|
|
|
print(f"// Feature 0 hash: 256'h{hash0}")
|
|
hash0_words = [f"hash0_{int(i/8)} = 32'h" + hash0[i:i+8] for i in range(0, 64, 8)]
|
|
print("// Individual words:")
|
|
print(";\n localparam ".join(hash0_words))
|
|
print(f"// Feature 1 hash: 256'h{hash1}")
|
|
hash1_words = [f"hash1_{int(i/8)} = 32'h" + hash1[i:i+8] for i in range(0, 64, 8)]
|
|
print("// Individual words:")
|
|
print(";\n localparam ".join(hash1_words))
|
|
|
|
if __name__ == "__main__":
|
|
main()
|