1. A computer-implemented method to analyze software code, the method comprising: defining a range of values for one or more inputs to the software code; sequentially reading lines of the software code and, for each line of software code: determining if the line of software code includes a conditional statement or a non-conditional statement; for a non-conditional statement in the line of software code, evaluating the non-conditional statement with one or more values from the range of values; for a conditional statement in the line of software code: selecting a first set of values from the range of values to evaluate a first branch of the conditional statement; evaluating the first branch of the conditional statement in the software code based on the selected first set of values and based on at least one of test time and hardware testing constraints; selecting a second set of values from the range of values to evaluate a second branch of the conditional statement, the first branch being different from the second branch; and evaluating the second branch of the conditional statement in the software code based on the selecting a second set of values; wherein evaluating the first branch and evaluating the second branch comprises analyzing all values in the range of values in the evaluation of the conditional statement; and outputting an indication regarding an error in the software code based on a result of at least one of the evaluating the non-conditional statement, the evaluating the first branch, or the evaluating the second branch.