add comments to lb_router about how-to-use
This commit is contained in:
parent
2a260a05aa
commit
8e796f152f
|
@ -25,6 +25,50 @@
|
||||||
/* begin namespace openfpga */
|
/* begin namespace openfpga */
|
||||||
namespace openfpga {
|
namespace openfpga {
|
||||||
|
|
||||||
|
/********************************************************************
|
||||||
|
* A connection-driven router for programmable logic blocks
|
||||||
|
* The router supports routing multiple nets on a LbRRGraph object
|
||||||
|
* which models the routing resources in a programmable logic block
|
||||||
|
*
|
||||||
|
* Note:
|
||||||
|
* - This router will not build/allocate a LbRRGraph object
|
||||||
|
* Users must do it OUTSIDE this object!!!
|
||||||
|
* - This router supports multiple sources for single net
|
||||||
|
* which is more capable the original VPR lb_router
|
||||||
|
*
|
||||||
|
* How to use the router:
|
||||||
|
*
|
||||||
|
* // Create your own routing resource graph
|
||||||
|
* LbRRGraph lb_rr_graph = <your_lb_rr_graph_builder>();
|
||||||
|
*
|
||||||
|
* // Create a router object
|
||||||
|
* LbRouter lb_router(lb_rr_graph);
|
||||||
|
*
|
||||||
|
* // Add nets to be routed
|
||||||
|
* std::vector<LbRRNodeId> source_nodes = <find_your_source_node_in_your_lb_rr_graph>();
|
||||||
|
* std::vector<LbRRNodeId> sink_nodes = <find_your_sink_node_in_your_lb_rr_graph>();
|
||||||
|
* LbNetId net = lb_router.create_net_to_route(source_nodes, sink_nodes);
|
||||||
|
* // Add more nets
|
||||||
|
*
|
||||||
|
* // Initialize the modes to expand routing
|
||||||
|
* // This is a must-do before running the router in the purpose of repacking!!!
|
||||||
|
* lb_router.set_physical_pb_modes(lb_rr_graph, device_annotation);
|
||||||
|
*
|
||||||
|
* // Run the router
|
||||||
|
* bool route_success = lb_router.try_route(lb_rr_graph, atom_ctx.nlist, verbose);
|
||||||
|
*
|
||||||
|
* // Check routing status
|
||||||
|
* if (true == route_success) {
|
||||||
|
* // Succeed
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* // Read out routing results
|
||||||
|
* // Here is an example to check which nodes are mapped to the 'net' created before
|
||||||
|
* std::vector<LbRRNodeId> routed_nodes = lb_router.net_routed_nodes(net);
|
||||||
|
*
|
||||||
|
*******************************************************************/
|
||||||
|
|
||||||
|
|
||||||
class LbRouter {
|
class LbRouter {
|
||||||
public: /* Strong ids */
|
public: /* Strong ids */
|
||||||
struct net_id_tag;
|
struct net_id_tag;
|
||||||
|
|
Loading…
Reference in New Issue