2019-10-05 11:27:12 -05:00
|
|
|
read_verilog <<EOT
|
|
|
|
module top(input A, B, CI, output O, CO);
|
|
|
|
SB_CARRY carry (
|
|
|
|
.I0(A),
|
|
|
|
.I1(B),
|
|
|
|
.CI(CI),
|
|
|
|
.CO(CO)
|
|
|
|
);
|
|
|
|
SB_LUT4 #(
|
|
|
|
.LUT_INIT(16'b 0110_1001_1001_0110)
|
|
|
|
) adder (
|
|
|
|
.I0(1'b0),
|
|
|
|
.I1(A),
|
|
|
|
.I2(B),
|
|
|
|
.I3(1'b0),
|
|
|
|
.O(O)
|
|
|
|
);
|
|
|
|
endmodule
|
|
|
|
EOT
|
|
|
|
|
|
|
|
ice40_wrapcarry
|
|
|
|
select -assert-count 1 t:$__ICE40_CARRY_WRAPPER
|
2019-12-05 09:01:02 -06:00
|
|
|
|
|
|
|
design -reset
|
|
|
|
read_verilog <<EOT
|
|
|
|
module top(input A, B, CI, output O, CO);
|
|
|
|
(* foo = "bar", answer = 42 *)
|
|
|
|
SB_CARRY carry (
|
|
|
|
.I0(A),
|
|
|
|
.I1(B),
|
|
|
|
.CI(CI),
|
|
|
|
.CO(CO)
|
|
|
|
);
|
|
|
|
(* keep, blah="blah", answer = 43 *)
|
|
|
|
SB_LUT4 #(
|
|
|
|
.LUT_INIT(16'b 0110_1001_1001_0110)
|
|
|
|
) adder (
|
|
|
|
.I0(1'b0),
|
|
|
|
.I1(A),
|
|
|
|
.I2(B),
|
|
|
|
.I3(1'b0),
|
|
|
|
.O(O)
|
|
|
|
);
|
|
|
|
endmodule
|
|
|
|
EOT
|
|
|
|
|
|
|
|
ice40_wrapcarry
|
|
|
|
select -assert-count 1 t:$__ICE40_CARRY_WRAPPER
|
|
|
|
select -assert-count 0 t:* t:$__ICE40_CARRY_WRAPPER %d
|
|
|
|
select -assert-count 1 a:foo=bar a:answer=42 %i a:keep %i a:blah=blah %i
|
|
|
|
techmap -map +/ice40/cells_map.v
|
|
|
|
#TODO: Check unwrapped attributes
|