Unfurl comments for clangformat

This commit is contained in:
Eddie Hung 2018-08-08 08:01:24 -07:00
parent d21e5a4b10
commit 936b52eafc

View File

@ -60,14 +60,11 @@ struct Timing
{
const auto clk_period = delay_t(1.0e12 / ctx->target_freq);
// First, compute the topographical order of nets to walk through
// the circuit, assuming it is a _acyclic_ graph
// TODO(eddieh): Handle the case where it is cyclic, e.g. combinatorial
// loops
// First, compute the topographical order of nets to walk through the circuit, assuming it is a _acyclic_ graph
// TODO(eddieh): Handle the case where it is cyclic, e.g. combinatorial loops
std::vector<NetInfo *> topographical_order;
std::unordered_map<const NetInfo *, TimingData> net_data;
// In lieu of deleting edges from the graph, simply count
// the number of fanins to each output port
// In lieu of deleting edges from the graph, simply count the number of fanins to each output port
std::unordered_map<const PortInfo *, unsigned> port_fanin;
std::vector<IdString> input_ports;
@ -87,8 +84,7 @@ struct Timing
for (auto o : output_ports) {
IdString clockPort;
TimingPortClass portClass = ctx->getPortTimingClass(cell.second.get(), o->name, clockPort);
// If output port is influenced by a clock (e.g. FF output)
// then add it to the ordering as a timing start-point
// If output port is influenced by a clock (e.g. FF output) then add it to the ordering as a timing start-point
if (portClass == TMG_REGISTER_OUTPUT) {
DelayInfo clkToQ;
ctx->getCellDelay(cell.second.get(), clockPort, o->name, clkToQ);
@ -100,9 +96,7 @@ struct Timing
topographical_order.emplace_back(o->net);
net_data.emplace(o->net, TimingData{});
}
// Otherwise, for all driven input ports on this cell,
// if a timing arc exists between the input and
// the current output port, increment fanin counter
// Otherwise, for all driven input ports on this cell, if a timing arc exists between the input and the current output port, increment fanin counter
for (auto i : input_ports) {
DelayInfo comb_delay;
bool is_path = ctx->getCellDelay(cell.second.get(), i, o->name, comb_delay);
@ -127,9 +121,7 @@ struct Timing
std::deque<NetInfo *> queue(topographical_order.begin(), topographical_order.end());
// Now walk the design, from the start points identified previously,
// building
// up a topographical order
// Now walk the design, from the start points identified previously, building up a topographical order
while (!queue.empty()) {
const auto net = queue.front();
queue.pop_front();
@ -153,8 +145,7 @@ struct Timing
bool is_path = ctx->getCellDelay(usr.cell, usr.port, port.first, comb_delay);
if (!is_path)
continue;
// Decrement the fanin count, and only add to topographical
// order if all its fanins have already been visited
// Decrement the fanin count, and only add to topographical order if all its fanins have already been visited
auto it = port_fanin.find(&port.second);
NPNR_ASSERT(it != port_fanin.end());
if (--it->second == 0) {
@ -166,12 +157,10 @@ struct Timing
}
}
// Sanity check to ensure that all ports where fanins were recorded
// were indeed visited
// Sanity check to ensure that all ports where fanins were recorded were indeed visited
NPNR_ASSERT(port_fanin.empty());
// Go forwards topographically to find the maximum arrival time
// and max path length for each net
// Go forwards topographically to find the maximum arrival time and max path length for each net
for (auto net : topographical_order) {
auto &nd = net_data.at(net);
const auto net_arrival = nd.max_arrival;
@ -197,9 +186,7 @@ struct Timing
auto &data = net_data[port.second.net];
auto &arrival = data.max_arrival;
arrival = std::max(arrival, usr_arrival + comb_delay.maxDelay());
if (!budget_override) { // Do not increment path length if
// budget overriden
// since it doesn't require a share of the slack
if (!budget_override) { // Do not increment path length if budget overriden since it doesn't require a share of the slack
auto &path_length = data.max_path_length;
path_length = std::max(path_length, net_length_plus_one);
}
@ -210,8 +197,7 @@ struct Timing
const NetInfo *crit_net = nullptr;
// Now go backwards topographically to determine the minimum path slack,
// and to distribute all path slack evenly between all nets on the path
// Now go backwards topographically to determine the minimum path slack, and to distribute all path slack evenly between all nets on the path
for (auto net : boost::adaptors::reverse(topographical_order)) {
auto &nd = net_data.at(net);
const delay_t net_length_plus_one = nd.max_path_length + 1;
@ -348,9 +334,7 @@ void assign_budget(Context *ctx, bool quiet)
}
}
// For slack redistribution, if user has not specified a frequency
// dynamically adjust the target frequency to be the currently
// achieved maximum
// For slack redistribution, if user has not specified a frequency dynamically adjust the target frequency to be the currently achieved maximum
if (ctx->auto_freq && ctx->slack_redist_iter > 0) {
delay_t default_slack = delay_t(1.0e12 / ctx->target_freq);
ctx->target_freq = 1e12 / (default_slack - timing.min_slack);