Skip to content

Commit 0b7b969

Browse files
committed
generate gen_config data in tabular format
1 parent 7f754fc commit 0b7b969

File tree

3 files changed

+147
-2
lines changed

3 files changed

+147
-2
lines changed

pygen/pygen_src/riscv_utils.py

+144-2
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,12 @@
1313
"""
1414
import sys
1515
import logging
16+
import pandas as pd
17+
from tabulate import tabulate
1618
from pygen_src.isa import rv32i_instr
1719
from pygen_src.isa import rv32m_instr
1820
from pygen_src.isa import rv32c_instr
21+
from pygen_src.riscv_instr_gen_config import cfg
1922
from pygen_src.riscv_directed_instr_lib import (riscv_directed_instr_stream,
2023
riscv_int_numeric_corner_stream,
2124
riscv_jal_instr)
@@ -34,6 +37,7 @@ def factory(obj_of):
3437
logging.critical("Cannot Create object of %s", obj_of)
3538
sys.exit(1)
3639

40+
3741
def get_object(instr):
3842
try:
3943
instr_inst = eval("rv32i_instr.riscv_" + instr.name + "_instr()")
@@ -44,7 +48,145 @@ def get_object(instr):
4448
try:
4549
instr_inst = eval("rv32c_instr.riscv_" + instr.name + "_instr()")
4650
except Exception:
47-
logging.critical("Failed to create instr: %0s", instr.name)
48-
sys.exit(1)
51+
logging.critical("Failed to create instr: %0s", instr.name)
52+
sys.exit(1)
4953
return instr_inst
5054

55+
56+
def gen_config_table():
57+
data = []
58+
data.append(['main_program_instr_cnt', type(cfg.main_program_instr_cnt),
59+
sys.getsizeof(cfg.main_program_instr_cnt), cfg.main_program_instr_cnt])
60+
data.append(['sub_program_instr_cnt', type(cfg.sub_program_instr_cnt),
61+
sys.getsizeof(cfg.sub_program_instr_cnt), cfg.sub_program_instr_cnt])
62+
data.append(['debug_program_instr_cnt', type(cfg.debug_program_instr_cnt),
63+
sys.getsizeof(cfg.debug_program_instr_cnt), cfg.debug_program_instr_cnt])
64+
data.append(['debug_sub_program_instr_cnt', type(cfg.debug_sub_program_instr_cnt),
65+
sys.getsizeof(cfg.debug_sub_program_instr_cnt),
66+
cfg.debug_sub_program_instr_cnt])
67+
data.append(['max_directed_instr_stream_seq', type(cfg.max_directed_instr_stream_seq),
68+
sys.getsizeof(cfg.max_directed_instr_stream_seq),
69+
cfg.max_directed_instr_stream_seq])
70+
data.append(['data_page_pattern', type(cfg.data_page_pattern),
71+
sys.getsizeof(cfg.data_page_pattern), cfg.data_page_pattern])
72+
data.append(['init_privileged_mode', type(cfg.init_privileged_mode),
73+
sys.getsizeof(cfg.init_privileged_mode), cfg.init_privileged_mode])
74+
data.append(['scratch_reg', type(cfg.scratch_reg),
75+
sys.getsizeof(cfg.scratch_reg), cfg.scratch_reg])
76+
data.append(['pmp_reg', type(cfg.pmp_reg), sys.getsizeof(cfg.pmp_reg), cfg.pmp_reg])
77+
data.append(['reserved_regs', type(cfg.reserved_regs),
78+
sys.getsizeof(cfg.reserved_regs), cfg.reserved_regs])
79+
data.append(['sp', type(cfg.sp), sys.getsizeof(cfg.sp), cfg.sp])
80+
data.append(['tp', type(cfg.tp), sys.getsizeof(cfg.tp), cfg.tp])
81+
data.append(['ra', type(cfg.ra), sys.getsizeof(cfg.ra), cfg.ra])
82+
data.append(['check_misa_init_val', type(cfg.check_misa_init_val),
83+
sys.getsizeof(cfg.check_misa_init_val), cfg.check_misa_init_val])
84+
data.append(['check_xstatus', type(cfg.check_xstatus),
85+
sys.getsizeof(cfg.check_xstatus), cfg.check_xstatus])
86+
data.append(['virtual_addr_translation_on', type(cfg.virtual_addr_translation_on),
87+
sys.getsizeof(cfg.virtual_addr_translation_on),
88+
cfg.virtual_addr_translation_on])
89+
data.append(['kernel_stack_len', type(cfg.kernel_stack_len),
90+
sys.getsizeof(cfg.kernel_stack_len), cfg.kernel_stack_len])
91+
data.append(['kernel_program_instr_cnt', type(cfg.kernel_program_instr_cnt),
92+
sys.getsizeof(cfg.kernel_program_instr_cnt), cfg.kernel_program_instr_cnt])
93+
data.append(['num_of_sub_program', type(cfg.num_of_sub_program),
94+
sys.getsizeof(cfg.num_of_sub_program), cfg.num_of_sub_program])
95+
data.append(['instr_cnt', type(cfg.instr_cnt), sys.getsizeof(cfg.instr_cnt), cfg.instr_cnt])
96+
data.append(['num_of_tests', type(cfg.num_of_tests),
97+
sys.getsizeof(cfg.num_of_tests), cfg.num_of_tests])
98+
data.append(['no_data_page', type(cfg.no_data_page),
99+
sys.getsizeof(cfg.no_data_page), cfg.no_data_page])
100+
data.append(['no_branch_jump', type(cfg.no_branch_jump),
101+
sys.getsizeof(cfg.no_branch_jump), cfg.no_branch_jump])
102+
data.append(['no_load_store', type(cfg.no_load_store),
103+
sys.getsizeof(cfg.no_load_store), cfg.no_load_store])
104+
data.append(['no_csr_instr', type(cfg.no_csr_instr),
105+
sys.getsizeof(cfg.no_csr_instr), cfg.no_csr_instr])
106+
data.append(['no_ebreak', type(cfg.no_ebreak), sys.getsizeof(cfg.no_ebreak), cfg.no_ebreak])
107+
data.append(['no_dret', type(cfg.no_dret), sys.getsizeof(cfg.no_dret), cfg.no_dret])
108+
data.append(['no_fence', type(cfg.no_fence), sys.getsizeof(cfg.no_fence), cfg.no_fence])
109+
data.append(['no_wfi', type(cfg.no_wfi), sys.getsizeof(cfg.no_wfi), cfg.no_wfi])
110+
data.append(['enable_unaligned_load_store', type(cfg.enable_unaligned_load_store),
111+
sys.getsizeof(cfg.enable_unaligned_load_store),
112+
cfg.enable_unaligned_load_store])
113+
data.append(['illegal_instr_ratio', type(cfg.illegal_instr_ratio),
114+
sys.getsizeof(cfg.illegal_instr_ratio), cfg.illegal_instr_ratio])
115+
data.append(['hint_instr_ratio', type(cfg.hint_instr_ratio),
116+
sys.getsizeof(cfg.hint_instr_ratio), cfg.hint_instr_ratio])
117+
data.append(['num_of_harts', type(cfg.num_of_harts),
118+
sys.getsizeof(cfg.num_of_harts), cfg.num_of_harts])
119+
data.append(['fix_sp', type(cfg.fix_sp), sys.getsizeof(cfg.fix_sp), cfg.fix_sp])
120+
data.append(['use_push_data_section', type(cfg.use_push_data_section),
121+
sys.getsizeof(cfg.use_push_data_section), cfg.use_push_data_section])
122+
data.append(['boot_mode_opts', type(cfg.boot_mode_opts),
123+
sys.getsizeof(cfg.boot_mode_opts), cfg.boot_mode_opts])
124+
data.append(['enable_page_table_exception', type(cfg.enable_page_table_exception),
125+
sys.getsizeof(cfg.enable_page_table_exception),
126+
cfg.enable_page_table_exception])
127+
data.append(['no_directed_instr', type(cfg.no_directed_instr),
128+
sys.getsizeof(cfg.no_directed_instr), cfg.no_directed_instr])
129+
data.append(['asm_test_suffix', type(cfg.asm_test_suffix),
130+
sys.getsizeof(cfg.asm_test_suffix), cfg.asm_test_suffix])
131+
data.append(['enable_interrupt', type(cfg.enable_interrupt),
132+
sys.getsizeof(cfg.enable_interrupt), cfg.enable_interrupt])
133+
data.append(['enable_nested_interrupt', type(cfg.enable_nested_interrupt),
134+
sys.getsizeof(cfg.enable_nested_interrupt), cfg.enable_nested_interrupt])
135+
data.append(['enable_timer_irq', type(cfg.enable_timer_irq),
136+
sys.getsizeof(cfg.enable_timer_irq), cfg.enable_timer_irq])
137+
data.append(['bare_program_mode', type(cfg.bare_program_mode),
138+
sys.getsizeof(cfg.bare_program_mode), cfg.bare_program_mode])
139+
data.append(['enable_illegal_csr_instruction', type(cfg.enable_illegal_csr_instruction),
140+
sys.getsizeof(cfg.enable_illegal_csr_instruction),
141+
cfg.enable_illegal_csr_instruction])
142+
data.append(['enable_access_invalid_csr_level', type(cfg.enable_access_invalid_csr_level),
143+
sys.getsizeof(cfg.enable_access_invalid_csr_level),
144+
cfg.enable_access_invalid_csr_level])
145+
data.append(['enable_misaligned_instr', type(cfg.enable_misaligned_instr),
146+
sys.getsizeof(cfg.enable_misaligned_instr), cfg.enable_misaligned_instr])
147+
data.append(['enable_dummy_csr_write', type(cfg.enable_dummy_csr_write),
148+
sys.getsizeof(cfg.enable_dummy_csr_write), cfg.enable_dummy_csr_write])
149+
data.append(['randomize_csr', type(cfg.randomize_csr),
150+
sys.getsizeof(cfg.randomize_csr), cfg.randomize_csr])
151+
data.append(['allow_sfence_exception', type(cfg.allow_sfence_exception),
152+
sys.getsizeof(cfg.allow_sfence_exception), cfg.allow_sfence_exception])
153+
data.append(['no_delegation', type(cfg.no_delegation),
154+
sys.getsizeof(cfg.no_delegation), cfg.no_delegation])
155+
data.append(['force_m_delegation', type(cfg.force_m_delegation),
156+
sys.getsizeof(cfg.force_m_delegation), cfg.force_m_delegation])
157+
data.append(['force_s_delegation', type(cfg.force_s_delegation),
158+
sys.getsizeof(cfg.force_s_delegation), cfg.force_s_delegation])
159+
data.append(['support_supervisor_mode', type(cfg.support_supervisor_mode),
160+
sys.getsizeof(cfg.support_supervisor_mode), cfg.support_supervisor_mode])
161+
data.append(['disable_compressed_instr', type(cfg.disable_compressed_instr),
162+
sys.getsizeof(cfg.disable_compressed_instr), cfg.disable_compressed_instr])
163+
data.append(['require_signature_addr', type(cfg.require_signature_addr),
164+
sys.getsizeof(cfg.require_signature_addr), cfg.require_signature_addr])
165+
data.append(['signature_addr', type(cfg.signature_addr),
166+
sys.getsizeof(cfg.signature_addr), cfg.signature_addr])
167+
data.append(['gen_debug_section', type(cfg.gen_debug_section),
168+
sys.getsizeof(cfg.gen_debug_section), cfg.force_s_delegation])
169+
data.append(['enable_ebreak_in_debug_rom', type(cfg.enable_ebreak_in_debug_rom),
170+
sys.getsizeof(cfg.enable_ebreak_in_debug_rom), cfg.enable_ebreak_in_debug_rom])
171+
data.append(['set_dcsr_ebreak', type(cfg.set_dcsr_ebreak),
172+
sys.getsizeof(cfg.set_dcsr_ebreak), cfg.set_dcsr_ebreak])
173+
data.append(['num_debug_sub_program', type(cfg.num_debug_sub_program),
174+
sys.getsizeof(cfg.num_debug_sub_program), cfg.num_debug_sub_program])
175+
data.append(['enable_debug_single_step', type(cfg.enable_debug_single_step),
176+
sys.getsizeof(cfg.enable_debug_single_step), cfg.enable_debug_single_step])
177+
data.append(['single_step_iterations', type(cfg.single_step_iterations),
178+
sys.getsizeof(cfg.single_step_iterations), cfg.single_step_iterations])
179+
data.append(['set_mstatus_tw', type(cfg.set_mstatus_tw),
180+
sys.getsizeof(cfg.set_mstatus_tw), cfg.set_mstatus_tw])
181+
data.append(['set_mstatus_mprv', type(cfg.set_mstatus_mprv),
182+
sys.getsizeof(cfg.set_mstatus_mprv), cfg.set_mstatus_mprv])
183+
data.append(['enable_floating_point', type(cfg.enable_floating_point),
184+
sys.getsizeof(cfg.enable_floating_point), cfg.enable_floating_point])
185+
data.append(['enable_vector_extension', type(cfg.enable_vector_extension),
186+
sys.getsizeof(cfg.enable_vector_extension), cfg.enable_vector_extension])
187+
data.append(['enable_b_extension', type(cfg.enable_b_extension),
188+
sys.getsizeof(cfg.enable_b_extension), cfg.enable_b_extension])
189+
190+
df = pd.DataFrame(data, columns=['Name', 'Type', 'Size', 'Value'])
191+
df['Value'] = df['Value'].apply(str)
192+
logging.info('\n' + tabulate(df, headers='keys', tablefmt='psql'))

pygen/pygen_src/test/riscv_instr_base_test.py

+2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from pygen_src.isa.rv32c_instr import * # NOQA
2424
from pygen_src.isa.riscv_instr import riscv_instr # NOQA
2525
from pygen_src.riscv_asm_program_gen import riscv_asm_program_gen # NOQA
26+
from pygen_src.riscv_utils import gen_config_table
2627

2728

2829
class riscv_instr_base_test:
@@ -33,6 +34,7 @@ def __init__(self):
3334
def run_phase(self):
3435
for _ in range(cfg.num_of_tests):
3536
cfg.randomize()
37+
gen_config_table()
3638
asm = riscv_asm_program_gen()
3739
riscv_instr.create_instr_list(cfg)
3840
if cfg.asm_test_suffix != "":

requirements.txt

+1
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ rst2pdf
99
flake8
1010
pyvsc
1111
tabulate
12+
pandas

0 commit comments

Comments
 (0)