| read_verilog << EOT |
| module ibuf ((* iopad_external_pin *) input i, output o); endmodule |
| module obuf (input i, (* iopad_external_pin *) output o); endmodule |
| module obuft (input i, input oe, (* iopad_external_pin *) output o); endmodule |
| module iobuf (input i, input oe, output o, (* iopad_external_pin *) inout io); endmodule |
| |
| module a(input i, output o); |
| assign o = i; |
| endmodule |
| |
| module b(input i, output o); |
| assign o = i; |
| ibuf b (.i(i), .o(o)); |
| endmodule |
| |
| module c(input i, output o); |
| obuf b (.i(i), .o(o)); |
| endmodule |
| |
| module d(input i, oe, output o, o2, o3); |
| assign o = oe ? i : 1'bz; |
| assign o2 = o; |
| assign o3 = ~o; |
| endmodule |
| |
| module e(input i, oe, inout io, output o2, o3); |
| assign io = oe ? i : 1'bz; |
| assign o2 = io; |
| assign o3 = ~io; |
| endmodule |
| EOT |
| |
| opt_clean |
| tribuf |
| simplemap |
| iopadmap -bits -inpad ibuf o:i -outpad obuf i:o -toutpad obuft oe:i:o -tinoutpad iobuf oe:o:i:io |
| opt_clean |
| |
| select -assert-count 1 a/t:ibuf |
| select -assert-count 1 a/t:obuf |
| select -set ib w:i %a %co a/t:ibuf %i |
| select -set ob w:o %a %ci a/t:obuf %i |
| select -assert-count 1 @ib |
| select -assert-count 1 @ob |
| select -assert-count 1 @ib %co %co @ob %i |
| |
| select -assert-count 1 b/t:ibuf |
| select -assert-count 1 b/t:obuf |
| select -set ib w:i %a %co b/t:ibuf %i |
| select -set ob w:o %a %ci b/t:obuf %i |
| select -assert-count 1 @ib |
| select -assert-count 1 @ob |
| select -assert-count 1 @ib %co %co @ob %i |
| |
| select -assert-count 1 c/t:ibuf |
| select -assert-count 1 c/t:obuf |
| select -set ib w:i %a %co c/t:ibuf %i |
| select -set ob w:o %a %ci c/t:obuf %i |
| select -assert-count 1 @ib |
| select -assert-count 1 @ob |
| select -assert-count 1 @ib %co %co @ob %i |
| |
| select -assert-count 2 d/t:ibuf |
| select -assert-count 2 d/t:obuf |
| select -assert-count 1 d/t:obuft |
| select -set ib w:i %a %co d/t:ibuf %i |
| select -set oeb w:oe %a %co d/t:ibuf %i |
| select -set ob w:o %a %ci d/t:obuft %i |
| select -set o2b w:o2 %a %ci d/t:obuf %i |
| select -set o3b w:o3 %a %ci d/t:obuf %i |
| select -assert-count 1 @ib |
| select -assert-count 1 @oeb |
| select -assert-count 1 @ob |
| select -assert-count 1 @o2b |
| select -assert-count 1 @o3b |
| select -assert-count 1 @ib %co %co @ob %i |
| select -assert-count 1 @oeb %co %co @ob %i |
| select -assert-count 1 @ib %co %co @o2b %i |
| select -assert-count 1 @ib %co %co t:$_NOT_ %i |
| select -assert-count 1 @o3b %ci %ci t:$_NOT_ %i |
| |
| select -assert-count 2 e/t:ibuf |
| select -assert-count 2 e/t:obuf |
| select -assert-count 1 e/t:iobuf |
| select -set ib w:i %a %co e/t:ibuf %i |
| select -set oeb w:oe %a %co e/t:ibuf %i |
| select -set iob w:io %a %ci e/t:iobuf %i |
| select -set o2b w:o2 %a %ci e/t:obuf %i |
| select -set o3b w:o3 %a %ci e/t:obuf %i |
| select -assert-count 1 @ib |
| select -assert-count 1 @oeb |
| select -assert-count 1 @iob |
| select -assert-count 1 @o2b |
| select -assert-count 1 @o3b |
| select -assert-count 1 @ib %co %co @iob %i |
| select -assert-count 1 @oeb %co %co @iob %i |
| select -assert-count 1 @iob %co %co @o2b %i |
| select -assert-count 1 @iob %co %co t:$_NOT_ %i |
| select -assert-count 1 @o3b %ci %ci t:$_NOT_ %i |