Commit b84c76be authored by Dimitris Lampridis's avatar Dimitris Lampridis

Merge branch '33-tools-generate-version-information-in-gen_sourceid-py' into 'master'

Resolve "tools: generate version information in gen_sourceid.py"

See merge request !21
parents ba4bbfd2 13c5a2bd
# Script to generate the buildinfo_pkg.vhd file
# Script to generate the sourceid_<project>_pkg.vhd file
# Local parameter: project
# Note: this script differs from the (similar) gen_buildinfo.py in that it produces std_logic
# vectors with versioning info to be embedded in the metadata, while buildinfo produces a string
# that focuses more on when/how/who built the bitstream.
with open("sourceid_{}_pkg.vhd".format(project), "w") as f:
import subprocess
import time
import re
# Extract current commit id.
try:
......@@ -22,6 +27,12 @@ with open("sourceid_{}_pkg.vhd".format(project), "w") as f:
except:
dirty = True
try:
version = re.search("\d+\.\d+\.\d+", tag)
major,minor,patch = [int(x) for x in version.group().split('.')]
except:
major = minor = patch = 0
if dirty:
# There is no room for a dirty flag, just erase half of the bytes, so
# that's obvious it's not a real sha1, and still leaves enough to
......@@ -32,10 +43,12 @@ with open("sourceid_{}_pkg.vhd".format(project), "w") as f:
f.write("--\n")
f.write("-- This file was automatically generated; do not edit\n")
f.write("\n")
f.write("library ieee;")
f.write("use ieee.std_logic_1164.all;")
f.write("library ieee;\n")
f.write("use ieee.std_logic_1164.all;\n")
f.write("\n")
f.write("package sourceid_{}_pkg is\n".format(project))
f.write(" constant sourceid : std_logic_vector(127 downto 0) :=\n")
f.write(' x"{}";\n'.format(sourceid))
f.write(" constant version : std_logic_vector(31 downto 0) := ")
f.write('x"{:02x}{:02x}{:04x}";\n'.format(major & 0xff, minor & 0xff, patch & 0xffff))
f.write('end sourceid_{}_pkg;\n'.format(project))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment