mcpat_sys/
xml_parse.rs

1use libc::{c_char, c_double, c_int};
2use libc::c_char as c_bool;
3
4#[derive(Clone, Copy, Debug)]
5#[repr(C)]
6pub struct ParseXML;
7
8extern "C" {
9    pub fn new_ParseXML() -> *mut ParseXML;
10    pub fn delete_ParseXML(this: *mut ParseXML);
11    pub fn ParseXML_parse(this: *mut ParseXML, filename: *mut c_char);
12    pub fn ParseXML_sys(this: *mut ParseXML) -> *mut root_system;
13}
14
15#[derive(Clone, Copy, Debug)]
16#[repr(C)]
17pub struct predictor_systemcore {
18    pub prediction_width: c_int,
19    pub prediction_scheme: [c_char; 20],
20    pub predictor_size: c_int,
21    pub predictor_entries: c_int,
22    pub local_predictor_size: [c_int; 20],
23    pub local_predictor_entries: c_int,
24    pub global_predictor_entries: c_int,
25    pub global_predictor_bits: c_int,
26    pub chooser_predictor_entries: c_int,
27    pub chooser_predictor_bits: c_int,
28    pub predictor_accesses: c_double,
29}
30
31#[derive(Clone, Copy, Debug)]
32#[repr(C)]
33pub struct itlb_systemcore {
34    pub number_entries: c_int,
35    pub cache_policy: c_int,
36    pub total_hits: c_double,
37    pub total_accesses: c_double,
38    pub total_misses: c_double,
39    pub conflicts: c_double,
40}
41
42#[derive(Clone, Copy, Debug)]
43#[repr(C)]
44pub struct icache_systemcore {
45    pub icache_config: [c_double; 20],
46    pub buffer_sizes: [c_int; 20],
47    pub cache_policy: c_int,
48    pub total_accesses: c_double,
49    pub read_accesses: c_double,
50    pub read_misses: c_double,
51    pub replacements: c_double,
52    pub read_hits: c_double,
53    pub total_hits: c_double,
54    pub total_misses: c_double,
55    pub miss_buffer_access: c_double,
56    pub fill_buffer_accesses: c_double,
57    pub prefetch_buffer_accesses: c_double,
58    pub prefetch_buffer_writes: c_double,
59    pub prefetch_buffer_reads: c_double,
60    pub prefetch_buffer_hits: c_double,
61    pub conflicts: c_double,
62}
63
64#[derive(Clone, Copy, Debug)]
65#[repr(C)]
66pub struct dtlb_systemcore {
67    pub number_entries: c_int,
68    pub cache_policy: c_int,
69    pub total_accesses: c_double,
70    pub read_accesses: c_double,
71    pub write_accesses: c_double,
72    pub write_hits: c_double,
73    pub read_hits: c_double,
74    pub read_misses: c_double,
75    pub write_misses: c_double,
76    pub total_hits: c_double,
77    pub total_misses: c_double,
78    pub conflicts: c_double,
79}
80
81#[derive(Clone, Copy, Debug)]
82#[repr(C)]
83pub struct dcache_systemcore {
84    pub dcache_config: [c_double; 20],
85    pub buffer_sizes: [c_int; 20],
86    pub cache_policy: c_int,
87    pub total_accesses: c_double,
88    pub read_accesses: c_double,
89    pub write_accesses: c_double,
90    pub total_hits: c_double,
91    pub total_misses: c_double,
92    pub read_hits: c_double,
93    pub write_hits: c_double,
94    pub read_misses: c_double,
95    pub write_misses: c_double,
96    pub replacements: c_double,
97    pub write_backs: c_double,
98    pub miss_buffer_access: c_double,
99    pub fill_buffer_accesses: c_double,
100    pub prefetch_buffer_accesses: c_double,
101    pub prefetch_buffer_writes: c_double,
102    pub prefetch_buffer_reads: c_double,
103    pub prefetch_buffer_hits: c_double,
104    pub wbb_writes: c_double,
105    pub wbb_reads: c_double,
106    pub conflicts: c_double,
107}
108
109#[derive(Clone, Copy, Debug)]
110#[repr(C)]
111pub struct BTB_systemcore {
112    pub BTB_config: [c_int; 20],
113    pub total_accesses: c_double,
114    pub read_accesses: c_double,
115    pub write_accesses: c_double,
116    pub total_hits: c_double,
117    pub total_misses: c_double,
118    pub read_hits: c_double,
119    pub write_hits: c_double,
120    pub read_misses: c_double,
121    pub write_misses: c_double,
122    pub replacements: c_double,
123}
124
125#[derive(Clone, Copy, Debug)]
126#[repr(C)]
127pub struct system_core {
128    pub clock_rate: c_int,
129    pub opt_local: c_bool,
130    pub x86: c_bool,
131    pub machine_bits: c_int,
132    pub virtual_address_width: c_int,
133    pub physical_address_width: c_int,
134    pub opcode_width: c_int,
135    pub micro_opcode_width: c_int,
136    pub instruction_length: c_int,
137    pub machine_type: c_int,
138    pub internal_datapath_width: c_int,
139    pub number_hardware_threads: c_int,
140    pub fetch_width: c_int,
141    pub number_instruction_fetch_ports: c_int,
142    pub decode_width: c_int,
143    pub issue_width: c_int,
144    pub peak_issue_width: c_int,
145    pub commit_width: c_int,
146    pub pipelines_per_core: [c_int; 20],
147    pub pipeline_depth: [c_int; 20],
148    pub FPU: [c_char; 20],
149    pub divider_multiplier: [c_char; 20],
150    pub ALU_per_core: c_int,
151    pub FPU_per_core: c_double,
152    pub MUL_per_core: c_int,
153    pub instruction_buffer_size: c_int,
154    pub decoded_stream_buffer_size: c_int,
155    pub instruction_window_scheme: c_int,
156    pub instruction_window_size: c_int,
157    pub fp_instruction_window_size: c_int,
158    pub ROB_size: c_int,
159    pub archi_Regs_IRF_size: c_int,
160    pub archi_Regs_FRF_size: c_int,
161    pub phy_Regs_IRF_size: c_int,
162    pub phy_Regs_FRF_size: c_int,
163    pub rename_scheme: c_int,
164    pub checkpoint_depth: c_int,
165    pub register_windows_size: c_int,
166    pub LSU_order: [c_char; 20],
167    pub store_buffer_size: c_int,
168    pub load_buffer_size: c_int,
169    pub memory_ports: c_int,
170    pub Dcache_dual_pump: [c_char; 20],
171    pub RAS_size: c_int,
172    pub fp_issue_width: c_int,
173    pub prediction_width: c_int,
174    pub number_of_BTB: c_int,
175    pub number_of_BPT: c_int,
176    pub total_instructions: c_double,
177    pub int_instructions: c_double,
178    pub fp_instructions: c_double,
179    pub branch_instructions: c_double,
180    pub branch_mispredictions: c_double,
181    pub committed_instructions: c_double,
182    pub committed_int_instructions: c_double,
183    pub committed_fp_instructions: c_double,
184    pub load_instructions: c_double,
185    pub store_instructions: c_double,
186    pub total_cycles: c_double,
187    pub idle_cycles: c_double,
188    pub busy_cycles: c_double,
189    pub instruction_buffer_reads: c_double,
190    pub instruction_buffer_write: c_double,
191    pub ROB_reads: c_double,
192    pub ROB_writes: c_double,
193    pub rename_accesses: c_double,
194    pub fp_rename_accesses: c_double,
195    pub rename_reads: c_double,
196    pub rename_writes: c_double,
197    pub fp_rename_reads: c_double,
198    pub fp_rename_writes: c_double,
199    pub inst_window_reads: c_double,
200    pub inst_window_writes: c_double,
201    pub inst_window_wakeup_accesses: c_double,
202    pub inst_window_selections: c_double,
203    pub fp_inst_window_reads: c_double,
204    pub fp_inst_window_writes: c_double,
205    pub fp_inst_window_wakeup_accesses: c_double,
206    pub fp_inst_window_selections: c_double,
207    pub archi_int_regfile_reads: c_double,
208    pub archi_float_regfile_reads: c_double,
209    pub phy_int_regfile_reads: c_double,
210    pub phy_float_regfile_reads: c_double,
211    pub phy_int_regfile_writes: c_double,
212    pub phy_float_regfile_writes: c_double,
213    pub archi_int_regfile_writes: c_double,
214    pub archi_float_regfile_writes: c_double,
215    pub int_regfile_reads: c_double,
216    pub float_regfile_reads: c_double,
217    pub int_regfile_writes: c_double,
218    pub float_regfile_writes: c_double,
219    pub windowed_reg_accesses: c_double,
220    pub windowed_reg_transports: c_double,
221    pub function_calls: c_double,
222    pub context_switches: c_double,
223    pub ialu_accesses: c_double,
224    pub fpu_accesses: c_double,
225    pub mul_accesses: c_double,
226    pub cdb_alu_accesses: c_double,
227    pub cdb_mul_accesses: c_double,
228    pub cdb_fpu_accesses: c_double,
229    pub load_buffer_reads: c_double,
230    pub load_buffer_writes: c_double,
231    pub load_buffer_cams: c_double,
232    pub store_buffer_reads: c_double,
233    pub store_buffer_writes: c_double,
234    pub store_buffer_cams: c_double,
235    pub store_buffer_forwards: c_double,
236    pub main_memory_access: c_double,
237    pub main_memory_read: c_double,
238    pub main_memory_write: c_double,
239    pub pipeline_duty_cycle: c_double,
240    pub IFU_duty_cycle : c_double,
241    pub BR_duty_cycle : c_double,
242    pub LSU_duty_cycle : c_double,
243    pub MemManU_I_duty_cycle: c_double,
244    pub MemManU_D_duty_cycle : c_double,
245    pub ALU_duty_cycle : c_double,
246    pub MUL_duty_cycle : c_double,
247    pub FPU_duty_cycle : c_double,
248    pub ALU_cdb_duty_cycle : c_double,
249    pub MUL_cdb_duty_cycle : c_double,
250    pub FPU_cdb_duty_cycle : c_double,
251    pub vdd: c_double,
252    pub power_gating_vcc: c_double,
253    pub predictor: predictor_systemcore,
254    pub itlb: itlb_systemcore,
255    pub icache: icache_systemcore,
256    pub dtlb: dtlb_systemcore,
257    pub dcache: dcache_systemcore,
258    pub BTB: BTB_systemcore,
259}
260
261#[derive(Clone, Copy, Debug)]
262#[repr(C)]
263pub struct system_L1Directory {
264    pub Directory_type: c_int,
265    pub Dir_config: [c_double; 20],
266    pub buffer_sizes: [c_int; 20],
267    pub clockrate: c_int,
268    pub ports: [c_int; 20],
269    pub device_type: c_int,
270    pub cache_policy: c_int,
271    pub threeD_stack: [c_char; 20],
272    pub vdd: c_double,
273    pub power_gating_vcc: c_double,
274    pub total_accesses: c_double,
275    pub read_accesses: c_double,
276    pub write_accesses: c_double,
277    pub read_misses: c_double,
278    pub write_misses: c_double,
279    pub conflicts: c_double,
280    pub duty_cycle: c_double,
281}
282
283#[derive(Clone, Copy, Debug)]
284#[repr(C)]
285pub struct system_L2Directory {
286    pub Directory_type: c_int,
287    pub Dir_config: [c_double; 20],
288    pub buffer_sizes: [c_int; 20],
289    pub clockrate: c_int,
290    pub ports: [c_int; 20],
291    pub device_type: c_int,
292    pub cache_policy: c_int,
293    pub threeD_stack: [c_char; 20],
294    pub vdd: c_double,
295    pub power_gating_vcc: c_double,
296    pub total_accesses: c_double,
297    pub read_accesses: c_double,
298    pub write_accesses: c_double,
299    pub read_misses: c_double,
300    pub write_misses: c_double,
301    pub conflicts: c_double,
302    pub duty_cycle: c_double,
303}
304
305#[derive(Clone, Copy, Debug)]
306#[repr(C)]
307pub struct system_L2 {
308    pub L2_config: [c_double; 20],
309    pub clockrate: c_int,
310    pub ports: [c_int; 20],
311    pub device_type: c_int,
312    pub cache_policy: c_int,
313    pub threeD_stack: [c_char; 20],
314    pub buffer_sizes: [c_int; 20],
315    pub vdd: c_double,
316    pub power_gating_vcc: c_double,
317    pub total_accesses: c_double,
318    pub read_accesses: c_double,
319    pub write_accesses: c_double,
320    pub total_hits: c_double,
321    pub total_misses: c_double,
322    pub read_hits: c_double,
323    pub write_hits: c_double,
324    pub read_misses: c_double,
325    pub write_misses: c_double,
326    pub replacements: c_double,
327    pub write_backs: c_double,
328    pub miss_buffer_accesses: c_double,
329    pub fill_buffer_accesses: c_double,
330    pub prefetch_buffer_accesses: c_double,
331    pub prefetch_buffer_writes: c_double,
332    pub prefetch_buffer_reads: c_double,
333    pub prefetch_buffer_hits: c_double,
334    pub wbb_writes: c_double,
335    pub wbb_reads: c_double,
336    pub conflicts: c_double,
337    pub duty_cycle: c_double,
338    pub merged_dir: c_bool,
339    pub homenode_read_accesses: c_double,
340    pub homenode_write_accesses: c_double,
341    pub homenode_read_hits: c_double,
342    pub homenode_write_hits: c_double,
343    pub homenode_read_misses: c_double,
344    pub homenode_write_misses: c_double,
345    pub dir_duty_cycle: c_double,
346}
347
348#[derive(Clone, Copy, Debug)]
349#[repr(C)]
350pub struct system_L3 {
351    pub L3_config: [c_double; 20],
352    pub clockrate: c_int,
353    pub ports: [c_int; 20],
354    pub device_type: c_int,
355    pub cache_policy: c_int,
356    pub threeD_stack: [c_char; 20],
357    pub buffer_sizes: [c_int; 20],
358    pub vdd: c_double,
359    pub power_gating_vcc: c_double,
360    pub total_accesses: c_double,
361    pub read_accesses: c_double,
362    pub write_accesses: c_double,
363    pub total_hits: c_double,
364    pub total_misses: c_double,
365    pub read_hits: c_double,
366    pub write_hits: c_double,
367    pub read_misses: c_double,
368    pub write_misses: c_double,
369    pub replacements: c_double,
370    pub write_backs: c_double,
371    pub miss_buffer_accesses: c_double,
372    pub fill_buffer_accesses: c_double,
373    pub prefetch_buffer_accesses: c_double,
374    pub prefetch_buffer_writes: c_double,
375    pub prefetch_buffer_reads: c_double,
376    pub prefetch_buffer_hits: c_double,
377    pub wbb_writes: c_double,
378    pub wbb_reads: c_double,
379    pub conflicts: c_double,
380    pub duty_cycle: c_double,
381    pub merged_dir: c_bool,
382    pub homenode_read_accesses: c_double,
383    pub homenode_write_accesses: c_double,
384    pub homenode_read_hits: c_double,
385    pub homenode_write_hits: c_double,
386    pub homenode_read_misses: c_double,
387    pub homenode_write_misses: c_double,
388    pub dir_duty_cycle: c_double,
389}
390
391#[derive(Clone, Copy, Debug)]
392#[repr(C)]
393pub struct xbar0_systemNoC {
394    pub number_of_inputs_of_crossbars: c_int,
395    pub number_of_outputs_of_crossbars: c_int,
396    pub flit_bits: c_int,
397    pub input_buffer_entries_per_port: c_int,
398    pub ports_of_input_buffer: [c_int; 20],
399    pub crossbar_accesses: c_double,
400}
401
402#[derive(Clone, Copy, Debug)]
403#[repr(C)]
404pub struct system_NoC {
405    pub clockrate: c_int,
406    pub kind: c_bool, // type
407    pub has_global_link: c_bool,
408    pub topology: [c_char; 20],
409    pub horizontal_nodes: c_int,
410    pub vertical_nodes: c_int,
411    pub link_throughput: c_int,
412    pub link_latency: c_int,
413    pub input_ports: c_int,
414    pub output_ports: c_int,
415    pub virtual_channel_per_port: c_int,
416    pub flit_bits: c_int,
417    pub input_buffer_entries_per_vc: c_int,
418    pub ports_of_input_buffer: [c_int; 20],
419    pub dual_pump: c_int,
420    pub number_of_crossbars: c_int,
421    pub crossbar_type: [c_char; 20],
422    pub crosspoint_type: [c_char; 20],
423    pub xbar0: xbar0_systemNoC,
424    pub arbiter_type: c_int,
425    pub chip_coverage: c_double,
426    pub vdd: c_double,
427    pub power_gating_vcc: c_double,
428    pub total_accesses: c_double,
429    pub duty_cycle: c_double,
430    pub route_over_perc: c_double,
431}
432
433#[derive(Clone, Copy, Debug)]
434#[repr(C)]
435pub struct system_mem {
436    pub mem_tech_node: c_int,
437    pub device_clock: c_int,
438    pub peak_transfer_rate: c_int,
439    pub internal_prefetch_of_DRAM_chip: c_int,
440    pub capacity_per_channel: c_int,
441    pub number_ranks: c_int,
442    pub num_banks_of_DRAM_chip: c_int,
443    pub Block_width_of_DRAM_chip: c_int,
444    pub output_width_of_DRAM_chip: c_int,
445    pub page_size_of_DRAM_chip: c_int,
446    pub burstlength_of_DRAM_chip: c_int,
447    pub memory_accesses: c_double,
448    pub memory_reads: c_double,
449    pub memory_writes: c_double,
450}
451
452#[derive(Clone, Copy, Debug)]
453#[repr(C)]
454pub struct system_mc {
455    pub peak_transfer_rate: c_double,
456    pub number_mcs: c_int,
457    pub withPHY: c_bool,
458    pub kind: c_int, // type
459    pub duty_cycle: c_double,
460    pub total_load_perc: c_double,
461    pub mc_clock: c_int,
462    pub llc_line_length: c_int,
463    pub memory_channels_per_mc: c_int,
464    pub number_ranks: c_int,
465    pub req_window_size_per_channel: c_int,
466    pub IO_buffer_size_per_channel: c_int,
467    pub databus_width: c_int,
468    pub addressbus_width: c_int,
469    pub LVDS: c_bool,
470    pub vdd: c_double,
471    pub power_gating_vcc: c_double,
472    pub memory_accesses: c_double,
473    pub memory_reads: c_double,
474    pub memory_writes: c_double,
475}
476
477#[derive(Clone, Copy, Debug)]
478#[repr(C)]
479pub struct system_niu {
480    pub clockrate: c_int,
481    pub number_units: c_int,
482    pub kind: c_int, // type
483    pub vdd: c_double,
484    pub power_gating_vcc: c_double,
485    pub duty_cycle: c_double,
486    pub total_load_perc: c_double,
487}
488
489#[derive(Clone, Copy, Debug)]
490#[repr(C)]
491pub struct system_pcie {
492    pub clockrate: c_int,
493    pub number_units: c_int,
494    pub num_channels: c_int,
495    pub kind: c_int, // type
496    pub withPHY: c_bool,
497    pub vdd: c_double,
498    pub power_gating_vcc: c_double,
499    pub duty_cycle: c_double,
500    pub total_load_perc: c_double,
501}
502
503#[repr(C)]
504pub struct root_system {
505    pub number_of_cores: c_int,
506    pub number_of_L1Directories: c_int,
507    pub number_of_L2Directories: c_int,
508    pub number_of_L2s: c_int,
509    pub Private_L2: c_bool,
510    pub number_of_L3s: c_int,
511    pub number_of_NoCs: c_int,
512    pub number_of_dir_levels: c_int,
513    pub domain_size: c_int,
514    pub first_level_dir: c_int,
515    pub homogeneous_cores: c_int,
516    pub homogeneous_L1Directories: c_int,
517    pub homogeneous_L2Directories: c_int,
518    pub core_tech_node: c_double,
519    pub target_core_clockrate: c_int,
520    pub target_chip_area: c_int,
521    pub temperature: c_int,
522    pub number_cache_levels: c_int,
523    pub L1_property: c_int,
524    pub L2_property: c_int,
525    pub homogeneous_L2s: c_int,
526    pub L3_property: c_int,
527    pub homogeneous_L3s: c_int,
528    pub homogeneous_NoCs: c_int,
529    pub homogeneous_ccs: c_int,
530    pub Max_area_deviation: c_int,
531    pub Max_power_deviation: c_int,
532    pub device_type: c_int,
533    pub longer_channel_device: c_bool,
534    pub power_gating: c_bool,
535    pub Embedded: c_bool,
536    pub opt_dynamic_power: c_bool,
537    pub opt_lakage_power: c_bool,
538    pub opt_clockrate: c_bool,
539    pub opt_area: c_bool,
540    pub interconnect_projection_type: c_int,
541    pub machine_bits: c_int,
542    pub virtual_address_width: c_int,
543    pub physical_address_width: c_int,
544    pub virtual_memory_page_size: c_int,
545    pub total_cycles: c_double,
546    pub vdd: c_double,
547    pub power_gating_vcc: c_double,
548    pub core: [system_core; 64],
549    pub L1Directory: [system_L1Directory; 64],
550    pub L2Directory: [system_L2Directory; 64],
551    pub L2: [system_L2; 64],
552    pub L3: [system_L3; 64],
553    pub NoC: [system_NoC; 64],
554    pub mem: system_mem,
555    pub mc: system_mc,
556    pub flashc: system_mc,
557    pub niu: system_niu,
558    pub pcie: system_pcie,
559}