Views
No views yet
1from transformers import AutoTokenizer, AutoModelForCausalLM
2from peft import PeftModel
3import torch
4
5# Load base model
6base_model = AutoModelForCausalLM.from_pretrained(
7 "meta-llama/Llama-2-7b-chat-hf",
8 torch_dtype=torch.float16,
9 device_map="auto"
10)
11
12# Load LoRA adapter
13model = PeftModel.from_pretrained(
14 base_model,
15 "varsha-de/llama2-7b-chat-verilog-fifo-lora"
16)
17
18# Load tokenizer
19tokenizer = AutoTokenizer.from_pretrained("varsha-de/llama2-7b-chat-verilog-fifo-lora")
20tokenizer.pad_token = tokenizer.eos_token1def generate_verilog(prompt):
2 # Format prompt using the training format
3 system_msg = "You are Elinnos RTL Code Generator v1.0, a specialized Verilog/SystemVerilog code generation agent. Your role: Generate clean, synthesizable RTL code for hardware design tasks. Output ONLY functional RTL code with no $display, assertions, comments, or debug statements."
4 formatted_prompt = f"<|system|>\n{system_msg}</s>\n<|user|>\n{prompt}</s>\n<|assistant|>\n"
5
6 inputs = tokenizer(formatted_prompt, return_tensors="pt").to(model.device)
7
8 with torch.no_grad():
9 outputs = model.generate(
10 **inputs,
11 max_new_tokens=512,
12 temperature=0.0,
13 do_sample=False,
14 pad_token_id=tokenizer.eos_token_id,
15 eos_token_id=tokenizer.eos_token_id,
16 )
17
18 decoded = tokenizer.decode(outputs[0], skip_special_tokens=False)
19
20 # Extract assistant reply only
21 if "<|assistant|>" in decoded:
22 decoded = decoded.split("<|assistant|>")[-1]
23 if "</s>" in decoded:
24 decoded = decoded.split("</s>")[0]
25
26 return decoded.strip()
27
28# Example usage
29code = generate_verilog("Generate a FIFO with 8-bit width, depth 4")
30print(code)1@misc{llama2_7b_chat_verilog_fifo_lora},
2 author = {HF_USERNAME},
3 title = {llama2-7b-chat-verilog-fifo-lora},
4 year = {2026},
5 publisher = {Hugging Face},
6 howpublished = {\url{https://huggingface.co/varsha-de/llama2-7b-chat-verilog-fifo-lora}}
7}