# PTLoad, PTSaves, and PTEmbed

`PTLoad` is a `load "file" [params]` directive: the OSDI/Verilog-A file to load, plus optional [parameters](ptparameters.md). `verify()` rejects any *expression* parameter here with `Status::BadArguments` - unlike an instance's parameters, a device module's load-time parameters aren't re-evaluated later, so an expression wouldn't have anything to be re-evaluated against.

`PTSave` is a small, freely-copyable triple - a "type name" (the kind of quantity being saved) plus up to two supporting `Id`s (e.g. an instance name and an internal quantity name) - representing one `save(...)` argument; `PTSaves` is the list of them for one `save` statement. Kept deliberately separate from `PTParameters`/an expression list because `save`'s own grammar ([Parser](dflparser.md)) doesn't look like an ordinary function-call-style statement. A parsed `save` statement is folded into a [`PTCommand`](ptcommand.md) before being stored.

`PTEmbed` captures an `embed "name" <<<MARKER ... >>>MARKER` directive's target filename and raw contents verbatim, as parsed. Actually writing that content to disk is deferred to [`ParserTables::writeEmbedded()`](parsertables.md), not done at parse time.
