Kestrel Interface
Loading...
Searching...
No Matches
kest_reg_format.c
Go to the documentation of this file.
1#include <stdio.h>
2
3#include "kest_int.h"
4
5#ifndef PRINTLINES_ALLOWED
6#define PRINTLINES_ALLOWED 1
7#endif
8
9static const char *FNAME = "kest_reg_format.c";
10
11int kest_compute_register_formats(kest_block_pll *blocks, kest_expr_scope *scope)
12{
13 KEST_PRINTF("kest_compute_register_formats\n");
14 if (!blocks)
15 {
16 KEST_PRINTF("kest_compute_register_formats: no blocks!\n");
17 return NO_ERROR;
18 }
19
20 kest_block_pll *current = blocks;
21
22 kest_interval range;
23 float min, max;
24 float abs_min, abs_max;
25 float max_abs;
26 int format_0, format_1;
27 int shift_set;
28 float p2;
29
30 kest_string string;
31 kest_string_init(&string);
32 char *str = NULL;
33
34 int i = 0;
35 while (current)
36 {
37 if (current->data)
38 {
39 shift_set = current->data->shift_set;
40 format_0 = 0;
41 format_1 = 0;
42
43 /*
44 kest_string_appendf(&string, "kest_compute_register_formats(current->data = %p), shift_set = %d, reg_0_active: %d, reg_1_active: %d\n",
45 current->data, shift_set, current->data->reg_0.active, current->data->reg_1.active);
46 */
47 if (current->data->reg_0.active)
48 {
49 if (!shift_set && current->data->reg_0.expr)
50 format_0 = kest_expression_compute_format(current->data->reg_0.expr, scope, 8, KEST_FPGA_DATA_WIDTH);
51
52 current->data->reg_0.format = format_0;
53 }
54
55 if (current->data->reg_1.active)
56 {
57 if (!shift_set && current->data->reg_1.expr)
58 format_1 = kest_expression_compute_format(current->data->reg_1.expr, scope, 8, KEST_FPGA_DATA_WIDTH);
59
60 current->data->reg_1.format = format_1;
61 }
62
63 current->data->shift = format_0 + format_1;
64 /*
65 str = kest_string_to_native(&string);
66 KEST_PRINTF("%s", str);
67 kest_free(str);
68 kest_string_drain(&string);
69 */
70 }
71
72 current = current->next;
73 i++;
74 }
75
76 kest_string_destroy(&string);
77
78 KEST_PRINTF("kest_compute_register_formats done\n");
79
80 return NO_ERROR;
81}
#define NO_ERROR
int kest_expression_compute_format(kest_expression *expr, kest_expr_scope *scope, int fmax, int width)
#define KEST_FPGA_DATA_WIDTH
#define KEST_PRINTF(...)
Definition kest_printf.h:10
int kest_compute_register_formats(kest_block_pll *blocks, kest_expr_scope *scope)
int kest_string_init(kest_string *string)
Definition kest_string.c:12
int kest_string_destroy(kest_string *string)
Definition kest_string.c:97
char_list kest_string
Definition kest_string.h:6