Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
…rilog-to-routing into debug_3d_sw
  • Loading branch information
amin1377 committed Nov 6, 2024
2 parents 4c710fc + eb8c186 commit c904a7a
Show file tree
Hide file tree
Showing 154 changed files with 2,836 additions and 3,037 deletions.
31 changes: 17 additions & 14 deletions .github/workflows/nightly_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,23 @@ on:
# We want to run the CI when anything is pushed to master.
# Since master is a protected branch this only happens when a PR is merged.
# This is a double check in case the PR was stale and had some issues.
push:
branches:
- master
paths-ignore: # Prevents from running if only docs are updated
- 'doc/**'
- '**/*README*'
- '**.md'
- '**.rst'
pull_request:
paths-ignore: # Prevents from running if only docs are updated
- 'doc/**'
- '**/*README*'
- '**.md'
- '**.rst'
# NOTE: This was turned off in late October 2024 since the Nightly Tests were
# no longer working on the self-hosted runners. Will turn this back on
# once the issue is resolved.
# push:
# branches:
# - master
# paths-ignore: # Prevents from running if only docs are updated
# - 'doc/**'
# - '**/*README*'
# - '**.md'
# - '**.rst'
# pull_request:
# paths-ignore: # Prevents from running if only docs are updated
# - 'doc/**'
# - '**/*README*'
# - '**.md'
# - '**.rst'
workflow_dispatch:
schedule:
- cron: '0 0 * * *' # daily
Expand Down
4 changes: 2 additions & 2 deletions doc/src/arch/reference.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2337,8 +2337,8 @@ The ``<direct>`` tag and its contents are described below.
:req_param y_offset: The y location of the receiving CLB relative to the driving CLB.
:req_param z_offset: The z location of the receiving CLB relative to the driving CLB.
: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.
:opt_param from_side: The associated from_pin's block size (must be one of ``left``, ``right``, ``top``, ``bottom`` or left unspecified)
:opt_param to_side: The associated to_pin's block size (must be one of ``left``, ``right``, ``top``, ``bottom`` or left unspecified)
:opt_param from_side: The associated from_pin's block side (must be one of ``left``, ``right``, ``top``, ``bottom`` or left unspecified)
:opt_param to_side: The associated to_pin's block side (must be one of ``left``, ``right``, ``top``, ``bottom`` or left unspecified)

Describes a dedicated connection between two complex block pins that skips general interconnect.
This is useful for describing structures such as carry chains as well as adjacent neighbour connections.
Expand Down
53 changes: 37 additions & 16 deletions doc/src/vpr/command_line_usage.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1074,12 +1074,16 @@ The following options are only used when FPGA device and netlist contain a NoC r

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

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

Controls the algorithm used by the NoC to route packets.

* ``xy_routing`` Uses the direction oriented routing algorithm. This is recommended to be used with mesh NoC topologies.
* ``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.
* ``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.
* ``west_first_routing`` Uses the west-first routing algorithm. This is recommended to be used with mesh NoC topologies.
* ``north_last_routing`` Uses the north-last routing algorithm. This is recommended to be used with mesh NoC topologies.
* ``negative_first_routing`` Uses the negative-first routing algorithm. This is recommended to be used with mesh NoC topologies.
* ``odd_even_routing`` Uses the odd-even routing algorithm. This is recommended to be used with mesh NoC topologies.

**Default:** ``bfs_routing``

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

**Default:** ``0.6``
**Default:** ``5.0``

.. option:: --noc_aggregate_bandwidth_weighting <float>

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.
Other positive numbers specify the importance of minimizing the NoC aggregate bandwidth compared to other NoC-related cost terms.
Weighting factors for NoC-related cost terms are normalized internally. Therefore, their absolute values are not important, and
only their relative ratios determine the importance of each cost term.

**Default:** ``0.38``

.. option:: --noc_latency_constraints_weighting <float>

Controls the importance of meeting all the NoC traffic flow latency constraints.
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.
Other positive numbers specify the importance of meeting latency constraints compared to other NoC-related cost terms.
Weighting factors for NoC-related cost terms are normalized internally. Therefore, their absolute values are not important, and
only their relative ratios determine the importance of each cost term.

* ``latency_constraints = 0`` means the latency constraints have no relevance to placement.
* ``0 < latency_constraints < 1`` means the latency constraints are weighted equally to the sum of other placement cost components.
* ``latency_constraints > 1`` means the placement is increasingly dominated by reducing the latency constraints of the traffic flows.

**Default:** ``1``
**Default:** ``0.6``

.. option:: --noc_latency_weighting <float>

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

* ``latency = 0`` means the latencies have no relevance to placement.
* ``0 < latency < 1`` means the latencies are weighted equally to the sum of other placement cost components.
* ``latency > 1`` means the placement is increasingly dominated by reducing the latencies of the traffic flows.

**Default:** ``0.05``
**Default:** ``0.02``

.. option:: --noc_congestion_weighting <float>

Controls the importance of reducing the congestion of the NoC links.
This value can be >=0, where 0 would mean the congestion has no relevance to placement.
Other positive numbers specify the importance of minimizing congestion compared to other NoC-related cost terms.
Weighting factors for NoC-related cost terms are normalized internally. Therefore, their absolute values are not important, and
only their relative ratios determine the importance of each cost term.

**Default:** ``0.25``

.. option:: --noc_swap_percentage <float>

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

**Default:** ``40``
**Default:** ``0``

.. option:: --noc_placement_file_name <file>

Expand Down
6 changes: 3 additions & 3 deletions libs/libarchfpga/src/arch_check.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ void check_port_direct_mappings(t_physical_tile_type_ptr physical_tile, t_sub_ti
if (pb_type->num_pins > (sub_tile->num_phy_pins / sub_tile->capacity.total())) {
archfpga_throw(__FILE__, __LINE__,
"Logical Block (%s) has more pins than the Sub Tile (%s).\n",
logical_block->name, sub_tile->name);
logical_block->name.c_str(), sub_tile->name.c_str());
}

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

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

0 comments on commit c904a7a

Please sign in to comment.