Verilog to Routing - VPR
atom_netlist_fwd.h
Go to the documentation of this file.
1 #ifndef ATOM_NETLIST_FWD_H
2 #define ATOM_NETLIST_FWD_H
3 #include "vtr_strong_id.h"
4 #include "netlist_fwd.h"
5 /*
6  * This header forward declares the AtomNetlist class, and defines common types by it
7  */
8 
9 //Forward declaration
10 class AtomNetlist;
11 class AtomLookup;
12 
13 /*
14  * Ids
15  *
16  * The AtomNetlist uses unique IDs to identify any component of the netlist.
17  * To avoid type-conversion errors (e.g. passing an AtomPinId where an AtomNetId
18  * was expected), we use vtr::StrongId's to disallow such conversions. See
19  * vtr_strong_id.h for details.
20  */
21 
22 //Type tags for Ids
23 struct atom_block_id_tag;
24 struct atom_net_id_tag;
25 struct atom_port_id_tag;
26 struct atom_pin_id_tag;
27 
28 //A unique identifier for a block/primitive in the atom netlist
29 typedef vtr::StrongId<atom_block_id_tag> AtomBlockId;
30 
31 //A unique identifier for a net in the atom netlist
32 typedef vtr::StrongId<atom_net_id_tag> AtomNetId;
33 
34 //A unique identifier for a port in the atom netlist
35 typedef vtr::StrongId<atom_port_id_tag> AtomPortId;
36 
37 //A unique identifier for a pin in the atom netlist
38 typedef vtr::StrongId<atom_pin_id_tag> AtomPinId;
39 
40 //A signal index in a port
41 typedef unsigned BitIndex;
42 
43 //The type of a block in the AtomNetlist
44 enum class AtomBlockType : char {
45  INPAD, //A primary input
46  OUTPAD, //A primary output
47  BLOCK //A basic atom block (LUT, FF, blackbox etc.)
48 };
49 
50 #endif
vtr::StrongId< atom_net_id_tag > AtomNetId
Definition: atom_netlist_fwd.h:32
AtomBlockType
Definition: atom_netlist_fwd.h:44
vtr::StrongId< atom_pin_id_tag > AtomPinId
Definition: atom_netlist_fwd.h:38
The AtomLookup class describes the mapping between components in the AtomNetlist and other netlists/e...
Definition: atom_lookup.h:20
Definition: atom_netlist.h:80
vtr::StrongId< atom_port_id_tag > AtomPortId
Definition: atom_netlist_fwd.h:35
vtr::StrongId< atom_block_id_tag > AtomBlockId
Definition: atom_netlist_fwd.h:26
unsigned BitIndex
Definition: atom_netlist_fwd.h:41