AutoVCoder: A Systematic Framework for Automated Verilog Code Generation using LLMs