3 #include <unordered_map> 8 #include "vtr_ndmatrix.h" 9 #include "vtr_vector.h" 12 #include "rr_graph_storage.h" 14 #include "rr_rc_data.h" 15 #include "tatum/TimingGraph.hpp" 16 #include "tatum/TimingConstraints.hpp" 18 #include "power_components.h" 20 #include "clock_network_builders.h" 21 #include "clock_connection_builders.h" 22 #include "route_traceback.h" 23 #include "router_lookahead.h" 24 #include "place_macro.h" 25 #include "compressed_grid.h" 79 std::shared_ptr<tatum::TimingGraph>
graph;
93 struct hash<
std::tuple<int, int, short>> {
94 std::size_t
operator()(
const std::tuple<int, int, short>& ok)
const noexcept {
95 std::size_t seed = std::hash<int>{}(std::get<0>(ok));
96 vtr::hash_combine(seed, std::get<1>(ok));
97 vtr::hash_combine(seed, std::get<2>(ok));
319 vtr::vector<ClusterNetId, t_traceback>
trace;
360 vtr::Cache<std::tuple<e_router_lookahead, std::string, std::vector<t_segment_inf>>,
Information about the current status of a particular net as pertains to routing.
Definition: vpr_types.h:1367
A Context is collection of state relating to a particular part of VPR.
Definition: vpr_context.h:37
std::vector< t_rr_switch_inf > rr_switch_inf
Definition: vpr_context.h:168
vtr::vector< ClusterNetId, std::unordered_set< int > > trace_nodes
Definition: vpr_context.h:320
std::shared_ptr< tatum::TimingGraph > graph
The current timing graph.
Definition: vpr_context.h:79
std::shared_ptr< tatum::TimingConstraints > constraints
The current timing constraints, as loaded from an SDC file (or set by default).
Definition: vpr_context.h:86
ClusteringContext clustering_
Definition: vpr_context.h:443
std::vector< t_pl_macro > pl_macros
The pl_macros array stores all the placement macros (usually carry chains).
Definition: vpr_context.h:293
const DeviceContext & device() const
Definition: vpr_context.h:417
std::size_t operator()(const std::tuple< int, int, short > &ok) const noexcept
Definition: vpr_context.h:94
std::vector< std::map< int, int > > switch_fanin_remap
switch_fanin_remap is only used for printing out switch fanin stats (the -switch_stats option) ...
Definition: vpr_context.h:219
vtr::vector< ClusterNetId, uint8_t > is_clock_net
Definition: vpr_context.h:323
t_power_components by_component
Definition: vpr_context.h:258
t_logical_block_type_ptr EMPTY_LOGICAL_BLOCK_TYPE
Definition: vpr_context.h:124
std::string read_rr_graph_filename
Name of rrgraph file read (if any).
Definition: vpr_context.h:236
std::vector< std::unique_ptr< ClockConnection > > clock_connections
Definition: vpr_context.h:181
TimingContext timing_
Definition: vpr_context.h:440
vtr::Matrix< t_grid_blocks > grid_blocks
Clustered block associated with each grid location (i.e. inverse of block_locs)
Definition: vpr_context.h:290
vtr::vector< ClusterNetId, t_bb > route_bb
Limits area within which each net must be routed.
Definition: vpr_context.h:344
Definition: vpr_context.h:91
vtr::Cache< std::tuple< e_router_lookahead, std::string, std::vector< t_segment_inf > >, RouterLookahead > cached_router_lookahead_
Cache of router lookahead object.
Definition: vpr_context.h:362
vtr::dynamic_bitset non_configurable_bitset
Information about whether a node is part of a non-configurable set.
Definition: vpr_context.h:338
std::string routing_id
SHA256 digest of the .route file.
Definition: vpr_context.h:353
This is a core file that defines the major data types used by VPR.
Definition: device_grid.h:17
MetadataStorage< int > rr_node_metadata
Attributes for each rr_node.
Definition: vpr_context.h:198
vtr::vector< ClusterNetId, std::vector< int > > net_rr_terminals
Definition: vpr_context.h:322
t_clock_arch * clock_arch
Definition: vpr_context.h:229
t_solution_inf solution_inf
Definition: vpr_context.h:249
std::vector< std::vector< int > > rr_non_config_node_sets
Sets of non-configurably connected nodes.
Definition: vpr_context.h:160
t_power_commonly_used * commonly_used
Definition: vpr_context.h:251
std::unordered_map< AtomNetId, t_net_power > atom_net_power
Atom net power info.
Definition: vpr_context.h:257
t_clb_opins_used clb_opins_used_locally
Definition: vpr_context.h:346
vtr::vector< ClusterNetId, t_traceback > trace
Definition: vpr_context.h:319
std::string placement_id
SHA256 digest of the .place file.
Definition: vpr_context.h:308
const PowerContext & power() const
Definition: vpr_context.h:423
std::vector< t_segment_inf > rr_segments
Wire segment types in RR graph.
Definition: vpr_context.h:171
The AtomLookup class describes the mapping between components in the AtomNetlist and other netlists/e...
Definition: atom_lookup.h:20
AtomNetlist nlist
Atom netlist.
Definition: vpr_context.h:57
This file defines the ClusteredNetlist class in the ClusteredContext created during pre-placement sta...
bool has_multiple_equivalent_tiles
Boolean that indicates whether the architecture implements an N:M physical tiles to logical blocks ma...
Definition: vpr_context.h:139
Definition: vpr_types.h:999
Definition: atom_netlist.h:80
t_power_output * output
Definition: vpr_context.h:250
t_rr_graph_storage rr_nodes
Definition: vpr_context.h:152
std::vector< t_rr_node_route_inf > rr_node_route_inf
Definition: vpr_context.h:327
Channel width data.
Definition: vpr_types.h:1440
TimingContext & mutable_timing()
Definition: vpr_context.h:421
Context & operator=(Context &)=delete
const t_arch * arch
Definition: vpr_context.h:224
RoutingContext & mutable_routing()
Definition: vpr_context.h:433
This object encapsulates VPR's state.
Definition: vpr_context.h:412
vtr::vector_map< ClusterBlockId, t_block_loc > block_locs
Clustered block placement locations.
Definition: vpr_context.h:284
vtr::vector< ClusterBlockId, std::vector< int > > rr_blk_source
Definition: vpr_context.h:325
t_physical_tile_type_ptr EMPTY_PHYSICAL_TILE_TYPE
Definition: vpr_context.h:123
PlacementContext & mutable_placement()
Definition: vpr_context.h:430
vtr::vector< ClusterBlockId, std::vector< std::vector< int > > > t_clb_opins_used
Definition: vpr_types.h:1506
std::vector< std::unique_ptr< ClockNetwork > > clock_networks
Definition: vpr_context.h:180
const AtomContext & atom() const
Definition: vpr_context.h:414
PowerContext power_
Definition: vpr_context.h:441
ClusteringContext & mutable_clustering()
Definition: vpr_context.h:427
t_power_arch * arch
Definition: vpr_context.h:253
std::unordered_map< int, int > rr_node_to_non_config_node_set
Reverse look-up from RR node to non-configurably connected node set (index into rr_nonconf_node_sets)...
Definition: vpr_context.h:163
State relating the device.
Definition: vpr_context.h:108
DeviceContext device_
Definition: vpr_context.h:436
vtr::vector_map< ClusterPinId, int > physical_pins
Clustered pin placement mapping with physical pin.
Definition: vpr_context.h:287
Definition: clustered_netlist.h:120
virtual ~Context()=default
ClusteredNetlist clb_nlist
New netlist class derived from Netlist.
Definition: vpr_context.h:273
State relating to clustering.
Definition: vpr_context.h:267
RoutingContext routing_
Definition: vpr_context.h:445
PlacementContext placement_
Definition: vpr_context.h:444
std::vector< t_physical_tile_type > physical_tile_types
Definition: vpr_context.h:132
vtr::vector< ClusterNetId, t_net_power > clb_net_power
Definition: vpr_context.h:254
t_timing_analysis_profile_info stats
Definition: vpr_context.h:88
int num_arch_switches
Definition: vpr_context.h:173
const PlacementContext & placement() const
Definition: vpr_context.h:429
AtomContext atom_
Definition: vpr_context.h:438
State relating to the atom-level netlist.
Definition: vpr_context.h:51
DeviceGrid grid
Definition: vpr_context.h:117
DeviceContext & mutable_device()
Definition: vpr_context.h:418
PowerContext & mutable_power()
Definition: vpr_context.h:424
State relating to power analysis.
Definition: vpr_context.h:245
t_arch_switch_inf * arch_switch_inf
Definition: vpr_context.h:174
State relating to placement.
Definition: vpr_context.h:282
const ClusteringContext & clustering() const
Definition: vpr_context.h:426
const RoutingContext & routing() const
Definition: vpr_context.h:432
t_power_tech * tech
Definition: vpr_context.h:252
t_compressed_block_grids compressed_block_grids
Compressed grid space for each block type.
Definition: vpr_context.h:301
std::array< vtr::NdMatrix< std::vector< int >, 3 >, NUM_RR_TYPES > t_rr_node_indices
Definition: vpr_types.h:1303
AtomContext & mutable_atom()
Definition: vpr_context.h:415
int virtual_clock_network_root_idx
rr_node idx that connects to the input of all clock network wires
Definition: vpr_context.h:190
AtomLookup lookup
Mappings to/from the Atom Netlist to physically described .blif models.
Definition: vpr_context.h:60
std::vector< t_rr_rc_data > rr_rc_data
Fly-weighted Resistance/Capacitance data for RR Nodes.
Definition: vpr_context.h:157
State relating to routing.
Definition: vpr_context.h:317
t_rr_node_indices rr_node_indices
The indicies of rr nodes of a given type at a specific x,y grid location.
Definition: vpr_context.h:166
std::vector< t_logical_block_type > logical_block_types
Definition: vpr_context.h:133
const TimingContext & timing() const
Definition: vpr_context.h:420
t_chan_width chan_width
chan_width is for x|y-directed channels; i.e. between rows
Definition: vpr_context.h:146
t_net_routing_status net_status
Information about current routing status of each net.
Definition: vpr_context.h:341
std::vector< t_rr_indexed_data > rr_indexed_data
Definition: vpr_context.h:154
This file defines the AtomNetlist class used to store and manipulate the primitive (or atom) netlist...
MetadataStorage< std::tuple< int, int, short > > rr_edge_metadata
Attributes for each rr_edge.
Definition: vpr_context.h:209
State relating to timing.
Definition: vpr_context.h:69