blob: 1a708f772cbae29c51fbbc4618b1747d47e8307e [file] [log] [blame] [edit]
""" Utility for generating TCL script to launch simulation on Vivado
"""
import argparse
def create_sim(f_out, args):
print("""
launch_simulation
""", file=f_out)
clock_pins = args.clock_pins.split(';')
clock_periods = args.clock_periods.split(';')
assert len(clock_pins) == len(clock_periods)
for clock_pin, clock_period in zip(clock_pins, map(float, clock_periods)):
print(
"""
add_force {{/{top}/{pin}}} -radix hex {{0 0ns}} {{1 {half_period}ns}} -repeat_every {period}ns
""".format(
top=args.top,
pin=clock_pin,
half_period=clock_period / 2.0,
period=clock_period,
),
file=f_out
)
print("""
restart
run 1us
run 1us
""", file=f_out)
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('--top', help="Top-level module name.", required=True)
parser.add_argument(
'--clock_pins',
help="Semi-colon seperated list of clock pins.",
required=True
)
parser.add_argument(
'--clock_periods',
help="Semi-colon seperated list of clock periods (in ns).",
required=True
)
parser.add_argument(
'--output_tcl', help="Filename of output TCL file.", required=True
)
args = parser.parse_args()
with open(args.output_tcl, 'w') as f:
create_sim(f, args)
if __name__ == "__main__":
main()