This document discusses coding style guidelines for logic synthesis. It begins with basic concepts of logic synthesis such as converting a high-level design to a gate-level representation using a standard cell library. It then discusses synthesizable Verilog constructs and coding techniques to improve synthesis like using non-blocking assignments in sequential logic blocks. The document also provides guidelines for coding constructs like if-else statements, case statements, always blocks and loops to make the design easily synthesizable. Memory synthesis approaches and techniques for designing clocks and resets are also covered.