@@ -30,21 +30,12 @@ def collect_project_files(project_root: str) -> Dict[str, Optional[str]]:
3030 Collect required project files from the given project_root.
3131 Returns a dict mapping logical names to absolute file paths (or None if not found and optional).
3232 Raises FileNotFoundError if any required file is missing.
33+ Openframe projects do not require user_defines.v.
3334 """
3435 project_root = Path (project_root )
3536 collected = {}
36-
37- # Collect standard required files
38- for rel_path , required in REQUIRED_FILES .items ():
39- abs_path = project_root / rel_path
40- if abs_path .exists ():
41- collected [rel_path ] = str (abs_path )
42- elif required :
43- raise FileNotFoundError (f"Required file not found: { abs_path } " )
44- else :
45- collected [rel_path ] = None
46-
47- # Collect GDS file based on what exists
37+
38+ # Collect GDS file first to determine project type (affects whether user_defines.v is required)
4839 gds_dir = project_root / 'gds'
4940 if gds_dir .exists ():
5041 found_gds_files = []
@@ -107,7 +98,22 @@ def collect_project_files(project_root: str) -> Dict[str, Optional[str]]:
10798
10899 gds_name , gds_path = gds_file_to_use
109100 collected [f"gds/{ gds_name } " ] = gds_path
110-
101+
102+ # Collect standard required files (user_defines.v not required for openframe)
103+ cf_json_path = project_root / ".cf" / "project.json"
104+ collected [".cf/project.json" ] = str (cf_json_path ) if cf_json_path .exists () else None
105+
106+ user_defines_path = project_root / "verilog" / "rtl" / "user_defines.v"
107+ if project_type == "openframe" :
108+ collected ["verilog/rtl/user_defines.v" ] = None # openframe does not use user_defines.v
109+ else :
110+ if user_defines_path .exists ():
111+ collected ["verilog/rtl/user_defines.v" ] = str (user_defines_path )
112+ else :
113+ raise FileNotFoundError (f"Required file not found: { user_defines_path } " )
114+ else :
115+ raise FileNotFoundError (f"No GDS directory found at { gds_dir } . Expected one of: { list (GDS_TYPE_MAP .keys ())} " )
116+
111117 return collected
112118
113119def ensure_cf_directory (target_dir : str ):
0 commit comments