Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added LLM4ChipDesign_Prerequisite_Survey.docx
Binary file not shown.
96 changes: 96 additions & 0 deletions SURVEY_README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
# LLM4ChipDesign Course Prerequisite Survey Form

## Overview
This directory contains a comprehensive prerequisite survey form for students interested in taking the LLM4ChipDesign course. The survey helps instructors assess student backgrounds and tailor the course content accordingly.

## Files
- `LLM4ChipDesign_Prerequisite_Survey.docx` - The main survey form in Microsoft Word format
- `generate_survey_form.py` - Python script used to generate the survey form
- `SURVEY_README.md` - This documentation file

## Survey Form Content

The survey form covers the following areas essential for the LLM4ChipDesign course:

### Prerequisites Assessed
1. **Digital Logic Design & Boolean Algebra** - Fundamental logic concepts
2. **Computer Architecture & Organization** - Understanding of computer systems
3. **Hardware Description Languages** - Verilog/SystemVerilog experience
4. **Programming Languages** - Python, C/C++ proficiency
5. **Data Structures & Algorithms** - Programming fundamentals
6. **Machine Learning & Artificial Intelligence** - AI/ML background
7. **Natural Language Processing** - NLP concepts for LLM understanding
8. **Formal Verification & Model Checking** - Verification methodologies
9. **Electronic Design Automation (EDA) Tools** - Industry tools experience
10. **FPGA/ASIC Design Flow** - Hardware implementation knowledge
11. **High-Level Synthesis (HLS)** - C-to-hardware concepts
12. **Hardware-Software Co-design** - Interface understanding
13. **Computer Systems & Operating Systems** - Systems knowledge
14. **Software Engineering & Version Control** - Development practices
15. **Mathematics** - Linear algebra, statistics for ML

### Survey Sections
1. **Student Information** - Basic demographic and academic information
2. **Prerequisite Course Assessment** - Rating system for each subject area
3. **Specific Course Experience** - Detailed course background
4. **Tools and Software Experience** - EDA tools, programming environments, AI frameworks
5. **Project Experience** - Practical application of knowledge
6. **Learning Goals and Expectations** - Student objectives and preferences
7. **Additional Information** - Open-ended feedback section

## Usage Instructions

### For Instructors
1. Distribute the `LLM4ChipDesign_Prerequisite_Survey.docx` file to prospective students
2. Have students complete and return the survey before course enrollment
3. Use responses to:
- Identify students who may need additional preparation
- Form study groups with complementary skills
- Adjust course pacing and content depth
- Prepare targeted review materials

### For Students
1. Download and open the survey form
2. Complete all sections honestly and thoroughly
3. Provide specific examples where requested
4. Submit the completed form as instructed by your instructor

## Course Rationale

This survey is designed specifically for the LLM4ChipDesign course based on the repository content, which covers:

- **Automated Verilog Generation** using LLMs (AutoChip, VeriThoughts, Veritas)
- **Testbench Generation** for hardware verification
- **SystemVerilog Assertion Generation** from natural language
- **High-Level Synthesis** with AI assistance (C2HLSC)
- **Hardware Security** and IP protection
- **SPICE Netlist Generation** for analog circuits
- **Hierarchical Design** methodologies

## Technical Requirements

The survey form is generated using Python with the `python-docx` library and is compatible with:
- Microsoft Word 2007 and later
- LibreOffice Writer
- Google Docs
- Most modern word processors

## Regenerating the Survey

If you need to modify the survey form:

1. Install required dependencies:
```bash
pip install python-docx
```

2. Run the generation script:
```bash
python3 generate_survey_form.py
```

3. The updated survey will be saved as `LLM4ChipDesign_Prerequisite_Survey.docx`

## Contact Information

For questions about the survey or course prerequisites, please contact the course instructor or refer to the main repository documentation.
290 changes: 290 additions & 0 deletions generate_survey_form.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,290 @@
#!/usr/bin/env python3
"""
LLM4ChipDesign Course Prerequisite Survey Form Generator
This script generates a Word document survey form for students interested in the LLM4ChipDesign course.
"""

from docx import Document
from docx.shared import Inches, Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.style import WD_STYLE_TYPE
from datetime import datetime
import os

def create_survey_form():
"""Create a comprehensive survey form for LLM4ChipDesign course prerequisites."""

# Create a new document
doc = Document()

# Add document title
title = doc.add_heading('LLM4ChipDesign Course Prerequisite Survey', 0)
title.alignment = WD_ALIGN_PARAGRAPH.CENTER

# Add subtitle
subtitle = doc.add_heading('Student Background Assessment Form', level=2)
subtitle.alignment = WD_ALIGN_PARAGRAPH.CENTER

# Add introduction paragraph
intro = doc.add_paragraph()
intro.add_run('Dear Student,\n\n').bold = True
intro.add_run(
'Welcome to the LLM4ChipDesign course! This course explores the intersection of '
'Large Language Models (LLMs) and chip design, covering topics such as automated '
'Verilog generation, testbench creation, SystemVerilog assertions, and hardware-software '
'co-design using AI.\n\n'
'To ensure you have the necessary background knowledge and to tailor the course content '
'to your experience level, please complete this prerequisite assessment survey. '
'Your responses will help us understand your current knowledge and provide appropriate '
'support during the course.\n\n'
'Please answer all questions honestly. This survey is for assessment purposes only '
'and will not affect your grade.\n'
)

# Student Information Section
doc.add_heading('Student Information', level=1)

info_table = doc.add_table(rows=6, cols=2)
info_table.style = 'Table Grid'

info_fields = [
('Name:', ''),
('Student ID:', ''),
('Email:', ''),
('Academic Year/Level:', ''),
('Major/Program:', ''),
('Date:', '')
]

for i, (field, value) in enumerate(info_fields):
info_table.cell(i, 0).text = field
info_table.cell(i, 0).paragraphs[0].runs[0].bold = True
info_table.cell(i, 1).text = value

doc.add_paragraph() # Add space

# Prerequisite Course Assessment
doc.add_heading('Prerequisite Course Assessment', level=1)

doc.add_paragraph(
'Please indicate your experience level with the following subject areas '
'that are fundamental to this course. Rate your experience using the scale:\n'
'• No Experience (0): Never studied or worked with this area\n'
'• Basic (1): Introductory course or minimal exposure\n'
'• Intermediate (2): One or more courses with practical experience\n'
'• Advanced (3): Extensive coursework and/or professional experience\n'
'• Expert (4): Teaching/research level knowledge\n'
)

# Create prerequisite courses table
prereq_table = doc.add_table(rows=1, cols=6)
prereq_table.style = 'Table Grid'

# Table headers
headers = ['Course Area', 'No Exp (0)', 'Basic (1)', 'Inter (2)', 'Adv (3)', 'Expert (4)']
for i, header in enumerate(headers):
cell = prereq_table.cell(0, i)
cell.text = header
cell.paragraphs[0].runs[0].bold = True
if i == 0:
cell.width = Inches(3.0)
else:
cell.width = Inches(0.8)

# Prerequisite course areas based on repository content
course_areas = [
'Digital Logic Design & Boolean Algebra',
'Computer Architecture & Organization',
'Hardware Description Languages (Verilog/SystemVerilog)',
'Programming Languages (Python, C/C++)',
'Data Structures & Algorithms',
'Machine Learning & Artificial Intelligence',
'Natural Language Processing (NLP)',
'Formal Verification & Model Checking',
'Electronic Design Automation (EDA) Tools',
'FPGA/ASIC Design Flow',
'High-Level Synthesis (HLS)',
'Hardware-Software Co-design',
'Computer Systems & Operating Systems',
'Software Engineering & Version Control',
'Mathematics (Linear Algebra, Statistics)'
]

# Add rows for each course area
for course in course_areas:
row = prereq_table.add_row()
row.cells[0].text = course
# Add checkbox-like symbols for rating
for i in range(1, 6):
row.cells[i].text = '☐'
row.cells[i].paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER

doc.add_paragraph() # Add space

# Specific Course Experience Section
doc.add_heading('Specific Course Experience', level=1)

doc.add_paragraph(
'Please list any specific courses you have completed in the following areas '
'(include course names/codes if possible):'
)

course_exp_table = doc.add_table(rows=8, cols=2)
course_exp_table.style = 'Table Grid'

specific_areas = [
'Digital Circuit Design / Logic Design:',
'Computer Architecture:',
'Verilog/VHDL/SystemVerilog:',
'Machine Learning / AI:',
'Programming (Python/C/C++):',
'Formal Methods / Verification:',
'Embedded Systems:',
'Other Relevant Courses:'
]

for i, area in enumerate(specific_areas):
course_exp_table.cell(i, 0).text = area
course_exp_table.cell(i, 0).paragraphs[0].runs[0].bold = True
course_exp_table.cell(i, 0).width = Inches(2.5)
course_exp_table.cell(i, 1).width = Inches(4.0)

doc.add_paragraph() # Add space

# Tools and Software Experience
doc.add_heading('Tools and Software Experience', level=1)

doc.add_paragraph(
'Please indicate your familiarity with the following tools and software '
'(check all that apply):'
)

tools_table = doc.add_table(rows=1, cols=3)
tools_table.style = 'Table Grid'

# Create three columns for tools
tools_categories = [
'EDA Tools',
'Programming Tools',
'AI/ML Frameworks'
]

tools_lists = [
['☐ Vivado (Xilinx)', '☐ Quartus (Intel)', '☐ ModelSim/QuestaSim',
'☐ Synopsys Tools', '☐ Cadence Tools', '☐ Verilator', '☐ GTKWave'],
['☐ Python', '☐ C/C++', '☐ MATLAB', '☐ Git/GitHub',
'☐ Jupyter Notebooks', '☐ Linux/Unix', '☐ Command Line'],
['☐ TensorFlow', '☐ PyTorch', '☐ OpenAI API', '☐ Hugging Face',
'☐ scikit-learn', '☐ NLTK/spaCy', '☐ Google Colab']
]

for i, category in enumerate(tools_categories):
tools_table.cell(0, i).text = category
tools_table.cell(0, i).paragraphs[0].runs[0].bold = True

# Add tools to each category
for j, tool in enumerate(tools_lists[i]):
if j == 0:
tools_table.cell(0, i).text = f"{category}\n{tool}"
else:
tools_table.cell(0, i).text += f"\n{tool}"

doc.add_paragraph() # Add space

# Project Experience Section
doc.add_heading('Project Experience', level=1)

project_questions = [
'Have you worked on any hardware design projects? If yes, please describe briefly:',
'Have you used any AI/ML tools or APIs in your projects? If yes, please describe:',
'Have you written Verilog or VHDL code before? What was the complexity level?',
'Have you used any LLMs (ChatGPT, Claude, etc.) for coding assistance? Please describe your experience:'
]

for question in project_questions:
doc.add_paragraph(question, style='List Number')
# Add space for answer
answer_para = doc.add_paragraph()
answer_para.add_run('Answer: ')
answer_para.add_run('_' * 80)
doc.add_paragraph() # Extra space

# Learning Goals Section
doc.add_heading('Learning Goals and Expectations', level=1)

goal_questions = [
'What specific aspects of LLM-based chip design are you most interested in learning?',
'Do you have any specific career goals related to hardware design or AI?',
'What challenges do you expect to face in this course?',
'How do you prefer to learn new technical concepts? (hands-on, theory-first, examples, etc.)'
]

for question in goal_questions:
doc.add_paragraph(question, style='List Number')
# Add space for answer
answer_para = doc.add_paragraph()
answer_para.add_run('Answer: ')
answer_para.add_run('_' * 80)
doc.add_paragraph() # Extra space

# Additional Information Section
doc.add_heading('Additional Information', level=1)

doc.add_paragraph(
'Please provide any additional information about your background, interests, '
'or concerns that might be relevant to this course:'
)

# Add space for additional comments
for _ in range(5):
doc.add_paragraph('_' * 100)

# Footer
doc.add_paragraph()
footer = doc.add_paragraph()
footer.add_run('Thank you for completing this survey! ')
footer.add_run(
'This information will help us provide the best possible learning experience '
'tailored to your background and goals.'
).italic = True

footer2 = doc.add_paragraph()
footer2.add_run('Course: LLM4ChipDesign - Generative AI for Chip Design\n')
footer2.add_run(f'Generated on: {datetime.now().strftime("%B %d, %Y")}\n')
footer2.alignment = WD_ALIGN_PARAGRAPH.CENTER

return doc

def main():
"""Main function to generate and save the survey form."""
print("Generating LLM4ChipDesign Course Prerequisite Survey Form...")

# Create the survey document
survey_doc = create_survey_form()

# Save the document
output_path = '/home/runner/work/LLM4ChipDesign/LLM4ChipDesign/LLM4ChipDesign_Prerequisite_Survey.docx'
survey_doc.save(output_path)

print(f"Survey form successfully generated and saved as: {output_path}")
print("\nThe survey form includes the following sections:")
print("1. Student Information")
print("2. Prerequisite Course Assessment (15 key subject areas)")
print("3. Specific Course Experience")
print("4. Tools and Software Experience")
print("5. Project Experience")
print("6. Learning Goals and Expectations")
print("7. Additional Information")

# Verify file was created
if os.path.exists(output_path):
file_size = os.path.getsize(output_path)
print(f"\nFile created successfully! Size: {file_size} bytes")
else:
print("\nError: File was not created!")
return 1

return 0

if __name__ == "__main__":
exit(main())