Text Generation
PEFT
Safetensors
English
lora
qwen2.5-coder
verilog
eda
dft
partial-scan
reinforcement-learning
grpo
conversational
Instructions to use SKLP-EDA-LAB/Tesla-Pro-PSS with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use SKLP-EDA-LAB/Tesla-Pro-PSS with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-Coder-7B-Instruct") model = PeftModel.from_pretrained(base_model, "SKLP-EDA-LAB/Tesla-Pro-PSS") - Notebooks
- Google Colab
- Kaggle
| ===== SYSTEM ===== | |
| Respond in the following format: | |
| <think> | |
| ... | |
| </think> | |
| <answer> | |
| ... | |
| </answer> | |
| ===== USER ===== | |
| You are a DFT engineer specializing in partial scan design. Analyze the RTL code and select register bits as scan cells using budgeted allocation. Track your remaining budget after each selection. Select exactly 1 bits. | |
| Rules: | |
| - Only select bits from reg variables within their declared width | |
| - Wire variables cannot be scan cells | |
| - Select only state-holding variables assigned in edge-triggered clocked always blocks | |
| - Do not select input ports, clocks, resets, wires, constants, parameters, localparams, integers, genvars, or combinational/next-state temporary signals | |
| - An output is selectable only when it is a real clocked state-holding variable | |
| - Copy every selected name exactly from the RTL; never invent, rename, abbreviate, or add/remove suffixes | |
| - For a vector, select explicit in-range bits such as state[2]; do not output a slice or a whole multi-bit vector name | |
| - If a candidate is uncertain, skip it and choose another clearly clocked state-holding bit | |
| - Use format 'RegisterName[bit_index]' for multi-bit registers | |
| - Use 'RegisterName' for single-bit registers | |
| - The final answer must be placed in <answer> tags after </think> | |
| - Answer must contain exactly 1 lines (one register bit per line) in the <answer> section | |
| Place your step-by-step reasoning with budget tracking between <think> and </think>. | |
| Key requirements: | |
| - Start with budget: 'I have 1 bits to allocate' | |
| - Allocation strategy (choose based on the number of bits to select): | |
| * For small selections (<=20 bits): Select bits one by one or in very small groups (<=5), stating the running budget after every single addition | |
| * For large selections (>20 bits): You may group selections into logical categories (e.g., FSM state bits, counters, synchronizers, data-path registers). For each group, first justify the group, then list the exact bits in that group. After every group, immediately state: 'This group contributes X bits. Current total: N/1, remaining budget: M'. When the remaining budget <=12, switch back to selecting one bit at a time with per-bit justification and running count | |
| - Track budget after each selection or group: 'Allocate X bits to RegisterName[bit], remaining Y bits' or 'This group contributes X bits. Current total: N/1, remaining budget: M' | |
| - Focus on BIT-LEVEL selection: Explain why specific bits (e.g., Volume[3]) were chosen, not just register names | |
| - Do NOT enumerate all registers upfront. Mention registers only as you allocate them | |
| - Never repeat allocations. If repeating patterns appear, STOP and verify budget | |
| - If budget becomes negative, you must immediately stop and re-select fewer bits. Do NOT continue repeating the same selection | |
| - Verify at the end: 'Total = 1 bits; budget = 0' | |
| - Before writing <answer>, extract exactly 1 register bits from your reasoning that match your budget tracking. The <answer> section must contain exactly 1 lines, one register bit per line. | |
| #QUESTION#: Which 1 register bits were selected as the most suitable scan cells? | |
| #RTL CODE#: | |
| module gen_sync ( input clock,input reset,input enable,input [7:0] rate,output wire sync ); | |
| reg [7:0] counter; | |
| assign sync = |(((rate+1)>>1)& counter); | |
| always @(posedge clock) | |
| if(reset || ~enable) | |
| counter <= #1 0; | |
| else if(counter == rate) | |
| counter <= #1 0; | |
| else | |
| counter <= #1 counter + 8'd1; | |
| endmodule | |