-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathvivado.py
46 lines (37 loc) · 1.22 KB
/
vivado.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
"""Yosys-Vivado example project."""
import argparse
import logging
from fpga.project import Project
logging.basicConfig()
parser = argparse.ArgumentParser()
parser.add_argument(
'--action', choices=['generate', 'transfer', 'all'], default='generate',
)
parser.add_argument(
'--lang', choices=['verilog', 'vhdl'], default='verilog',
)
args = parser.parse_args()
prj = Project('yosys-vivado')
prj.set_outdir('../../build/yosys-vivado-{}'.format(args.lang))
prj.set_part('xc7z010-1-clg400')
if args.lang == 'verilog':
prj.add_path('../../hdl/headers1')
prj.add_path('../../hdl/headers2')
prj.add_files('../../hdl/blinking.v')
prj.add_files('../../hdl/top.v')
else: # args.lang == 'vhdl'
prj.add_files('../../hdl/blinking.vhdl', library='examples')
prj.add_files('../../hdl/examples_pkg.vhdl', library='examples')
prj.add_files('../../hdl/top.vhdl')
prj.add_files('../vivado/zybo.xdc')
prj.set_top('Top')
if args.action in ['generate', 'all']:
try:
prj.generate()
except RuntimeError:
print('ERROR:generate:Docker or Vivado not found')
if args.action in ['transfer', 'all']:
try:
prj.transfer()
except RuntimeError:
print('ERROR:transfer:Vivado not found')