13
13
"""
14
14
import sys
15
15
import logging
16
+ import pandas as pd
17
+ from tabulate import tabulate
16
18
from pygen_src .isa import rv32i_instr
17
19
from pygen_src .isa import rv32m_instr
18
20
from pygen_src .isa import rv32c_instr
21
+ from pygen_src .riscv_instr_gen_config import cfg
19
22
from pygen_src .riscv_directed_instr_lib import (riscv_directed_instr_stream ,
20
23
riscv_int_numeric_corner_stream ,
21
24
riscv_jal_instr )
@@ -34,6 +37,7 @@ def factory(obj_of):
34
37
logging .critical ("Cannot Create object of %s" , obj_of )
35
38
sys .exit (1 )
36
39
40
+
37
41
def get_object (instr ):
38
42
try :
39
43
instr_inst = eval ("rv32i_instr.riscv_" + instr .name + "_instr()" )
@@ -44,7 +48,145 @@ def get_object(instr):
44
48
try :
45
49
instr_inst = eval ("rv32c_instr.riscv_" + instr .name + "_instr()" )
46
50
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 )
49
53
return instr_inst
50
54
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' ))
0 commit comments