Verilog to Routing - VPR
Functions
atom_netlist_utils.h File Reference

Useful utilities for working with the AtomNetlist class. More...

#include <cstdio>
#include <set>
#include "atom_netlist.h"
Include dependency graph for atom_netlist_utils.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

int mark_constant_generators (AtomNetlist &netlist, e_const_gen_inference const_gen_inference_method, int verbosity)
 Walk through the netlist detecting constant generators. More...
 
void absorb_buffer_luts (AtomNetlist &netlist, int verbosity)
 Modifies the netlist by absorbing buffer LUTs. More...
 
size_t sweep_iterative (AtomNetlist &netlist, bool should_sweep_dangling_ios, bool should_sweep_dangling_blocks, bool should_sweep_dangling_nets, bool should_sweep_constant_primary_outputs, e_const_gen_inference const_gen_inference_method, int verbosity)
 Repeatedly sweeps the netlist removing blocks and nets until nothing more can be swept. If sweep_ios is true also sweeps primary-inputs and primary-outputs. More...
 
size_t sweep_blocks (AtomNetlist &netlist, int verbosity)
 Sweeps blocks that have no fanout. More...
 
size_t sweep_nets (AtomNetlist &netlist, int verbosity)
 Sweeps nets with no drivers and/or no sinks. More...
 
size_t sweep_inputs (AtomNetlist &netlist, int verbosity)
 Sweeps primary-inputs with no fanout. More...
 
size_t sweep_outputs (AtomNetlist &netlist, int verbosity)
 Sweeps primary-outputs with no fanin. More...
 
size_t sweep_constant_primary_outputs (AtomNetlist &netlist, int verbosity)
 
bool is_buffer (const AtomNetlist &netlist, const AtomBlockId blk)
 Returns true if the specified block is a logical buffer. More...
 
bool truth_table_encodes_on_set (const AtomNetlist::TruthTable &truth_table)
 Deterimine whether a truth table encodes the logic functions 'On' set (returns true) or 'Off' set (returns false) More...
 
AtomNetlist::TruthTable expand_truth_table (const AtomNetlist::TruthTable &truth_table, const size_t num_inputs)
 
AtomNetlist::TruthTable permute_truth_table (const AtomNetlist::TruthTable &truth_table, const size_t num_inputs, const std::vector< int > &permutation)
 Permutes the inputs of a truth table. More...
 
std::vector< vtr::LogicValue > truth_table_to_lut_mask (const AtomNetlist::TruthTable &truth_table, const size_t num_inputs)
 Convers a truth table to a lut mask (sequence of binary values representing minterms) More...
 
std::vector< size_t > cube_to_minterms (std::vector< vtr::LogicValue > cube)
 Convers a logic cube (potnetially including don't cares) into a sequence of minterm numbers. More...
 
void print_netlist_as_blif (std::string filename, const AtomNetlist &netlist)
 
void print_netlist_as_blif (FILE *f, const AtomNetlist &netlist)
 
std::string atom_pin_arch_name (const AtomNetlist &netlist, const AtomPinId pin)
 Returns a user-friendly architectural identifier for the specified atom pin. More...
 
std::set< AtomNetIdfind_netlist_physical_clock_nets (const AtomNetlist &netlist)
 Returns the set of nets which drive clock pins in the netlist. More...
 
std::set< AtomPinIdfind_netlist_logical_clock_drivers (const AtomNetlist &netlist)
 Returns the set of pins which logically drive unique clocks in the netlist. More...
 
void print_netlist_clock_info (const AtomNetlist &netlist)
 Prints out information about netlist clocks. More...
 

Detailed Description

Useful utilities for working with the AtomNetlist class.

Function Documentation

◆ absorb_buffer_luts()

void absorb_buffer_luts ( AtomNetlist netlist,
int  verbosity 
)

Modifies the netlist by absorbing buffer LUTs.

◆ atom_pin_arch_name()

std::string atom_pin_arch_name ( const AtomNetlist netlist,
const AtomPinId  pin 
)

Returns a user-friendly architectural identifier for the specified atom pin.

◆ cube_to_minterms()

std::vector<size_t> cube_to_minterms ( std::vector< vtr::LogicValue >  cube)

Convers a logic cube (potnetially including don't cares) into a sequence of minterm numbers.

◆ expand_truth_table()

AtomNetlist::TruthTable expand_truth_table ( const AtomNetlist::TruthTable truth_table,
const size_t  num_inputs 
)

Returns the truth table expanded to use num_inputs inputs. Typical usage is to expand the truth table of a LUT which is logically smaller than the one provided by the architecture (e.g. implement a 2-LUT in a 6-LUT)

Parameters
truth_tableThe truth table to expand
num_inputsThe number of inputs to use

◆ find_netlist_logical_clock_drivers()

std::set<AtomPinId> find_netlist_logical_clock_drivers ( const AtomNetlist netlist)

Returns the set of pins which logically drive unique clocks in the netlist.

Note
VPR currently has limited understanding of logic operating on clocks, so logically unique should be viewed as true only to the extent of VPR's understanding

Returns the set of pins which logically drive unique clocks in the netlist.

◆ find_netlist_physical_clock_nets()

std::set<AtomNetId> find_netlist_physical_clock_nets ( const AtomNetlist netlist)

Returns the set of nets which drive clock pins in the netlist.

Note
The returned nets may be logically equivalent (e.g. driven by buffers connected to a common net)

Returns the set of nets which drive clock pins in the netlist.

◆ is_buffer()

bool is_buffer ( const AtomNetlist netlist,
const AtomBlockId  blk 
)

Returns true if the specified block is a logical buffer.

◆ mark_constant_generators()

int mark_constant_generators ( AtomNetlist netlist,
e_const_gen_inference  const_gen_inference_method,
int  verbosity 
)

Walk through the netlist detecting constant generators.

Note
Initial constant generators (e.g. vcc/gnd) should have already been marked on the netlist.

◆ permute_truth_table()

AtomNetlist::TruthTable permute_truth_table ( const AtomNetlist::TruthTable truth_table,
const size_t  num_inputs,
const std::vector< int > &  permutation 
)

Permutes the inputs of a truth table.

Parameters
truth_tableThe truth table to expand
num_inputsThe number of inputs to use
permutationA vector indicies to permute, permutation[i] is the input pin where the signal currently connected to input i should be placed

◆ print_netlist_as_blif() [1/2]

void print_netlist_as_blif ( std::string  filename,
const AtomNetlist netlist 
)

◆ print_netlist_as_blif() [2/2]

void print_netlist_as_blif ( FILE *  f,
const AtomNetlist netlist 
)

◆ print_netlist_clock_info()

void print_netlist_clock_info ( const AtomNetlist netlist)

Prints out information about netlist clocks.

Prints out information about netlist clocks.

◆ sweep_blocks()

size_t sweep_blocks ( AtomNetlist netlist,
int  verbosity 
)

Sweeps blocks that have no fanout.

◆ sweep_constant_primary_outputs()

size_t sweep_constant_primary_outputs ( AtomNetlist netlist,
int  verbosity 
)

◆ sweep_inputs()

size_t sweep_inputs ( AtomNetlist netlist,
int  verbosity 
)

Sweeps primary-inputs with no fanout.

◆ sweep_iterative()

size_t sweep_iterative ( AtomNetlist netlist,
bool  should_sweep_dangling_ios,
bool  should_sweep_dangling_blocks,
bool  should_sweep_dangling_nets,
bool  should_sweep_constant_primary_outputs,
e_const_gen_inference  const_gen_inference_method,
int  verbosity 
)

Repeatedly sweeps the netlist removing blocks and nets until nothing more can be swept. If sweep_ios is true also sweeps primary-inputs and primary-outputs.

◆ sweep_nets()

size_t sweep_nets ( AtomNetlist netlist,
int  verbosity 
)

Sweeps nets with no drivers and/or no sinks.

◆ sweep_outputs()

size_t sweep_outputs ( AtomNetlist netlist,
int  verbosity 
)

Sweeps primary-outputs with no fanin.

◆ truth_table_encodes_on_set()

bool truth_table_encodes_on_set ( const AtomNetlist::TruthTable truth_table)

Deterimine whether a truth table encodes the logic functions 'On' set (returns true) or 'Off' set (returns false)

◆ truth_table_to_lut_mask()

std::vector<vtr::LogicValue> truth_table_to_lut_mask ( const AtomNetlist::TruthTable truth_table,
const size_t  num_inputs 
)

Convers a truth table to a lut mask (sequence of binary values representing minterms)