| read_verilog << EOT |
| |
| module ff4(...); |
| parameter [0:0] CLK_INV = 1'b0; |
| parameter [3:0] DATA_INV = 4'b0000; |
| (* invertible_pin = "CLK_INV" *) |
| input clk; |
| (* invertible_pin = "DATA_INV" *) |
| input [3:0] d; |
| output [3:0] q; |
| endmodule |
| |
| module inv(...); |
| output o; |
| input i; |
| endmodule |
| |
| module top(...); |
| input d0, d1, d2, d3; |
| input clk; |
| output q; |
| ff4 #(.DATA_INV(4'h5)) ff_inst (.clk(clk), .d({d3, d2, d1, d0}), .q(q)); |
| endmodule |
| |
| EOT |
| |
| extractinv -inv inv o:i |
| clean |
| |
| select -assert-count 2 top/t:inv |
| select -assert-count 2 top/t:inv top/t:ff4 %ci:+[d] %ci:+[o] %i |
| |
| select -assert-count 1 top/t:inv top/w:d0 %co:+[i] %i |
| select -assert-count 0 top/t:inv top/w:d1 %co:+[i] %i |
| select -assert-count 1 top/t:inv top/w:d2 %co:+[i] %i |
| select -assert-count 0 top/t:inv top/w:d3 %co:+[i] %i |
| |
| select -assert-count 0 top/t:ff4 top/w:d0 %co:+[d] %i |
| select -assert-count 1 top/t:ff4 top/w:d1 %co:+[d] %i |
| select -assert-count 0 top/t:ff4 top/w:d2 %co:+[d] %i |
| select -assert-count 1 top/t:ff4 top/w:d3 %co:+[d] %i |