If I really want something to be parallel or full, then I will put them in. According to the article, they will do what I expect. Unless I totally missed something, these constraints will only hurt a design if you add them when you shouldn't. Some stack-algorithm parsers use the opposite, and will produce unpredictable results. Much better would be to use explicit if statements.
Case statements are way too ambiguous for stuff like select logic, arbitration, and interrupts.
Hi, John, Cliff's paper is quite useful, and I think it should be required reading for all synthesis newbies. I don't think Cliff's reasons for avoiding these directives are valid. But the causes of these mismatches appear in the synthesis log as the warning messages Cliff mentioned in his paper. The main reason I use these two directives is to do sanity checks. If Design Compiler generates a warning message, it is telling me that it disagrees, and I should check again.