Merge pull request #163 from cr1901/facade
MachXO2 Support: Part 3
diff --git a/database b/database
index 1320be7..f7f8375 160000
--- a/database
+++ b/database
@@ -1 +1 @@
-Subproject commit 1320be79e0f1e526ea4f9d454a80745cb5639eec
+Subproject commit f7f8375101dfa7f7d5ccb654ff8fcae73356ce48
diff --git a/fuzzers/machxo2/102-oscg/fuzzer.py b/fuzzers/machxo2/102-oscg/fuzzer.py
index eaac68b..a1310da 100644
--- a/fuzzers/machxo2/102-oscg/fuzzer.py
+++ b/fuzzers/machxo2/102-oscg/fuzzer.py
@@ -71,9 +71,11 @@
cfg_r.setup()
interconnect.fuzz_interconnect_with_netnames(
cfg_r,
- ["R1C4_JOSC_OSC"],
+ ["R1C4_JOSC_OSC",
+ "R1C4_JSTDBY_OSC"],
bidir=True,
- netdir_override={"R1C4_JOSC_OSC" : "driver"})
+ netdir_override={"R1C4_JOSC_OSC" : "driver",
+ "R1C4_JSTDBY_OSC" : "sink"})
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="OSCH Fuzzer.")
diff --git a/libtrellis/src/PyTrellis.cpp b/libtrellis/src/PyTrellis.cpp
index 03e211f..38ea056 100644
--- a/libtrellis/src/PyTrellis.cpp
+++ b/libtrellis/src/PyTrellis.cpp
@@ -304,6 +304,7 @@
.def("set_value", &EnumSettingBits::set_value);
class_<FixedConnection>(m, "FixedConnection")
+ .def(init<>())
.def_readwrite("source", &FixedConnection::source)
.def_readwrite("sink", &FixedConnection::sink);
diff --git a/libtrellis/src/RoutingGraph.cpp b/libtrellis/src/RoutingGraph.cpp
index 84eb625..85e2116 100644
--- a/libtrellis/src/RoutingGraph.cpp
+++ b/libtrellis/src/RoutingGraph.cpp
@@ -179,10 +179,25 @@
// wonderful 1-based column numbering, and lack of dedicated
// PIO tiles on the left and right.
// Top and bottom unaffected due to dedicated PIO tiles.
- bool pio_wire = (db_name.find("PADD") != string::npos ||
+ // TODO: Convert to regex.
+ bool pio_wire = (
+ db_name.find("DI") != string::npos ||
+ db_name.find("JDI") != string::npos ||
+ db_name.find("PADD") != string::npos ||
+ db_name.find("INDD") != string::npos ||
db_name.find("IOLDO") != string::npos ||
db_name.find("IOLTO") != string::npos ||
- db_name.find("JINCK") != string::npos);
+ db_name.find("JCE") != string::npos ||
+ db_name.find("JCLK") != string::npos ||
+ db_name.find("JLSR") != string::npos ||
+ db_name.find("JONEG") != string::npos ||
+ db_name.find("JOPOS") != string::npos ||
+ db_name.find("JTS") != string::npos ||
+ db_name.find("JIN") != string::npos ||
+ db_name.find("JIP") != string::npos ||
+ // Connections to global mux
+ db_name.find("JINCK") != string::npos
+ );
if((id.loc.x == -1) && pio_wire)
id.loc.x = 0;
@@ -192,10 +207,24 @@
id.loc.x += std::stoi(g.substr(1));
if(id.loc.x > max_col) {
- bool pio_wire = (db_name.find("PADD") != string::npos ||
- db_name.find("IOLDO") != string::npos ||
- db_name.find("IOLTO") != string::npos||
- db_name.find("JINCK") != string::npos);
+ bool pio_wire = (
+ db_name.find("DI") != string::npos ||
+ db_name.find("JDI") != string::npos ||
+ db_name.find("PADD") != string::npos ||
+ db_name.find("INDD") != string::npos ||
+ db_name.find("IOLDO") != string::npos ||
+ db_name.find("IOLTO") != string::npos ||
+ db_name.find("JCE") != string::npos ||
+ db_name.find("JCLK") != string::npos ||
+ db_name.find("JLSR") != string::npos ||
+ db_name.find("JONEG") != string::npos ||
+ db_name.find("JOPOS") != string::npos ||
+ db_name.find("JTS") != string::npos ||
+ db_name.find("JIN") != string::npos ||
+ db_name.find("JIP") != string::npos ||
+ // Connections to global mux
+ db_name.find("JINCK") != string::npos
+ );
// Same deal as left side, except the position exceeds
// the maximum row.