User strings were used as-is in certain parts since they were taken directly from `info.yaml`, but this could sometimes cause the datasheet build to fail since they've found a way (intentionally or not) to escape the content box that they were in.
This commit attempts to address this issue by:
- Sanitising user input using regex
- Using Typst's `str()` function instead of content boxes where possible
- Clarifying syntax in certain sections
Hopefully these changes will remove (or at least reduce) the chances of someone breaking the build.
This is determined by looking at the `pdk` key in the config. If `pdk` doesn't exist, `id` will be used (assuming that the structure of the shuttle ID follows ttX where X=[sky, ihp, gf]). If any part fails, it will fall back to `openframe_sky130`.
The pinout can also be manually controlled by setting the `datasheet_config.pinout` key in the shuttle config, and that will be used verbatim. Note that `datasheet_config.pinout` is not checked, so it *must* be exact, otherwise it will cause the datasheet build to fail.
Add new pinouts for SKY130, IHP SG13G2 and GF180mcuD.
Valid keys for `show_pinouts` can now be easily seen in the `pinout_map` dictionary:
- `caravel`
- `openframe`
- `openframe_sky130`
- `customframe_ihp_sg13g2`
- `customframe_gf180mcud`
The pinout chapter in the datasheet has also been reworked: the content now exists directly in the typst template instead of being an external file. This is to make use of the `pinout_map` and to allow for easier modification of the content.
This change also allows the page to make use of the `callout` function.
* feat(precheck): check if power pins have `USE` in definition
* fix: expect zero or more spaces, instead of one or more
* feat(precheck): check for missing `USE POWER`
* feat(precheck): check for missing `USE GROUND`
* feat(precheck): add simple README with link to LEF/DEF reference manual
Switching from `gfm` to `markdown` should enable more formatting options. The extensions have been configured to be similar to `gfm` but provide some additional things, like `line_blocks` and `lists_without_preceding_blankline`s.
This was caused by creating a page before first checking whether there was any content for that page beforehand, so it would result in a rogue white page with no content.