1 #include "rule_diffpair.hpp"
2 #include "block/block.hpp"
3 #include "util/util.hpp"
4 #include <sstream>
5 #include "nlohmann/json.hpp"
6
7 namespace horizon {
RuleDiffpair(const UUID & uu)8 RuleDiffpair::RuleDiffpair(const UUID &uu) : Rule(uu)
9 {
10 id = RuleID::DIFFPAIR;
11 }
12
RuleDiffpair(const UUID & uu,const json & j,const RuleImportMap & import_map)13 RuleDiffpair::RuleDiffpair(const UUID &uu, const json &j, const RuleImportMap &import_map)
14 : Rule(uu, j, import_map), net_class(import_map.get_net_class(j.at("net_class").get<std::string>())),
15 layer(j.at("layer")), track_width(j.at("track_width")), track_gap(j.at("track_gap")), via_gap(j.at("via_gap"))
16 {
17 id = RuleID::DIFFPAIR;
18 }
19
serialize() const20 json RuleDiffpair::serialize() const
21 {
22 json j = Rule::serialize();
23 j["net_class"] = (std::string)net_class;
24 j["layer"] = layer;
25 j["track_width"] = track_width;
26 j["track_gap"] = track_gap;
27 j["via_gap"] = via_gap;
28 return j;
29 }
30
get_brief(const class Block * block) const31 std::string RuleDiffpair::get_brief(const class Block *block) const
32 {
33 return "Net class " + (net_class ? block->net_classes.at(net_class).name : "?");
34 }
35 } // namespace horizon
36