code: def nand_synth(net):
      
      if net.op in '~nrwcsm@':
          return True
  
      def arg(num):
          return net.args[num]
  
      dest = net.dests[0]
      if net.op == '&':
          dest <<= ~(arg(0).nand(arg(1)))
      elif net.op == '|':
          dest <<= (~arg(0)).nand(~arg(1))
      elif net.op == '^':
          temp_0 = arg(0).nand(arg(1))
          dest <<= temp_0.nand(arg(0)).nand(temp_0.nand(arg(1)))
      else:
          raise PyrtlError("Op, '{}' is not supported in nand_synth".format(net.op))
docs: Synthesizes an Post-Synthesis block into one consisting of nands and inverters in place
      :param block: The block to synthesize.