chipfoundry-cli 1.0.2__tar.gz → 1.0.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: chipfoundry-cli
3
- Version: 1.0.2
3
+ Version: 1.0.4
4
4
  Summary: CLI tool to automate ChipFoundry project submission to SFTP server
5
5
  Home-page: https://chipfoundry.io
6
6
  License: Apache-2.0
@@ -27,13 +27,13 @@ Description-Content-Type: text/markdown
27
27
  [![PyPI version](https://img.shields.io/pypi/v/chipfoundry-cli?color=blue)](https://badge.fury.io/py/chipfoundry-cli)
28
28
  [![PyPI downloads](https://img.shields.io/pypi/dm/chipfoundry-cli.svg)](https://pypi.org/project/chipfoundry-cli/)
29
29
 
30
- A command-line tool to automate the submission of ChipFoundry projects to the SFTP server.
30
+ A command-line tool to automate the submission of ChipFoundry projects to the SFTP server and manage project results.
31
31
 
32
32
  ---
33
33
 
34
34
  ## Overview
35
35
 
36
- `cf-cli` is a user-friendly command-line tool for securely submitting your ChipFoundry project files to the official SFTP server. It automatically collects the required files, generates or updates your project configuration, and uploads everything to the correct location on the server.
36
+ `cf-cli` is a user-friendly command-line tool for securely submitting your ChipFoundry project files to the official SFTP server and downloading project results. It automatically collects the required files, generates or updates your project configuration, uploads everything to the correct location on the server, and provides tools to view project results and reports.
37
37
 
38
38
  ---
39
39
 
@@ -72,6 +72,16 @@ cf --help
72
72
  cf push
73
73
  ```
74
74
 
75
+ 6. **Download results** (when available):
76
+ ```bash
77
+ cf pull
78
+ ```
79
+
80
+ 7. **View tapeout report**:
81
+ ```bash
82
+ cf view-tapeout-report
83
+ ```
84
+
75
85
  ---
76
86
 
77
87
  ## Project Structure Requirements
@@ -82,6 +92,7 @@ Your project directory **must** contain:
82
92
  - `user_project_wrapper.gds` (for digital projects)
83
93
  - `user_analog_project_wrapper.gds` (for analog projects)
84
94
  - `openframe_project_wrapper.gds` (for openframe projects)
95
+ - **Note**: Both compressed (`.gz`) and uncompressed (`.gds`) files are supported
85
96
  - `verilog/rtl/user_defines.v` (required for digital/analog)
86
97
  - `.cf/project.json` (optional; will be created/updated automatically)
87
98
 
@@ -180,15 +191,44 @@ cf push [OPTIONS]
180
191
  4. Uploads files to SFTP with progress bars
181
192
  5. Shows clean, informative output
182
193
 
183
- ### Pull Results
194
+ **GDS File Handling:**
195
+ - **Both compressed (`.gz`) and uncompressed (`.gds`) files are supported**
196
+ - **No automatic compression** - files are uploaded as-is
197
+ - **Only one version allowed** - you cannot have both compressed and uncompressed versions of the same file
198
+ - **Prefers uncompressed files** when available
199
+ - **Falls back to compressed files** if no uncompressed version is available
200
+
201
+ ### Pull Results (Download)
184
202
 
185
203
  ```bash
186
204
  cf pull [--project-name NAME]
187
205
  ```
188
206
 
189
- - Downloads project results from SFTP
207
+ - Downloads project results from SFTP server
190
208
  - Saves to `sftp-output/<project_name>/`
191
- - Shows download progress for each file
209
+ - **Automatically updates** your local `.cf/project.json` with the pulled version
210
+ - Creates the expected directory structure:
211
+ ```
212
+ sftp-output/
213
+ └── <project_name>/
214
+ ├── config/
215
+ │ └── project.json
216
+ └── consolidated_reports/
217
+ └── consolidated_report.html
218
+ ```
219
+
220
+ ### View Tapeout Report
221
+
222
+ ```bash
223
+ cf view-tapeout-report [--project-name NAME] [--report-path PATH]
224
+ ```
225
+
226
+ - Opens the consolidated tapeout report in your default browser
227
+ - **Auto-detects project name** from `.cf/project.json` if available
228
+ - Looks for report at `sftp-output/<project_name>/consolidated_reports/consolidated_report.html`
229
+ - **Options:**
230
+ - `--project-name`: Specify project name manually
231
+ - `--report-path`: Provide direct path to HTML report file
192
232
 
193
233
  ### Check Status
194
234
 
@@ -217,6 +257,7 @@ cf status
217
257
  1. **File Collection:**
218
258
  - Checks for required GDS and Verilog files
219
259
  - Auto-detects project type (digital, analog, openframe) based on GDS file name
260
+ - **Supports both compressed and uncompressed GDS files**
220
261
 
221
262
  2. **Configuration:**
222
263
  - Creates or updates `.cf/project.json`
@@ -233,6 +274,26 @@ cf status
233
274
 
234
275
  ---
235
276
 
277
+ ## What Happens When You Run `cf pull`?
278
+
279
+ 1. **Connection:**
280
+ - Connects to SFTP server securely
281
+ - Shows clean connection status
282
+
283
+ 2. **Download:**
284
+ - Downloads all project results recursively
285
+ - Shows professional download progress
286
+ - Saves to `sftp-output/<project_name>/`
287
+
288
+ 3. **Config Update:**
289
+ - **Automatically updates** your local `.cf/project.json` with the pulled version
290
+ - No manual steps required
291
+
292
+ 4. **Success:**
293
+ - Shows confirmation of downloaded files and updated config
294
+
295
+ ---
296
+
236
297
  ## Examples
237
298
 
238
299
  ### Basic Workflow
@@ -258,6 +319,17 @@ cf push
258
319
  # Uploading project.json ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100%
259
320
  # Uploading user_project_wrapper.gds ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100%
260
321
  # ✓ Uploaded to incoming/projects/my_awesome_project
322
+
323
+ # Later, download results
324
+ cf pull
325
+ # ✓ Connected to sftp.chipfoundry.io
326
+ # Downloading project results from outgoing/results/my_awesome_project...
327
+ # ✓ All files downloaded to sftp-output/my_awesome_project
328
+ # ✓ Project config automatically updated
329
+
330
+ # View the tapeout report
331
+ cf view-tapeout-report
332
+ # ✓ Opened tapeout report in browser: sftp-output/my_awesome_project/consolidated_reports/consolidated_report.html
261
333
  ```
262
334
 
263
335
  ### Advanced Usage
@@ -272,10 +344,33 @@ cf push --force-overwrite
272
344
  # Use different project root
273
345
  cf push --project-root /path/to/project
274
346
 
347
+ # Pull results for specific project
348
+ cf pull --project-name other_project
349
+
350
+ # View report for specific project
351
+ cf view-tapeout-report --project-name other_project
352
+
353
+ # View custom report file
354
+ cf view-tapeout-report --report-path /path/to/custom_report.html
355
+
275
356
  # Check project status
276
357
  cf status
277
358
  ```
278
359
 
360
+ ### GDS File Examples
361
+
362
+ ```bash
363
+ # Uncompressed GDS file (preferred)
364
+ gds/user_project_wrapper.gds
365
+
366
+ # Compressed GDS file (also supported)
367
+ gds/user_project_wrapper.gds.gz
368
+
369
+ # ❌ INVALID: Both files exist - this will cause an error
370
+ gds/user_project_wrapper.gds # ← Choose ONE version only
371
+ gds/user_project_wrapper.gds.gz # ← Remove this one
372
+ ```
373
+
279
374
  ---
280
375
 
281
376
  ## Troubleshooting
@@ -294,6 +389,13 @@ cf status
294
389
 
295
390
  - **Project type detection:**
296
391
  - Only one of the recognized GDS files should be present in your `gds/` directory
392
+ - Both compressed and uncompressed versions of the same type are supported
393
+ - **Important**: You cannot have both compressed (`.gz`) and uncompressed (`.gds`) versions of the same file - the tool will error out and ask you to remove one
394
+
395
+ - **Report viewing errors:**
396
+ - Ensure you've run `cf pull` first to download the report
397
+ - Check that the report exists at the expected location
398
+ - Use `--report-path` to specify a custom report location
297
399
 
298
400
  - **ModuleNotFoundError:**
299
401
  - Upgrade the CLI: `pip install --upgrade chipfoundry-cli`
@@ -3,13 +3,13 @@
3
3
  [![PyPI version](https://img.shields.io/pypi/v/chipfoundry-cli?color=blue)](https://badge.fury.io/py/chipfoundry-cli)
4
4
  [![PyPI downloads](https://img.shields.io/pypi/dm/chipfoundry-cli.svg)](https://pypi.org/project/chipfoundry-cli/)
5
5
 
6
- A command-line tool to automate the submission of ChipFoundry projects to the SFTP server.
6
+ A command-line tool to automate the submission of ChipFoundry projects to the SFTP server and manage project results.
7
7
 
8
8
  ---
9
9
 
10
10
  ## Overview
11
11
 
12
- `cf-cli` is a user-friendly command-line tool for securely submitting your ChipFoundry project files to the official SFTP server. It automatically collects the required files, generates or updates your project configuration, and uploads everything to the correct location on the server.
12
+ `cf-cli` is a user-friendly command-line tool for securely submitting your ChipFoundry project files to the official SFTP server and downloading project results. It automatically collects the required files, generates or updates your project configuration, uploads everything to the correct location on the server, and provides tools to view project results and reports.
13
13
 
14
14
  ---
15
15
 
@@ -48,6 +48,16 @@ cf --help
48
48
  cf push
49
49
  ```
50
50
 
51
+ 6. **Download results** (when available):
52
+ ```bash
53
+ cf pull
54
+ ```
55
+
56
+ 7. **View tapeout report**:
57
+ ```bash
58
+ cf view-tapeout-report
59
+ ```
60
+
51
61
  ---
52
62
 
53
63
  ## Project Structure Requirements
@@ -58,6 +68,7 @@ Your project directory **must** contain:
58
68
  - `user_project_wrapper.gds` (for digital projects)
59
69
  - `user_analog_project_wrapper.gds` (for analog projects)
60
70
  - `openframe_project_wrapper.gds` (for openframe projects)
71
+ - **Note**: Both compressed (`.gz`) and uncompressed (`.gds`) files are supported
61
72
  - `verilog/rtl/user_defines.v` (required for digital/analog)
62
73
  - `.cf/project.json` (optional; will be created/updated automatically)
63
74
 
@@ -156,15 +167,44 @@ cf push [OPTIONS]
156
167
  4. Uploads files to SFTP with progress bars
157
168
  5. Shows clean, informative output
158
169
 
159
- ### Pull Results
170
+ **GDS File Handling:**
171
+ - **Both compressed (`.gz`) and uncompressed (`.gds`) files are supported**
172
+ - **No automatic compression** - files are uploaded as-is
173
+ - **Only one version allowed** - you cannot have both compressed and uncompressed versions of the same file
174
+ - **Prefers uncompressed files** when available
175
+ - **Falls back to compressed files** if no uncompressed version is available
176
+
177
+ ### Pull Results (Download)
160
178
 
161
179
  ```bash
162
180
  cf pull [--project-name NAME]
163
181
  ```
164
182
 
165
- - Downloads project results from SFTP
183
+ - Downloads project results from SFTP server
166
184
  - Saves to `sftp-output/<project_name>/`
167
- - Shows download progress for each file
185
+ - **Automatically updates** your local `.cf/project.json` with the pulled version
186
+ - Creates the expected directory structure:
187
+ ```
188
+ sftp-output/
189
+ └── <project_name>/
190
+ ├── config/
191
+ │ └── project.json
192
+ └── consolidated_reports/
193
+ └── consolidated_report.html
194
+ ```
195
+
196
+ ### View Tapeout Report
197
+
198
+ ```bash
199
+ cf view-tapeout-report [--project-name NAME] [--report-path PATH]
200
+ ```
201
+
202
+ - Opens the consolidated tapeout report in your default browser
203
+ - **Auto-detects project name** from `.cf/project.json` if available
204
+ - Looks for report at `sftp-output/<project_name>/consolidated_reports/consolidated_report.html`
205
+ - **Options:**
206
+ - `--project-name`: Specify project name manually
207
+ - `--report-path`: Provide direct path to HTML report file
168
208
 
169
209
  ### Check Status
170
210
 
@@ -193,6 +233,7 @@ cf status
193
233
  1. **File Collection:**
194
234
  - Checks for required GDS and Verilog files
195
235
  - Auto-detects project type (digital, analog, openframe) based on GDS file name
236
+ - **Supports both compressed and uncompressed GDS files**
196
237
 
197
238
  2. **Configuration:**
198
239
  - Creates or updates `.cf/project.json`
@@ -209,6 +250,26 @@ cf status
209
250
 
210
251
  ---
211
252
 
253
+ ## What Happens When You Run `cf pull`?
254
+
255
+ 1. **Connection:**
256
+ - Connects to SFTP server securely
257
+ - Shows clean connection status
258
+
259
+ 2. **Download:**
260
+ - Downloads all project results recursively
261
+ - Shows professional download progress
262
+ - Saves to `sftp-output/<project_name>/`
263
+
264
+ 3. **Config Update:**
265
+ - **Automatically updates** your local `.cf/project.json` with the pulled version
266
+ - No manual steps required
267
+
268
+ 4. **Success:**
269
+ - Shows confirmation of downloaded files and updated config
270
+
271
+ ---
272
+
212
273
  ## Examples
213
274
 
214
275
  ### Basic Workflow
@@ -234,6 +295,17 @@ cf push
234
295
  # Uploading project.json ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100%
235
296
  # Uploading user_project_wrapper.gds ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100%
236
297
  # ✓ Uploaded to incoming/projects/my_awesome_project
298
+
299
+ # Later, download results
300
+ cf pull
301
+ # ✓ Connected to sftp.chipfoundry.io
302
+ # Downloading project results from outgoing/results/my_awesome_project...
303
+ # ✓ All files downloaded to sftp-output/my_awesome_project
304
+ # ✓ Project config automatically updated
305
+
306
+ # View the tapeout report
307
+ cf view-tapeout-report
308
+ # ✓ Opened tapeout report in browser: sftp-output/my_awesome_project/consolidated_reports/consolidated_report.html
237
309
  ```
238
310
 
239
311
  ### Advanced Usage
@@ -248,10 +320,33 @@ cf push --force-overwrite
248
320
  # Use different project root
249
321
  cf push --project-root /path/to/project
250
322
 
323
+ # Pull results for specific project
324
+ cf pull --project-name other_project
325
+
326
+ # View report for specific project
327
+ cf view-tapeout-report --project-name other_project
328
+
329
+ # View custom report file
330
+ cf view-tapeout-report --report-path /path/to/custom_report.html
331
+
251
332
  # Check project status
252
333
  cf status
253
334
  ```
254
335
 
336
+ ### GDS File Examples
337
+
338
+ ```bash
339
+ # Uncompressed GDS file (preferred)
340
+ gds/user_project_wrapper.gds
341
+
342
+ # Compressed GDS file (also supported)
343
+ gds/user_project_wrapper.gds.gz
344
+
345
+ # ❌ INVALID: Both files exist - this will cause an error
346
+ gds/user_project_wrapper.gds # ← Choose ONE version only
347
+ gds/user_project_wrapper.gds.gz # ← Remove this one
348
+ ```
349
+
255
350
  ---
256
351
 
257
352
  ## Troubleshooting
@@ -270,6 +365,13 @@ cf status
270
365
 
271
366
  - **Project type detection:**
272
367
  - Only one of the recognized GDS files should be present in your `gds/` directory
368
+ - Both compressed and uncompressed versions of the same type are supported
369
+ - **Important**: You cannot have both compressed (`.gz`) and uncompressed (`.gds`) versions of the same file - the tool will error out and ask you to remove one
370
+
371
+ - **Report viewing errors:**
372
+ - Ensure you've run `cf pull` first to download the report
373
+ - Check that the report exists at the expected location
374
+ - Use `--report-path` to specify a custom report location
273
375
 
274
376
  - **ModuleNotFoundError:**
275
377
  - Upgrade the CLI: `pip install --upgrade chipfoundry-cli`