Skip to content

Commit b88108c

Browse files
authored
Merge pull request verilog-to-routing#909 from CAS-Atlantic/hard_block_name_collision
ODIN II: update response to hard block name collisions
2 parents d85eb6a + b8d2715 commit b88108c

14 files changed

+480
-22
lines changed

ODIN_II/SRC/netlist_create_from_ast.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5832,6 +5832,8 @@ signal_list_t *create_hard_block(ast_node_t* block, char *instance_name_prefix,
58325832
/* add the net to the list of inputs */
58335833
sc_spot = sc_add_string(input_nets_sc, pin_name);
58345834
input_nets_sc->data[sc_spot] = (void*)new_net;
5835+
5836+
vtr::free(pin_name);
58355837
}
58365838
current_out_idx += j;
58375839
}
@@ -5890,6 +5892,8 @@ signal_list_t *create_hard_block(ast_node_t* block, char *instance_name_prefix,
58905892
/* add the net to the list of inputs */
58915893
sc_spot = sc_add_string(input_nets_sc, pin_name);
58925894
input_nets_sc->data[sc_spot] = (void*)new_net;
5895+
5896+
vtr::free(pin_name);
58935897
}
58945898
current_out_idx += j;
58955899
}

ODIN_II/SRC/parse_making_ast.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1507,10 +1507,13 @@ ast_node_t *newModule(char* module_name, ast_node_t *list_of_parameters, ast_nod
15071507
long sc_spot;
15081508
ast_node_t *symbol_node = newSymbolNode(module_name, line_number);
15091509

1510-
if(sc_lookup_string(hard_block_names, module_name) != -1)
1510+
if( sc_lookup_string(hard_block_names, module_name) != -1
1511+
|| !strcmp(module_name, SINGLE_PORT_RAM_string)
1512+
|| !strcmp(module_name, DUAL_PORT_RAM_string)
1513+
)
15111514
{
1512-
warning_message(PARSE_ERROR, line_number, current_parse_file,
1513-
"Probable module name collision with hard block of the same name -> %s\n", module_name);
1515+
error_message(PARSE_ERROR, line_number, current_parse_file,
1516+
"Module name collides with hard block of the same name (%s)\n", module_name);
15141517
}
15151518

15161519
/* create a node for this array reference */

ODIN_II/regression_test/benchmark/suite/light_suite/task_list.conf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ regression_test/benchmark/task/arch_sweep
22
regression_test/benchmark/task/rs_decoder
33
regression_test/benchmark/task/cmd_line_args/*
44
regression_test/benchmark/task/func_simulator/*
5+
regression_test/benchmark/task/hard_blocks
56
regression_test/benchmark/task/multiclock/*
67
regression_test/benchmark/task/operators
78
regression_test/benchmark/task/syntax
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
########################
2+
# hard blocks benchmarks config
3+
########################
4+
5+
script_synthesis_params=--time_limit 3600s --tool valgrind
6+
script_simulation_params=--time_limit 3600s
7+
8+
# setup the architecture
9+
arch_dir=../vtr_flow/arch/timing
10+
11+
arch_list_add=k6_frac_N10_frac_chain_mem32K_40nm.xml
12+
13+
# setup the circuits
14+
circuit_dir=regression_test/benchmark/verilog/micro
15+
16+
circuit_list_add=adder_hard_block.v
17+
circuit_list_add=multiply_hard_block.v

ODIN_II/regression_test/benchmark/task/micro/task.conf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,8 @@ circuit_list_add=bm_if_common.v
8080
circuit_list_add=bm_if_collapse.v
8181
circuit_list_add=case_generate.v
8282
circuit_list_add=if_generate.v
83+
84+
# these require specific architectures to run without errors
85+
86+
# circuit_list_add=adder_hard_block.v
87+
# circuit_list_add=multiply_hard_block.v
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
module top_module
2+
(
3+
4+
input [1:0] a1, b1, a2, b2,
5+
input cin1, cin2,
6+
output [1:0] sumout1, sumout2,
7+
output cout1, cout2
8+
);
9+
10+
adder a1 (.a(a1), .b(b1), .cin(cin1), .sumout(sumout1), .cout(cout1));
11+
adder a2 (a2, b2, cin2, sumout2, cout2);
12+
13+
endmodule
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
GLOBAL_SIM_BASE_CLK a1 b1 a2 b2 cin1 cin2
2+
1 0X2 0X3 0X1 0X2 1 0
3+
0 0X2 0X1 0X0 0X0 1 0
4+
1 0X1 0X0 0X3 0X3 0 0
5+
0 0X3 0X1 0X1 0X3 1 1
6+
1 0X1 0X2 0X2 0X2 0 0
7+
0 0X0 0X2 0X3 0X2 0 1
8+
1 0X3 0X1 0X1 0X1 1 0
9+
0 0X1 0X1 0X0 0X0 1 1
10+
1 0X1 0X0 0X2 0X0 0 0
11+
0 0X1 0X0 0X3 0X1 1 0
12+
1 0X2 0X0 0X3 0X1 1 0
13+
0 0X3 0X3 0X3 0X3 1 0
14+
1 0X1 0X1 0X3 0X0 1 0
15+
0 0X3 0X0 0X2 0X2 0 1
16+
1 0X1 0X3 0X3 0X0 0 1
17+
0 0X1 0X0 0X0 0X1 1 1
18+
1 0X3 0X0 0X3 0X2 1 0
19+
0 0X2 0X3 0X3 0X0 1 1
20+
1 0X1 0X2 0X3 0X0 0 0
21+
0 0X0 0X3 0X1 0X2 0 1
22+
1 0X1 0X1 0X2 0X1 0 1
23+
0 0X0 0X3 0X1 0X2 0 0
24+
1 0X1 0X0 0X2 0X2 1 1
25+
0 0X2 0X0 0X0 0X2 0 0
26+
1 0X0 0X1 0X0 0X0 1 1
27+
0 0X2 0X3 0X1 0X1 0 1
28+
1 0X3 0X2 0X3 0X0 1 0
29+
0 0X0 0X0 0X0 0X2 1 0
30+
1 0X2 0X0 0X2 0X1 0 0
31+
0 0X2 0X1 0X3 0X3 1 0
32+
1 0X1 0X3 0X2 0X0 0 0
33+
0 0X2 0X2 0X0 0X0 0 0
34+
1 0X1 0X1 0X0 0X1 0 0
35+
0 0X3 0X1 0X2 0X0 1 1
36+
1 0X0 0X1 0X2 0X2 1 1
37+
0 0X2 0X1 0X2 0X0 0 0
38+
1 0X1 0X0 0X1 0X0 0 0
39+
0 0X1 0X3 0X1 0X0 1 0
40+
1 0X1 0X0 0X3 0X2 1 1
41+
0 0X1 0X2 0X0 0X1 1 1
42+
1 0X0 0X1 0X0 0X1 0 0
43+
0 0X2 0X3 0X1 0X2 0 1
44+
1 0X2 0X3 0X2 0X2 1 0
45+
0 0X1 0X3 0X3 0X1 0 1
46+
1 0X3 0X0 0X3 0X2 0 0
47+
0 0X3 0X0 0X1 0X2 1 1
48+
1 0X1 0X1 0X3 0X0 0 0
49+
0 0X0 0X1 0X0 0X0 0 0
50+
1 0X0 0X1 0X2 0X2 0 1
51+
0 0X3 0X0 0X2 0X0 0 1
52+
1 0X3 0X2 0X1 0X3 0 0
53+
0 0X0 0X2 0X0 0X3 1 1
54+
1 0X2 0X3 0X2 0X3 1 1
55+
0 0X1 0X3 0X2 0X0 1 0
56+
1 0X3 0X3 0X0 0X3 1 1
57+
0 0X0 0X3 0X1 0X0 0 1
58+
1 0X3 0X1 0X3 0X3 1 1
59+
0 0X0 0X2 0X1 0X0 1 1
60+
1 0X0 0X0 0X1 0X0 1 1
61+
0 0X0 0X2 0X3 0X1 1 1
62+
1 0X0 0X0 0X3 0X1 1 1
63+
0 0X3 0X1 0X1 0X1 1 0
64+
1 0X2 0X2 0X0 0X1 1 1
65+
0 0X2 0X3 0X2 0X2 0 0
66+
1 0X1 0X3 0X3 0X3 0 1
67+
0 0X0 0X1 0X3 0X0 0 0
68+
1 0X3 0X3 0X1 0X3 0 0
69+
0 0X1 0X3 0X1 0X1 1 1
70+
1 0X3 0X0 0X1 0X2 0 0
71+
0 0X3 0X0 0X2 0X0 1 0
72+
1 0X2 0X1 0X2 0X2 0 1
73+
0 0X2 0X0 0X2 0X0 0 0
74+
1 0X0 0X3 0X2 0X0 0 0
75+
0 0X3 0X3 0X1 0X1 1 1
76+
1 0X3 0X1 0X2 0X0 0 0
77+
0 0X1 0X2 0X2 0X3 0 0
78+
1 0X2 0X1 0X2 0X3 0 0
79+
0 0X2 0X3 0X3 0X0 1 1
80+
1 0X1 0X0 0X3 0X1 1 1
81+
0 0X2 0X2 0X3 0X2 0 0
82+
1 0X3 0X0 0X1 0X3 0 1
83+
0 0X2 0X1 0X2 0X3 0 0
84+
1 0X2 0X0 0X3 0X2 0 0
85+
0 0X0 0X0 0X2 0X2 1 0
86+
1 0X0 0X3 0X0 0X1 1 0
87+
0 0X1 0X3 0X0 0X1 1 1
88+
1 0X2 0X3 0X1 0X2 0 0
89+
0 0X3 0X0 0X1 0X3 1 1
90+
1 0X0 0X3 0X1 0X0 1 0
91+
0 0X0 0X0 0X2 0X2 1 0
92+
1 0X1 0X3 0X1 0X1 1 1
93+
0 0X1 0X3 0X3 0X2 0 0
94+
1 0X0 0X0 0X2 0X1 1 1
95+
0 0X1 0X2 0X1 0X3 1 0
96+
1 0X2 0X0 0X1 0X2 1 1
97+
0 0X3 0X1 0X0 0X2 0 1
98+
1 0X0 0X3 0X1 0X2 0 0
99+
0 0X0 0X1 0X1 0X0 1 1
100+
1 0X1 0X3 0X2 0X3 1 0
101+
0 0X2 0X3 0X1 0X3 1 1
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
sumout1 sumout2 cout1 cout2
2+
0X1 0X3 1 0
3+
0X3 0X0 0 0
4+
0X1 0X2 0 1
5+
0X0 0X0 1 1
6+
0X3 0X0 0 1
7+
0X2 0X1 0 1
8+
0X0 0X2 1 0
9+
0X2 0X0 0 0
10+
0X1 0X2 0 0
11+
0X1 0X0 0 1
12+
0X2 0X0 0 1
13+
0X2 0X2 1 1
14+
0X2 0X3 0 0
15+
0X3 0X0 0 1
16+
0X0 0X3 1 0
17+
0X1 0X1 0 0
18+
0X3 0X1 0 1
19+
0X1 0X3 1 0
20+
0X3 0X3 0 0
21+
0X3 0X3 0 0
22+
0X2 0X3 0 0
23+
0X3 0X3 0 0
24+
0X1 0X0 0 1
25+
0X2 0X2 0 0
26+
0X1 0X0 0 0
27+
0X1 0X2 1 0
28+
0X1 0X3 1 0
29+
0X0 0X2 0 0
30+
0X2 0X3 0 0
31+
0X3 0X2 0 1
32+
0X0 0X2 1 0
33+
0X0 0X0 1 0
34+
0X2 0X1 0 0
35+
0X0 0X2 1 0
36+
0X1 0X0 0 1
37+
0X3 0X2 0 0
38+
0X1 0X1 0 0
39+
0X0 0X1 1 0
40+
0X1 0X1 0 1
41+
0X3 0X1 0 0
42+
0X1 0X1 0 0
43+
0X1 0X3 1 0
44+
0X1 0X0 1 1
45+
0X0 0X0 1 1
46+
0X3 0X1 0 1
47+
0X3 0X3 0 0
48+
0X2 0X3 0 0
49+
0X1 0X0 0 0
50+
0X1 0X0 0 1
51+
0X3 0X2 0 0
52+
0X1 0X0 1 1
53+
0X2 0X3 0 0
54+
0X1 0X1 1 1
55+
0X0 0X2 1 0
56+
0X2 0X3 1 0
57+
0X3 0X1 0 0
58+
0X0 0X2 1 1
59+
0X2 0X1 0 0
60+
0X0 0X1 0 0
61+
0X2 0X0 0 1
62+
0X0 0X0 0 1
63+
0X0 0X2 1 0
64+
0X0 0X1 1 0
65+
0X1 0X0 1 1
66+
0X0 0X2 1 1
67+
0X1 0X3 0 0
68+
0X2 0X0 1 1
69+
0X0 0X2 1 0
70+
0X3 0X3 0 0
71+
0X3 0X2 0 0
72+
0X3 0X0 0 1
73+
0X2 0X2 0 0
74+
0X3 0X2 0 0
75+
0X2 0X2 1 0
76+
0X0 0X2 1 0
77+
0X3 0X1 0 1
78+
0X3 0X1 0 1
79+
0X1 0X3 1 0
80+
0X1 0X0 0 1
81+
0X0 0X1 1 1
82+
0X3 0X0 0 1
83+
0X3 0X1 0 1
84+
0X2 0X1 0 1
85+
0X0 0X0 0 1
86+
0X3 0X1 0 0
87+
0X0 0X1 1 0
88+
0X1 0X3 1 0
89+
0X3 0X0 0 1
90+
0X3 0X1 0 0
91+
0X0 0X0 0 1
92+
0X0 0X2 1 0
93+
0X0 0X1 1 1
94+
0X0 0X3 0 0
95+
0X3 0X0 0 1
96+
0X2 0X3 0 0
97+
0X0 0X2 1 0
98+
0X3 0X3 0 0
99+
0X1 0X1 0 0
100+
0X0 0X1 1 1
101+
0X1 0X0 1 1
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module top_module
2+
(
3+
4+
input [1:0] x1, x2, x3, x4,
5+
output [3:0] y1, y2
6+
);
7+
8+
multiply m1 (.a(x1), .b(x2), .out(y1));
9+
multiply m2 (x3, x4, y2);
10+
11+
endmodule

0 commit comments

Comments
 (0)