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