#pragma once #include #include namespace gr { class GrNet { public: void setPins(const std::vector>& p) { pins = p; } void setBoundingBox(int lx, int ly, int ux, int uy) { lowerx = lx; lowery = ly; upperx = ux; uppery = uy; } void setWires(const std::vector& w) { wires = w; } void setVias(const std::vector& v) { vias = v; } void resetRoute() { wires.clear(), vias.clear(); } void addVias(); bool needToRoute(); void setNoRoute() { noroute = 1; } int area() { return (upperx - lowerx + 1) * (uppery - lowery + 1); } int hpwl() { return upperx + uppery - lowerx - lowery; } const std::vector& getWires() { return wires; } const std::vector& getVias() { return vias; } const std::vector>& getPins() { return pins; } int lowerx, lowery, upperx, uppery, noroute = 0; std::vector points; std::vector pin2gbpinId; std::vector> pin2gpdbPinIds; private: std::vector> pins; std::vector wires, vias; }; } // namespace gr