| #!/bin/bash | |
| trap 'echo "ERROR in chparam.sh" >&2; exit 1' ERR | |
| cat > chparam1.sv << "EOT" | |
| module top #( | |
| parameter [31:0] X = 0 | |
| ) ( | |
| input [31:0] din, | |
| output [31:0] dout | |
| ); | |
| assign dout = X-din; | |
| endmodule | |
| module top_props #( | |
| parameter [31:0] X = 0 | |
| ) ( | |
| input [31:0] dout | |
| ); | |
| always @* assert (dout != X); | |
| endmodule | |
| bind top top_props #(.X(123456789)) props (.*); | |
| EOT | |
| cat > chparam2.sv << "EOT" | |
| module top #( | |
| parameter [31:0] X = 0 | |
| ) ( | |
| input [31:0] din, | |
| output [31:0] dout | |
| ); | |
| assign dout = X-din; | |
| always @* assert (dout != 123456789); | |
| endmodule | |
| EOT | |
| if ../../yosys -q -p 'verific -sv chparam1.sv'; then | |
| ../../yosys -q -p 'verific -sv chparam1.sv; hierarchy -chparam X 123123123 -top top; prep -flatten' \ | |
| -p 'sat -verify -prove-asserts -show-ports -set din[0] 1' \ | |
| -p 'sat -falsify -prove-asserts -show-ports -set din[0] 0' | |
| ../../yosys -q -p 'verific -sv chparam2.sv; hierarchy -chparam X 123123123 -top top; prep -flatten' \ | |
| -p 'sat -verify -prove-asserts -show-ports -set din[0] 1' \ | |
| -p 'sat -falsify -prove-asserts -show-ports -set din[0] 0' | |
| fi | |
| ../../yosys -q -p 'read_verilog -sv chparam2.sv; hierarchy -chparam X 123123123 -top top; prep -flatten' \ | |
| -p 'sat -verify -prove-asserts -show-ports -set din[0] 1' \ | |
| -p 'sat -falsify -prove-asserts -show-ports -set din[0] 0' | |
| rm chparam1.sv | |
| rm chparam2.sv |