Merge branch 'master' into graphics
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
# coding=utf-8
|
||||
from __future__ import print_function
|
||||
|
||||
import sys
|
||||
import os
|
||||
import os.path as path
|
||||
import re
|
||||
@@ -10,55 +11,19 @@ from datetime import datetime
|
||||
|
||||
script_dir = path.dirname(path.realpath(__file__))
|
||||
|
||||
defines = {}
|
||||
for k, v in os.environ.items():
|
||||
if k.upper().startswith('V_'):
|
||||
defines[k[2:]] = v
|
||||
|
||||
print('Custom params:', ', '.join(['='.join(x) for x in defines.items()]))
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--outc', default='none', help='Output C header')
|
||||
parser.add_argument('--outv', default='none', help='Output Verilog header')
|
||||
parser.add_argument('-i', "--input", default='none', help='Verilog header')
|
||||
parser.add_argument('-o', "--output", default='none', help='C header')
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.outc == 'none' and args.outv == 'none':
|
||||
print('Warning: not emitting any files. Specify arguments')
|
||||
|
||||
if args.outv != 'none':
|
||||
with open(args.outv, 'w') as f:
|
||||
print('''
|
||||
// auto-generated by gen_config.py. DO NOT EDIT
|
||||
// Generated at {date}
|
||||
|
||||
`ifndef VX_USER_CONFIG
|
||||
`define VX_USER_CONFIG
|
||||
'''[1:].format(date=datetime.now()), file=f)
|
||||
|
||||
for k, v in defines.items():
|
||||
print('`define {} {}'.format(k, v), file=f)
|
||||
|
||||
print('\n`endif', file=f)
|
||||
|
||||
if args.outc != 'none':
|
||||
with open(args.outc, 'w') as f:
|
||||
print('''
|
||||
// auto-generated by gen_config.py. DO NOT EDIT
|
||||
// Generated at {date}
|
||||
|
||||
#ifndef VX_USER_CONFIG
|
||||
#define VX_USER_CONFIG
|
||||
'''[1:].format(date=datetime.now()), file=f)
|
||||
|
||||
for k, v in defines.items():
|
||||
print('#define {} {}'.format(k, v), file=f)
|
||||
|
||||
print('\n#endif', file=f)
|
||||
if args.input == 'none' or args.output == 'none':
|
||||
print('Error: invalid arguments')
|
||||
sys.exit()
|
||||
|
||||
translation_rules = [
|
||||
# preprocessor directives
|
||||
(re.compile(r'^\s*`include .*$'), r''),
|
||||
(re.compile(r'`include\s+.*$'), r''),
|
||||
(re.compile(r'`ifdef'), r'#ifdef'),
|
||||
(re.compile(r'`ifndef'), r'#ifndef'),
|
||||
(re.compile(r'`elif'), r'#elif'),
|
||||
@@ -75,25 +40,24 @@ translation_rules = [
|
||||
(re.compile(r"\d+'h([\da-fA-F]+)"), r'0x\1')
|
||||
]
|
||||
|
||||
if args.outc != 'none':
|
||||
with open(args.outc, 'a') as f:
|
||||
print('''
|
||||
with open(args.output, 'w') as f:
|
||||
print('''
|
||||
// auto-generated by gen_config.py. DO NOT EDIT
|
||||
// Generated at {date}
|
||||
|
||||
// Translated from VX_config.vh:
|
||||
'''[1:].format(date=datetime.now()), file=f)
|
||||
with open(path.join(script_dir, '../rtl/VX_config.vh'), 'r') as r:
|
||||
lineno = 0
|
||||
for line in r:
|
||||
for pat, repl in translation_rules:
|
||||
match = pat.search(line)
|
||||
if match:
|
||||
line = re.sub(pat, repl, line)
|
||||
#print("*** match @" + str(lineno) + ": " + match.group() + " => " + line)
|
||||
f.write(line)
|
||||
lineno = lineno + 1
|
||||
print('''
|
||||
with open(args.input, 'r') as r:
|
||||
lineno = 0
|
||||
for line in r:
|
||||
for pat, repl in translation_rules:
|
||||
match = pat.search(line)
|
||||
if match:
|
||||
line = re.sub(pat, repl, line)
|
||||
#print("*** match @" + str(lineno) + ": " + match.group() + " => " + line)
|
||||
f.write(line)
|
||||
lineno = lineno + 1
|
||||
print('''
|
||||
'''[1:], file=f)
|
||||
|
||||
|
||||
|
||||
@@ -97,9 +97,8 @@
|
||||
"avs_byteenable":64,
|
||||
"avs_burstcount":4,
|
||||
"avs_readdatavalid":1,
|
||||
"mem_bank_select":1,
|
||||
"cci_dram_rd_req_ctr":26,
|
||||
"cci_dram_wr_req_ctr":26,
|
||||
"cci_mem_rd_req_ctr":26,
|
||||
"cci_mem_wr_req_ctr":26,
|
||||
"cci_rd_req_ctr":26,
|
||||
"cci_rd_rsp_ctr":3,
|
||||
"cci_wr_req_ctr":26,
|
||||
@@ -110,23 +109,23 @@
|
||||
"!cci_pending_reads_full":1,
|
||||
"!cci_pending_writes_empty":1,
|
||||
"!cci_pending_writes_full": 1,
|
||||
"?afu_dram_req_fire": 1,
|
||||
"afu_dram_req_addr": 26,
|
||||
"afu_dram_req_tag": 28,
|
||||
"?afu_dram_rsp_fire": 1,
|
||||
"afu_dram_rsp_tag": 28
|
||||
"?afu_mem_req_fire": 1,
|
||||
"afu_mem_req_addr": 26,
|
||||
"afu_mem_req_tag": 28,
|
||||
"?afu_mem_rsp_fire": 1,
|
||||
"afu_mem_rsp_tag": 28
|
||||
},
|
||||
"afu/vortex": {
|
||||
"!reset": 1,
|
||||
"?dram_req_fire": 1,
|
||||
"dram_req_addr": 32,
|
||||
"dram_req_rw": 1,
|
||||
"dram_req_byteen":"`VX_DRAM_BYTEEN_WIDTH",
|
||||
"dram_req_data":"`VX_DRAM_LINE_WIDTH",
|
||||
"dram_req_tag":"`VX_DRAM_TAG_WIDTH",
|
||||
"?dram_rsp_fire": 1,
|
||||
"dram_rsp_data":"`VX_DRAM_LINE_WIDTH",
|
||||
"dram_rsp_tag":"`VX_DRAM_TAG_WIDTH",
|
||||
"?mem_req_fire": 1,
|
||||
"mem_req_addr": 32,
|
||||
"mem_req_rw": 1,
|
||||
"mem_req_byteen":"`VX_MEM_BYTEEN_WIDTH",
|
||||
"mem_req_data":"`VX_MEM_LINE_WIDTH",
|
||||
"mem_req_tag":"`VX_MEM_TAG_WIDTH",
|
||||
"?mem_rsp_fire": 1,
|
||||
"mem_rsp_data":"`VX_MEM_LINE_WIDTH",
|
||||
"mem_rsp_tag":"`VX_MEM_TAG_WIDTH",
|
||||
"busy": 1
|
||||
},
|
||||
"afu/vortex/cluster/core/pipeline/fetch/icache_stage": {
|
||||
@@ -207,7 +206,7 @@
|
||||
"force_miss_st0": 1,
|
||||
"mshr_push": 1,
|
||||
"?crsq_in_stall": 1,
|
||||
"?dreq_alm_full": 1,
|
||||
"?mreq_alm_full": 1,
|
||||
"?mshr_alm_full": 1
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user