`endif
 endmodule
 
+(* abc9_box, lib_whitebox *)
 module SB_DFFR (
        output `SB_DFF_REG,
        input C, R, D
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L63
                $setup(negedge R, posedge C, 160);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L91
+`ifndef YOSYS
                (posedge R => (Q : 1'b0)) = 599;
+`else
+               if (R) (R => Q) = 599;  // Technically, this should be an edge sensitive path
+                                       // but for facilitating a bypass box, let's pretend it's
+                                       // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90
                if (!R) (posedge C => (Q : D)) = 540;
        endspecify
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L63
                $setup(negedge R, posedge C, 235);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L91
+`ifndef YOSYS
                (posedge R => (Q : 1'b0)) = 883;
+`else
+               if (R) (R => Q) = 883;  // Technically, this should be an edge sensitive path
+                                       // but for facilitating a bypass box, let's pretend it's
+                                       // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90
                if (!R) (posedge C => (Q : D)) = 796;
        endspecify
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L75
                $setup(negedge R, posedge C, 424);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L103
+`ifndef YOSYS
                (posedge R => (Q : 1'b0)) = 1589;
+`else
+               if (R) (R => Q) = 1589; // Technically, this should be an edge sensitive path
+                                       // but for facilitating a bypass box, let's pretend it's
+                                       // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102
                if (!R) (posedge C => (Q : D)) = 1391;
        endspecify
 `endif
 endmodule
 
+(* abc9_box, lib_whitebox *)
 module SB_DFFS (
        output `SB_DFF_REG,
        input C, S, D
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L63
                $setup(negedge S, posedge C, 160);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L91
+`ifndef YOSYS
                (posedge S => (Q : 1'b1)) = 599;
+`else
+               if (S) (S => Q) = 599;  // Technically, this should be an edge sensitive path
+                                       // but for facilitating a bypass box, let's pretend it's
+                                       // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90
                if (!S) (posedge C => (Q : D)) = 540;
        endspecify
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L63
                $setup(negedge S, posedge C, 235);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L91
+`ifndef YOSYS
                (posedge S => (Q : 1'b1)) = 883;
+`else
+               if (S) (S => Q) = 883;  // Technically, this should be an edge sensitive path
+                                       // but for facilitating a bypass box, let's pretend it's
+                                       // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90
                if (!S) (posedge C => (Q : D)) = 796;
        endspecify
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L75
                $setup(negedge S, posedge C, 424);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L103
+`ifndef YOSYS
                (posedge S => (Q : 1'b1)) = 1589;
+`else
+               if (S) (S => Q) = 1589; // Technically, this should be an edge sensitive path
+                                       // but for facilitating a bypass box, let's pretend it's
+                                       // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102
                if (!S) (posedge C => (Q : D)) = 1391;
        endspecify
 `endif
 endmodule
 
+(* abc9_box, lib_whitebox *)
 module SB_DFFER (
        output `SB_DFF_REG,
        input C, E, R, D
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L63
                $setup(negedge R, posedge C, 160);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L91
+`ifndef YOSYS
                (posedge R => (Q : 1'b0)) = 599;
+`else
+               if (R) (R => Q) = 599;  // Technically, this should be an edge sensitive path
+                                       // but for facilitating a bypass box, let's pretend it's
+                                       // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90
                if (E && !R) (posedge C => (Q : D)) = 540;
        endspecify
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L63
                $setup(negedge R, posedge C, 235);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L91
+`ifndef YOSYS
                (posedge R => (Q : 1'b0)) = 883;
+`else
+               if (R) (R => Q) = 883;  // Technically, this should be an edge sensitive path
+                                       // but for facilitating a bypass box, let's pretend it's
+                                       // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90
                if (E && !R) (posedge C => (Q : D)) = 796;
        endspecify
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L75
                $setup(negedge R, posedge C, 424);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L103
+`ifndef YOSYS
                (posedge R => (Q : 1'b0)) = 1589;
+`else
+               if (R) (R => Q) = 1589; // Technically, this should be an edge sensitive path
+                                       // but for facilitating a bypass box, let's pretend it's
+                                       // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102
                if (E && !R) (posedge C => (Q : D)) = 1391;
        endspecify
 `endif
 endmodule
 
+(* abc9_box, lib_whitebox *)
 module SB_DFFES (
        output `SB_DFF_REG,
        input C, E, S, D
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L63
                $setup(posedge S, posedge C, 160);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L91
+`ifndef YOSYS
                (posedge S => (Q : 1'b1)) = 599;
+`else
+               if (S) (S => Q) = 599;  // Technically, this should be an edge sensitive path
+                                       // but for facilitating a bypass box, let's pretend it's
+                                       // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90
                if (E && !S) (posedge C => (Q : D)) = 540;
        endspecify
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L63
                $setup(posedge S, posedge C, 235);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L91
+`ifndef YOSYS
                (posedge S => (Q : 1'b1)) = 883;
+`else
+               if (S) (S => Q) = 883; // Technically, this should be an edge sensitive path
+                                                          // but for facilitating a bypass box, let's pretend it's
+                                                          // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90
                if (E && !S) (posedge C => (Q : D)) = 796;
        endspecify
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L75
                $setup(posedge S, posedge C, 424);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L103
+`ifndef YOSYS
                (posedge S => (Q : 1'b1)) = 1589;
+`else
+               if (S) (S => Q) = 1589; // Technically, this should be an edge sensitive path
+                                                          // but for facilitating a bypass box, let's pretend it's
+                                                          // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102
                if (E && !S) (posedge C => (Q : D)) = 1391;
        endspecify
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L63
                $setup(negedge R, negedge C, 160);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L91
+`ifndef YOSYS
                (posedge R => (Q : 1'b0)) = 599;
+`else
+               if (R) (R => Q) = 599;  // Technically, this should be an edge sensitive path
+                                       // but for facilitating a bypass box, let's pretend it's
+                                       // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90
                if (!R) (negedge C => (Q : D)) = 540;
        endspecify
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L63
                $setup(negedge R, negedge C, 235);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L91
+`ifndef YOSYS
                (posedge R => (Q : 1'b0)) = 883;
+`else
+               if (R) (R => Q) = 883;  // Technically, this should be an edge sensitive path
+                                       // but for facilitating a bypass box, let's pretend it's
+                                       // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90
                if (!R) (negedge C => (Q : D)) = 796;
        endspecify
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L75
                $setup(negedge R, negedge C, 424);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L103
+`ifndef YOSYS
                (posedge R => (Q : 1'b0)) = 1589;
+`else
+               if (R) (R => Q) = 1589; // Technically, this should be an edge sensitive path
+                                       // but for facilitating a bypass box, let's pretend it's
+                                       // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102
                if (!R) (negedge C => (Q : D)) = 1391;
        endspecify
 `endif
 endmodule
 
+(* abc9_box, lib_whitebox *)
 module SB_DFFNS (
        output `SB_DFF_REG,
        input C, S, D
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L63
                $setup(negedge S, negedge C, 160);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L91
+`ifndef YOSYS
                (posedge S => (Q : 1'b1)) = 599;
+`else
+               if (S) (S => Q) = 599;  // Technically, this should be an edge sensitive path
+                                       // but for facilitating a bypass box, let's pretend it's
+                                       // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90
                if (!S) (negedge C => (Q : D)) = 540;
        endspecify
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L63
                $setup(negedge S, negedge C, 235);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L91
+`ifndef YOSYS
                (posedge S => (Q : 1'b1)) = 883;
+`else
+               if (S) (S => Q) = 883;  // Technically, this should be an edge sensitive path
+                                       // but for facilitating a bypass box, let's pretend it's
+                                       // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90
                if (!S) (negedge C => (Q : D)) = 796;
        endspecify
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L75
                $setup(negedge S, negedge C, 424);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L103
+`ifndef YOSYS
                (posedge S => (Q : 1'b1)) = 1589;
+`else
+               if (S) (S => Q) = 1589; // Technically, this should be an edge sensitive path
+                                       // but for facilitating a bypass box, let's pretend it's
+                                       // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102
                if (!S) (negedge C => (Q : D)) = 1391;
        endspecify
 `endif
 endmodule
 
+(* abc9_box, lib_whitebox *)
 module SB_DFFNER (
        output `SB_DFF_REG,
        input C, E, R, D
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L63
                $setup(R, negedge C, 2160);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L91
+`ifndef YOSYS
                (posedge R => (Q : 1'b0)) = 599;
+`else
+               if (R) (R => Q) = 599;  // Technically, this should be an edge sensitive path
+                                       // but for facilitating a bypass box, let's pretend it's
+                                       // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90
                if (E && !R) (negedge C => (Q : D)) = 540;
        endspecify
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L63
                $setup(R, negedge C, 235);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L91
+`ifndef YOSYS
                (posedge R => (Q : 1'b0)) = 883;
+`else
+               if (R) (R => Q) = 883;  // Technically, this should be an edge sensitive path
+                                       // but for facilitating a bypass box, let's pretend it's
+                                       // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90
                if (E && !R) (negedge C => (Q : D)) = 796;
        endspecify
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L75
                $setup(negedge R, negedge C, 424);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L103
+`ifndef YOSYS
                (posedge R => (Q : 1'b0)) = 1589;
+`else
+               if (R) (R => Q) = 1589; // Technically, this should be an edge sensitive path
+                                       // but for facilitating a bypass box, let's pretend it's
+                                       // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102
                if (E && !R) (negedge C => (Q : D)) = 1391;
        endspecify
 `endif
 endmodule
 
+(* abc9_box, lib_whitebox *)
 module SB_DFFNES (
        output `SB_DFF_REG,
        input C, E, S, D
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L63
                $setup(negedge S, negedge C, 160);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L91
+`ifndef YOSYS
                (posedge S => (Q : 1'b1)) = 599;
+`else
+        if (S) (S => Q) = 599; // Technically, this should be an edge sensitive path
+                               // but for facilitating a bypass box, let's pretend it's
+                               // a simple path
+`endif
+
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90
                if (E && !S) (negedge C => (Q : D)) = 540;
        endspecify
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L63
                $setup(negedge S, negedge C, 235);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L91
+`ifndef YOSYS
                (posedge S => (Q : 1'b1)) = 883;
+`else
+        if (S) (S => Q) = 883; // Technically, this should be an edge sensitive path
+                               // but for facilitating a bypass box, let's pretend it's
+                               // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90
                if (E && !S) (negedge C => (Q : D)) = 796;
        endspecify
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L75
                $setup(negedge S, negedge C, 424);
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L103
+`ifndef YOSYS
                (posedge S => (Q : 1'b1)) = 1589;
+`else
+        if (S) (S => Q) = 1589; // Technically, this should be an edge sensitive path
+                               // but for facilitating a bypass box, let's pretend it's
+                               // a simple path
+`endif
                // https://github.com/cliffordwolf/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102
                if (E && !S) (negedge C => (Q : D)) = 1391;
        endspecify
 `endif
 endmodule
 
+//(* abc9_box, lib_whitebox *) // TODO
 module SB_MAC16 (
        input CLK, CE,
        input [15:0] C, A, B, D,