Skip to content

Commit b96878a

Browse files
Merge branch 'openfpga' into patch-1
2 parents 9240ab6 + 8178b71 commit b96878a

File tree

198 files changed

+6371
-3564
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

198 files changed

+6371
-3564
lines changed

.github/workflows/nightly_test.yml

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,23 @@ on:
44
# We want to run the CI when anything is pushed to master.
55
# Since master is a protected branch this only happens when a PR is merged.
66
# This is a double check in case the PR was stale and had some issues.
7-
push:
8-
branches:
9-
- master
10-
paths-ignore: # Prevents from running if only docs are updated
11-
- 'doc/**'
12-
- '**/*README*'
13-
- '**.md'
14-
- '**.rst'
15-
pull_request:
16-
paths-ignore: # Prevents from running if only docs are updated
17-
- 'doc/**'
18-
- '**/*README*'
19-
- '**.md'
20-
- '**.rst'
7+
# NOTE: This was turned off in late October 2024 since the Nightly Tests were
8+
# no longer working on the self-hosted runners. Will turn this back on
9+
# once the issue is resolved.
10+
# push:
11+
# branches:
12+
# - master
13+
# paths-ignore: # Prevents from running if only docs are updated
14+
# - 'doc/**'
15+
# - '**/*README*'
16+
# - '**.md'
17+
# - '**.rst'
18+
# pull_request:
19+
# paths-ignore: # Prevents from running if only docs are updated
20+
# - 'doc/**'
21+
# - '**/*README*'
22+
# - '**.md'
23+
# - '**.rst'
2124
workflow_dispatch:
2225
schedule:
2326
- cron: '0 0 * * *' # daily

doc/src/arch/reference.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2337,8 +2337,8 @@ The ``<direct>`` tag and its contents are described below.
23372337
:req_param y_offset: The y location of the receiving CLB relative to the driving CLB.
23382338
:req_param z_offset: The z location of the receiving CLB relative to the driving CLB.
23392339
:opt_param switch_name: [Optional, defaults to delay-less switch if not specified] The name of the ``<switch>`` from ``<switchlist>`` to be used for this direct connection.
2340-
:opt_param from_side: The associated from_pin's block size (must be one of ``left``, ``right``, ``top``, ``bottom`` or left unspecified)
2341-
:opt_param to_side: The associated to_pin's block size (must be one of ``left``, ``right``, ``top``, ``bottom`` or left unspecified)
2340+
:opt_param from_side: The associated from_pin's block side (must be one of ``left``, ``right``, ``top``, ``bottom`` or left unspecified)
2341+
:opt_param to_side: The associated to_pin's block side (must be one of ``left``, ``right``, ``top``, ``bottom`` or left unspecified)
23422342

23432343
Describes a dedicated connection between two complex block pins that skips general interconnect.
23442344
This is useful for describing structures such as carry chains as well as adjacent neighbour connections.

doc/src/vpr/command_line_usage.rst

Lines changed: 37 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1074,12 +1074,16 @@ The following options are only used when FPGA device and netlist contain a NoC r
10741074

10751075
.. note:: noc_flows_file are required to specify if NoC optimization is turned on (--noc on).
10761076

1077-
.. option:: --noc_routing_algorithm {xy_routing | bfs_routing}
1077+
.. option:: --noc_routing_algorithm {xy_routing | bfs_routing | west_first_routing | north_last_routing | negative_first_routing | odd_even_routing}
10781078

10791079
Controls the algorithm used by the NoC to route packets.
10801080

10811081
* ``xy_routing`` Uses the direction oriented routing algorithm. This is recommended to be used with mesh NoC topologies.
1082-
* ``bfs_routing`` Uses the breadth first search algorithm. The objective is to find a route that uses a minimum number of links. This can be used with any NoC topology.
1082+
* ``bfs_routing`` Uses the breadth first search algorithm. The objective is to find a route that uses a minimum number of links. This algorithm is not guaranteed to generate deadlock-free traffic flow routes, but can be used with any NoC topology.
1083+
* ``west_first_routing`` Uses the west-first routing algorithm. This is recommended to be used with mesh NoC topologies.
1084+
* ``north_last_routing`` Uses the north-last routing algorithm. This is recommended to be used with mesh NoC topologies.
1085+
* ``negative_first_routing`` Uses the negative-first routing algorithm. This is recommended to be used with mesh NoC topologies.
1086+
* ``odd_even_routing`` Uses the odd-even routing algorithm. This is recommended to be used with mesh NoC topologies.
10831087

10841088
**Default:** ``bfs_routing``
10851089

@@ -1091,28 +1095,45 @@ The following options are only used when FPGA device and netlist contain a NoC r
10911095
* ``noc_placement_weighting = 1`` means noc placement is considered equal to timing and wirelength.
10921096
* ``noc_placement_weighting > 1`` means the placement is increasingly dominated by NoC parameters.
10931097

1094-
**Default:** ``0.6``
1098+
**Default:** ``5.0``
1099+
1100+
.. option:: --noc_aggregate_bandwidth_weighting <float>
1101+
1102+
Controls the importance of minimizing the NoC aggregate bandwidth. This value can be >=0, where 0 would mean the aggregate bandwidth has no relevance to placement.
1103+
Other positive numbers specify the importance of minimizing the NoC aggregate bandwidth compared to other NoC-related cost terms.
1104+
Weighting factors for NoC-related cost terms are normalized internally. Therefore, their absolute values are not important, and
1105+
only their relative ratios determine the importance of each cost term.
1106+
1107+
**Default:** ``0.38``
10951108

10961109
.. option:: --noc_latency_constraints_weighting <float>
10971110

1098-
Controls the importance of meeting all the NoC traffic flow latency constraints.
1111+
Controls the importance of meeting all the NoC traffic flow latency constraints. This value can be >=0, where 0 would mean latency constraints have no relevance to placement.
1112+
Other positive numbers specify the importance of meeting latency constraints compared to other NoC-related cost terms.
1113+
Weighting factors for NoC-related cost terms are normalized internally. Therefore, their absolute values are not important, and
1114+
only their relative ratios determine the importance of each cost term.
10991115

1100-
* ``latency_constraints = 0`` means the latency constraints have no relevance to placement.
1101-
* ``0 < latency_constraints < 1`` means the latency constraints are weighted equally to the sum of other placement cost components.
1102-
* ``latency_constraints > 1`` means the placement is increasingly dominated by reducing the latency constraints of the traffic flows.
1103-
1104-
**Default:** ``1``
1116+
**Default:** ``0.6``
11051117

11061118
.. option:: --noc_latency_weighting <float>
11071119

11081120
Controls the importance of reducing the latencies of the NoC traffic flows.
1109-
This value can be >=0,
1121+
This value can be >=0, where 0 would mean the latencies have no relevance to placement
1122+
Other positive numbers specify the importance of minimizing aggregate latency compared to other NoC-related cost terms.
1123+
Weighting factors for NoC-related cost terms are normalized internally. Therefore, their absolute values are not important, and
1124+
only their relative ratios determine the importance of each cost term.
11101125

1111-
* ``latency = 0`` means the latencies have no relevance to placement.
1112-
* ``0 < latency < 1`` means the latencies are weighted equally to the sum of other placement cost components.
1113-
* ``latency > 1`` means the placement is increasingly dominated by reducing the latencies of the traffic flows.
1114-
1115-
**Default:** ``0.05``
1126+
**Default:** ``0.02``
1127+
1128+
.. option:: --noc_congestion_weighting <float>
1129+
1130+
Controls the importance of reducing the congestion of the NoC links.
1131+
This value can be >=0, where 0 would mean the congestion has no relevance to placement.
1132+
Other positive numbers specify the importance of minimizing congestion compared to other NoC-related cost terms.
1133+
Weighting factors for NoC-related cost terms are normalized internally. Therefore, their absolute values are not important, and
1134+
only their relative ratios determine the importance of each cost term.
1135+
1136+
**Default:** ``0.25``
11161137

11171138
.. option:: --noc_swap_percentage <float>
11181139

@@ -1122,7 +1143,7 @@ The following options are only used when FPGA device and netlist contain a NoC r
11221143
* ``0`` means NoC blocks will be moved at the same rate as other blocks.
11231144
* ``100`` means all swaps attempted by the placer are NoC router blocks.
11241145

1125-
**Default:** ``40``
1146+
**Default:** ``0``
11261147

11271148
.. option:: --noc_placement_file_name <file>
11281149

libs/libarchfpga/src/arch_check.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ void check_port_direct_mappings(t_physical_tile_type_ptr physical_tile, t_sub_ti
101101
if (pb_type->num_pins > (sub_tile->num_phy_pins / sub_tile->capacity.total())) {
102102
archfpga_throw(__FILE__, __LINE__,
103103
"Logical Block (%s) has more pins than the Sub Tile (%s).\n",
104-
logical_block->name, sub_tile->name);
104+
logical_block->name.c_str(), sub_tile->name.c_str());
105105
}
106106

107107
auto& pin_direct_maps = physical_tile->tile_block_pin_directs_map.at(logical_block->index);
@@ -110,7 +110,7 @@ void check_port_direct_mappings(t_physical_tile_type_ptr physical_tile, t_sub_ti
110110
if (pb_type->num_pins != (int)pin_direct_map.size()) {
111111
archfpga_throw(__FILE__, __LINE__,
112112
"Logical block (%s) and Sub tile (%s) have a different number of ports.\n",
113-
logical_block->name, physical_tile->name);
113+
logical_block->name.c_str(), physical_tile->name.c_str());
114114
}
115115

116116
for (auto pin_map : pin_direct_map) {
@@ -126,7 +126,7 @@ void check_port_direct_mappings(t_physical_tile_type_ptr physical_tile, t_sub_ti
126126
|| sub_tile_port->equivalent != block_port->equivalent) {
127127
archfpga_throw(__FILE__, __LINE__,
128128
"Logical block (%s) and Physical tile (%s) do not have equivalent port specifications. Sub tile port %s, logical block port %s\n",
129-
logical_block->name, sub_tile->name, sub_tile_port->name, block_port->name);
129+
logical_block->name.c_str(), sub_tile->name.c_str(), sub_tile_port->name, block_port->name);
130130
}
131131
}
132132
}

0 commit comments

Comments
 (0)